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

Интервал:

Закладка:

Сделать

В этом случае функция key(key-name, key-value)будет возвращать узлы, значение ключа с расширенным именем key-nameкоторых равно key-value. Совпадение расширенных имен определяется как обычно — по совпадению локальных частей и URI пространств имен.

Использование нескольких определений одного ключа

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

Пример

Предположим, что в нашем документе имеется несколько элементов item, в которых не указано значение атрибута source, но по умолчанию мы будем причислять их к источнику а. Соответствующие ключи будут определяться следующим образом:

To есть для тех элементов item, у которых есть атрибут source, значением ключа будет значение этого атрибута, для тех же элементов, у которых атрибута sourceнет, его значением будет "а".

Для входящего документа вида

...

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

(< item name="А" .../>, 'src', 'а')

(< item name="В" .../>, 'src', 'b')

(< item name="С" .../>, 'src', 'а')

(< item name="D" .../>, 'src', 'c')

...

(< item name="H" .../>, 'src', 'a')

(< item name="I" .../>, 'src', 'a')

(< item name="J" .../>, 'src', 'a')

(< item name="K" .../>, 'src', 'a')

Функция key('src', 'a')возвратит объекты с именами A, C, H, I, Jи K.

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

Это определение позволит по значению "#default"обращаться к объектам, принадлежащим источнику по умолчанию.

Использование множеств узлов в функции key

Функция keyпринимает на вход два аргумента: первым аргументом является строка, задающая имя ключа, в то время как вторым аргументом может быть объект любого типа. В том случае, если аргумент key-value в функции key( key-name , key-value )является множеством узлов, функция keyвозвратит все узлы, имеющие ключ key-name со значением, равным хотя бы одному из строковых значений узла множества key-value .

Пример

Предположим, что источники объектов будут сгруппированы следующим образом:

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

key('src', sources/source/@name)

Множество узлов, выбираемое путем sources/source/@name, будет содержать атрибуты nameэлементов source. Их строковые значения будут равны аи с, значит, наше выражение возвратит множество элементов item, значение атрибута sourceкоторых равно либо алибо с.

Использование ключей в нескольких документах

Ключи, определенные в преобразовании, могут использоваться для выбора узлов в различных обрабатываемых документах. Функция keyвозвращает узлы, которые принадлежат текущему документу, то есть документу, содержащему текущий узел. Значит, для того, чтобы выбирать узлы из внешнего документа, необходимо сделать текущим узлом один из узлов этого внешнего документа. Контекстный документ может быть легко изменен элементом xsl:for-each, например, для того, чтобы текущим документом стал документ a.xml, достаточно написать

Пример

Предположим, что нам нужно выбрать объекты, принадлежащие источнику a, причем принадлежность объектов определена в двух внешних документах, a.xmlи b.xml.

Листинг 8.22. Входящий документ
Листинг 8.23. Документ a.xml
Листинг 8.24. Документ b.xml
Листинг 8.25. Преобразование

version="1.0"

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

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

Составные ключи

В теории реляционных баз данных существует такое понятие, как составной ключ. Согласно определению К. Дж. Дейта [Дейт 1999], составной ключ — это " потенциальный ключ; состоящий из более чем одного атрибута ".

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

Главная проблема состоит в том, что значение ключа в XSLT всегда является строкой, одним из самых примитивных типов. И выбирать множества узлов можно только по одному строковому значению за один раз. Ничего похожего на key( key-name , key-value-1 , key-value-2 , ...)для выбора узлов, первое свойство которых равно key-value-1 , второе — key-value-2 и так далее, XSLT не предоставляет.

Выход достаточно очевиден: если значение ключа не может быть сложной структурой, оно должно выражать сложную структуру. Иными словами, раз значением составного ключа может быть только строка, то эта строка должна состоять из нескольких частей.

Пример

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

□ найти объект с определенным именем и источником;

□ найти объекты с определенным именем;

□ найти объекты с определенным источником.

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

Для элементов itemмы будем генерировать ключи, значения которых будут состоять из двух частей — источника и имени, разделенных символом " -". Для того чтобы решить одним ключом все три поставленные задачи, мы будем использовать для его определения три элемента xsl:key.

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

version="1.0"

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

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

У приведенного здесь способа формирования ключа есть определенные ограничения: необходимо иметь априорную информацию о строковых значениях каждого из свойств, составляющих наш композитный ключ для того, чтобы корректно формировать его строковые представления. Например, если бы в приведенном выше документе имена объектов и источников могли бы содержать символ " -", было бы непонятно, к какому объекту относится составной ключ " a-b-c": к объекту с источником a-bи именем сили к объекту с источником аи именем b-c. К счастью, в большинстве случаев такая информация имеется, и генерировать составные ключи не очень сложно.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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