Алексей Валиков - Технология 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 - читать книгу онлайн бесплатно, автор Алексей Валиков
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Случай нескольких входящих документов

Базовая архитектура преобразования подразумевает один входящий документ. Несмотря на это, в преобразованиях можно использовать и обрабатывать информацию, хранящуюся в других, внешних документах. Доступ к этим документам можно получить при помощи функции document.

Функция document

Запись функции:

node-set document( object , node-set ?)

Функция documentпозволяет обращаться к внешним документам по их URI, например

скопирует в выходящий документ содержимое главной страницы Консорциума W3.

Функция documentвозвращает множество узлов. В простейшем случае это множество будет состоять из корневого узла внешнего документа. Функцию documentможно использовать в более сложных XPath-выражениях, например в выражениях фильтрации. Так функция

скопирует все элементы а, находящиеся в теле ( /html/body) внешнего документа.

Базовый сценарий использования функции documentочень прост: ей передается строка, содержащая URI внешнего ресурса, а результатом является множество узлов, состоящее из корня внешнего документа. Однако на этом возможности documentне заканчиваются. Мы рассмотрим несколько вариантов вызова функции documentс параметрами различного типа.

Вызов document(string)

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

Интересной особенностью является возможность передать пустую строку:

document('')

В этом случае documentвозвратит корневой узел самого преобразования. При помощи document('')можно получать доступ к информации, хранящейся в самом преобразовании (оно ведь тоже является ХМL-документом). К сожалению, перед обращением к документу не существует способа проверить его существование. Процессор может либо выдать ошибку, либо возвратить пустое множество.

Пример
Листинг 8.61. Преобразование

version="1.0"

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

xmlns:user="urn:user-namespace">

1

2

name="data" select="document('')/xsl:stylesheet/user:data"/>

Листинг 8.62. Выходной документ

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

xmlns:user="urn:user-namespace">1

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

xmlns:user="urn:user-namespace">2

Вызов document(node-set)

Передавая функции documentмножество узлов, можно получить доступ к нескольким документам, URI которых являются строковыми значениями узлов множества. Это, в частности, позволяет обращаться к документам, URI которых указаны в узлах обрабатываемого документа. Например, в контексте элемента

<���а href="http://www.w3.org">...</а>

вполне корректным вызовом функции documentбудет document (@href).

Выражение @href— здесь возвращает множество, состоящее из единственного узла атрибута. Его строковое значение ( "http://www.w3.org") будет использовано как URI внешнего документа. Результирующее множество узлов будет содержать единственный корневой узел документа, расположенного по адресу http://www.w3.org.

Приведем еще один пример. XPath-выражение //a/@hrefвозвращает множество всех атрибутов hrefэлементов атекущего документа. Тогда множество document( //a/@href) будет содержать корневые узлы всех документов, на которые ссылается посредством элементов а текущий документ.

Вызов document(string, node-set)

URI, которые передаются функции document, могут быть как абсолютными, так и относительными, например document('doc.xml')возвратит корень документа doc.xml, находящегося в том же каталоге, что и само преобразование.

Функция documentпозволяет менять "точку отсчета" относительных URI. Если в качестве второго аргумента функции document передано множество узлов, то относительные идентификаторы ресурсов будут отсчитываться от базового адреса первого (в порядке просмотра документа) узла этого множества.

Базовым URI узла дерева является:

□ если элемент или инструкция по обработке принадлежит внешней сущности, базовым URI соответствующего узла будет URI внешней сущности;

□ иначе базовым URI является URI документа;

□ базовым URI текстового узла, узла атрибута, комментария или пространства имен является базовый URI родительского элемента.

Поясним вышесказанное на примерах.

Конструкция

копирует в выходящий документ doc.xml, находящийся в одном каталоге вместе с преобразованием.

Несмотря на то, что в следующем определении xsl:for-eachменяет контекст, document('doc.xml')все равно возвращает корень документа doc.xml, находящегося в одном с преобразованием каталоге:

В следующей конструкции document('doc.xml', /)копирует документ a/doc.xml,поскольку в качестве базового URI используется URI корня документа a/data.xml:

Того же самого эффекта можно достичь следующим образом:

В следующей конструкции за базовый URI опять принимается URI самого преобразования (вернее, его корневого узла):

Протестируем теперь все это вместе в одном преобразовании.

Листинг 8.63. Преобразование

version="1.0"

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

Листинг 8.64. Документ doc.xml

doc.xml

Листинг 8.65. Документ a/doc.xml

a/doc.xml

Листинг 8.66. Выходящий документ

doc.xml

doc.xml

a/doc.xml

a/doc.xml

doc.xml

Вызов document(node-set, node-set)

Если функции documentпередаются два множества узлов, то вычисление результата можно описать примерно следующим образом:

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

□ для каждого из полученных значений выполняется вызов типа document(string, node-set);

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

Иными словами, document(node-set, node-set)работает через document(string, node-set)точно так же, как document(node-set)работает через document(string). Разница лишь в том, что в первом случае базовый URI будет изменен.

Другие дополнительные функции XSLT

Функция current

Выражение для этой функции имеет вид:

node-set current()

Функция currentвозвращает множество, состоящее из текущего узла преобразования.

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

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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