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

Интервал:

Закладка:

Сделать

Главной деталью LocationPathявляется относительный путь выборки, продукция которого также может быть переписана в раскрытом и упрощенном виде:

RelativeLocationPath ::= Step

| RelativeLocationPath '/' Step

| RelativeLocationPath '//' Step

В соответствии с этой продукцией, относительный путь выборки состоит из одного или нескольких шагов выборки, разделенных '/'или '//'. Как уже отмечалось ранее, конструкция '//'есть сокращенный вариант от '/descendant-or-self::node()/'. Таким образом, главным элементом пути выборки является шаг выборки.

Примеры:

/— выберет корневой узел документа;

— выберет элемент а, находящийся в корне документа;

//а— выберет множество всех элементов атекущего документа.

Шаги выборки

Любой путь — это последовательность шагов, путь выборки — это последовательности шагов выборки, которые нужно совершить, чтобы получить искомый результат. Каждый шаг выборки состоит из трех частей.

□ Первая часть называется осью навигации — она показывает направление, в котором будет производиться выбор на данном шаге. Например, можно выбирать дочерние узлы, узлы-атрибуты или родительские узлы контекстного узла ( см. также раздел "Оси навигации" данной главы ).

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

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

Проще говоря, ось навигации отвечает на вопрос "куда двигаемся?", тест узла — на вопрос "какие узлы ищем?", а предикаты — на вопрос "какими свойствами должны обладать выбираемые узлы?".

Пример

Шаг выборки attribute::href[. = 'http://www.xsltdev.ru']состоит из оси навигации attribute, которая выбирает атрибуты данного узла, теста узла href, который выбирает узлы с именем hrefи нулевым пространством имен, и предиката [. = 'http://www.xsitdev.ru'], который оставляет в выбираемом множестве те узлы, текстовое значение которых равно "http://www.xsltdev.ru". Таким образом, на этом шаге будут выбраны все атрибуты hrefтекущего узла, имеющие значение "http://www.xsltdev.ru".

Шаг выборки соответствует EBNF-продукции Step, а первая его часть, ось навигации — продукции AxisSpecifier:

[XP4] Step ::= AxisSpecifier NodeTest Predicate*

| AbbreviatedStep

[XP5] AxisSpecifier ::= AxisName '::'

| AbbreviatedAxisSpecifier

Продукцию Stepможно значительно упростить и записать в следующем виде:

Step ::= '.'

| '..'

| NodeTest Predicate*

| '@' NodeTest Predicate*

| AxisName '::' NodeTest Predicate*

В первых четырех случаях шаг выборки записан при помощи сокращенного синтаксиса, а именно:

□ шаг выборки '.'эквивалентен шагу self::node(), который выбирает контекстный узел;

□ шаг выборки '..'эквивалентен шагу parent::node(), который выбирает родительский узел контекстного узла;

□ шаг выборки вида NodeTest Predicate*эквивалентен шагу выборки вида 'child::' NodeTest Predicate*, который выбирает узлы из множества дочерних узлов контекстного узла;

□ шаг выборки вида '@' NodeTest Predicate*эквивалентен шагу выборки вида 'attribute::' NodeTest Predicate*, который выбирает узлы из множества атрибутов контекстного узла.

Последний случай, AxisName ' ::' NodeTest Predicate*представляет полный синтаксис шага выборки: сначала идет наименование оси и тест узла, разделенные двумя двоеточиями ( "::"), затем несколько предикатов.

Оси навигации

Важной особенностью путей выборки является то, что шаги в них могут совершаться не в двух направлениях (вглубь и на верхний уровень), как в случае с файловыми системами, а во многих других. При выполнении шага выборки из некоторого контекстного узла направление движения по логическому дереву документа задается первой частью этого шага, осью навигации. В XPath имеется 13 осей навигации, а именно:

self— эта ось навигации содержит только сам контекстный узел;

child— содержит все дочерние узлы контекстного узла; не содержит узлов атрибутов и пространств имен;

parent— содержит родительский узел контекстного узла, если он есть;

descendant— содержит все узлы-потомки контекстного узла; не содержит узлов атрибутов и пространств имен;

descendant-or-self— содержит контекстный узел, а также всех его потомков; не содержит узлов атрибутов и пространств имен;

ancestor— содержит узлы, которые являются предками контекстного узла;

ancestor-or-self— содержит контекстный узел, а также всех его предков;

following— содержит узлы, следующие за контекстным узлом, в порядке просмотра документа; не содержит его потомков; не содержит узлов атрибутов и пространств имен;

following-sibling— содержит братские узлы контекстного узла, которые следуют за ним в порядке просмотра документа; если контекстный узел является атрибутом или узлом пространства имен, то following-siblingне будет содержать никаких узлов;

preceding— содержит узлы, предшествующие контекстному узлу в порядке просмотра документа; не содержит его предков; не содержит узлов атрибутов и пространств имен;

preceding-sibling— содержит братские узлы контекстного узла, которые предшествуют ему в порядке просмотра документа; в случае, если контекстный узел является узлом атрибута или пространства имен, preceding-siblingне будет содержать никаких узлов;

attribute— содержит атрибуты контекстного узла, если он является элементом; в противном случае не содержит ничего;

namespace— содержит узлы пространств имен контекстного узла, если он является элементом; в противном случае не содержит ничего.

Шаг выборки вида ось ::node()будет содержать все узлы, принадлежащие этой оси. Например, attribute::node()(или, сокращенно @node()) будет содержать все атрибуты текущего узла.

Для того чтобы понять, как оси навигации расположены в дереве документа, обратимся к рис. 6.9.

Рис 69 Расположение в документе осей навигации На этом рисунке не показано - фото 55

Рис. 6.9. Расположение в документе осей навигации

На этом рисунке не показано расположение осей атрибутов и пространств имен вследствие того, что эти оси не имеют в документе физического направления.

Каждая ось имеет базовый тип узла — это тип узла, который считается "главным" в этом направлении навигации. Этот тип устанавливается следующим образом: если ось может содержать узлы элементов, ее базовым типом является элемент, в противном случае базовым типом оси навигации является тип узлов, которые она может содержать.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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