Алексей Валиков - Технология XSLT

Тут можно читать онлайн Алексей Валиков - Технология XSLT - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство БХВ-Петербург, год 2002. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Технология XSLT
  • Автор:
  • Жанр:
  • Издательство:
    БХВ-Петербург
  • Год:
    2002
  • Город:
    Санкт-Петербург
  • ISBN:
    нет данных
  • Рейтинг:
    4.75/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Алексей Валиков - Технология XSLT краткое содержание

Технология XSLT - описание и краткое содержание, автор Алексей Валиков, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.

Для начинающих и профессиональных программистов

Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)

Технология XSLT - читать книгу онлайн бесплатно, автор Алексей Валиков
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Пример

Предположим, мы хотим поменять имя каждого элемента на значение его первого атрибута и наоборот.

Листинг 7.1. Входящий документ
Листинг 7.2. Шаблон, заменяющий имя элемента значением атрибута
Листинг 7.3. Выходящий документ

В этом примере код ...создает элемент, именем которого становится значение выражения @*, указанного в виде шаблона значения атрибута name. Это выражение выбирает множество, состоящее из узлов атрибутов текущего элемента, а если привести его к строке, в результате получится текстовое значение первого атрибута элемента.

Подобным образом выбирается имя атрибута создаваемого элемента и его значение.

Вычисленное значение атрибута nameможет задавать и расширенное имя элемента, то есть иметь форму префикс : имя . В этом случае элемент будет создаваться в том пространстве имен, которое соответствует указанному префиксу, например

создаст элемент вида

Заметим, что элемент вида

даст тот же результат.

Другим способом указания пространства имен при использовании элемента xsl:elementявляется использование атрибута namespace. Например, для предыдущего случая мы могли бы записать

name="template"

namespace="http://www.w3.org/1999/XSL/Transform"/>

и получить в итоге

что эквивалентно результату предыдущего примера, хоть и различается внешне.

Атрибут namespaceтоже может быть сконструирован на этапе выполнения, например:

name="template"

namespace="{concat('http://www.w3.org/', 2001 - 2, '/XSL/Transform')}"/>

что также даст элемент template, принадлежащий пространству имен XSLT.

Для того чтобы разобраться в приоритетах атрибутов nameи namespaceна определение пространства имен, приведем несколько правил, которые пояснят этот процесс.

□ Если в элементе xsl:elementопределен атрибут namespace, то создаваемый элемент будет принадлежать пространству имен с URI, который будет значением этого атрибута. Если значением атрибута namespaceбудет пустая строка, создаваемый элемент будет принадлежать нулевому пространству имен. Как правило, процессоры используют префикс, указанный в имени атрибутом name, но, вместе с тем, они не обязаны так делать. Поэтому в общем случае следует ожидать, что префикс может быть любым.

□ Если в элементе xsl:elementне определен атрибут namespace, но имя, заданное в атрибуте name имеет префикс, то создаваемый элемент будет принадлежать соответствующему этому префиксу пространству имен. Однако и в этом случае не гарантируется, что префикс создаваемого элемента будет таким, каким он был задан в атрибуте name.

□ В случае, если в элементе xsl:elementне определен атрибут namespaceи имя, заданное в атрибуте name не имеет префикса, создаваемый элемент будет принадлежать пространству имен, которое действует для создающего элемента xsl:elementпо умолчанию.

Повторим еще раз, что во всех трех случаях сказать что-либо достоверно о префиксе создаваемого элемента нельзя — префикс с точки зрения пространств имен не является значащей частью имени элемента. Вместе с тем, на практике процессоры, как правило, используют префикс, указанный в атрибуте name, или не используют префикс вообще, если префикс в nameуказан не был.

Приведем несколько примеров.

Для начала покажем, что, согласно первому правилу, атрибут namespaceимеет наивысший приоритет при определении пространства имен выходящего элемента. Рассмотрим следующее преобразование.

Листинг 7.4.

version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

name="xsl:html"

namespace="http://www.w3.org/1999/xhtml"/>

В выделенном элементе xsl:elementпространство имен создаваемого элемента указано вроде бы два раза: в виде значения атрибута namespaceи в виде префикса имени (" xsl"). Результат будет выглядеть следующим образом:

Процессор использовал пространство имен, указанное в атрибуте namespace, локальную часть имени, заданного атрибутом name (" html"), а также префикс (только префикс, но не связанное с ним пространство имен) этого имени (" xsl").

В свою очередь конструкция вида

создаст элемент

что на самом деле эквивалентно просто .

Таким образом, атрибут namespaceнаиболее приоритетен для определения пространства имен создаваемого элемента. Обратимся теперь к случаю, когда этот атрибут опущен в xsl:element. Объявление вида

создаст элемент

Как видим, отсутствие namespaceи namespace=""— не одно и то же.

Рассмотрим теперь случай, когда нет ни атрибута namespace, ни префикса в name:

version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Результатом этого преобразования будет документ, состоящий из одного пустого элемента html:

Мы специально привели все преобразование целиком, чтобы показать, что выходящий элемент будет принадлежать нулевому пространству имен тогда и только тогда, когда для него не было объявлено пространства имен по умолчанию. Попробуем посмотреть, что получится, если пространство имен по умолчанию будет объявлено:

version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Результатом в этот раз будет элемент с локальной частью имени " html", принадлежащий пространству имен с URI " http://www.w3.org/1999/xhtml":

Создание узлов атрибутов

Элемент xsl:attribute

Этот элемент задается конструкцией вида:

name="{ имя }"

namespace="{ пространство имен }">

Использование элементов xsl:attributeи xsl:elementво многом аналогично. Обязательный атрибут name указывает имя, а атрибут namespace— URI пространства имен создаваемого атрибута, причем процесс вычисления расширенного имени атрибута практически идентичен этому в процедуре вычисления имени элемента, который был приведен при разборе xsl:element.

Показаний к применению xsl:attributeнесколько больше, чем для xsl:element. В частности, xsl:attributeследует использовать, если:

□ требуется создать атрибут с не известным заранее именем или пространством имен;

□ требуется создать атрибут в пространстве имен, которое является для процессора значащим (например, в пространстве имен XSLT);

□ требуется создать атрибут, вычисление значения которого не может быть реализовано одним или несколькими XPath-выражениями (например, условный вывод атрибута).

Приведем некоторые примеры.

Покажем, как преобразовать структуру вида

в элемент

Для достижения цели воспользуемся следующим преобразованием.

Листинг 7.5. Создание атрибутов при помощи xsl:attribute

version="1.0"

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Алексей Валиков читать все книги автора по порядку

Алексей Валиков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Технология XSLT отзывы


Отзывы читателей о книге Технология XSLT, автор: Алексей Валиков. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x