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

Интервал:

Закладка:

Сделать

Тогда продукцию StepPatternтоже можно переписать:

StepPattern ::= NodeTest Predicate*

| '@' NodeTest Predicate*

| 'child::' NodeTest Predicate*

| 'attribute::' NodeTest Predicate*

Теперь стало совершенно очевидно, что шаг паттерна это не что иное, как подмножество шагов выборки, в которых ограничено множество осей навигации.

Таким образом, синтаксически паттерны отличаются от путей выборки тем, что в них можно использовать только две оси навигации (не считая descendant-or-selfв виде оператора), но зато можно в качестве узла отсчета использовать узел, выбранный по своему уникальному атрибуту или по значению ключа.

Паттерны могут использоваться в XSLT в следующих атрибутах:

□ атрибуты countи fromэлемента xsl:number;

□ атрибут matchэлемента xsl:key;

□ атрибут matchэлемента xsl:template.

Последние два случая паттернов отличаются от первого тем, что в них нельзя использовать переменные. Определение вида

...

будет некорректным.

Семантика паттернов

Остановимся подробнее на вопросе — что же означает "соответствие узла некоторому паттерну".

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

Узел Xсоответствует паттерну Pтогда и только тогда, когда существует такой узел Y, принадлежащий оси ancestor-or-selfузла X, что множество, получаемое в результате вычисления выражения Pв контексте узла Yбудет содержать узел X.

Пример

Рассмотрим это определение на примере паттерна body//а. Строго говоря, узел будет соответствовать этому паттерну, если во множестве его предков (плюс сам узел) найдется такой узел, что множество body//а, вычисленное в его контексте, будет содержать проверяемый узел. На практике первые два элемента априведенного ниже документа соответствуют этому паттерну, потому что существует элемент html, содержащий элемент body, потомками которого эти элементы аявляются.

Листинг 6.2

<���а>

</а>

Существует также и более простое определение соответствия. Узел Xсоответствует паттерну Pтогда и только тогда, когда Xпринадлежит множеству //P. В приведенном выше примере паттерну body//асоответствуют все узлы множества //body//а.

Эти определения эквивалентны. На практике следует пользоваться тем, которое кажется более понятным.

Примеры паттернов

body— соответствует элементам bodyс нулевым пространством имен;

xhtml:body— соответствует элементам body, принадлежащим пространству имен с префиксом xhtml;

body/a— соответствует дочерним элементам аэлемента body;

*— соответствует любому элементу, который принадлежит нулевому пространству имен;

а[1]— соответствует каждому первому элементу асвоего родительского узла; элемент будет соответствовать этому паттерну, если ему не предшествует никакой братский элемент a— то есть из всех дочерних элементов анекоторого узла этому паттерну будет соответствовать только первый в порядке просмотра документа элемент;

a[position() mod 2 = 0]— соответствует каждому четному элементу aсвоего родительского узла; иначе говоря, из всех элементов анекоторого узла этому паттерну будут соответствовать только четные;

/— соответствует корневому узлу;

/html— узел будет соответствовать этому паттерну тогда и только тогда, когда он является элементом с именем htmlи нулевым пространством имен и находится при этом в корне элемента;

//html— соответствует любому элементу htmlдокумента, принадлежащему нулевому пространству имен; этот паттерн равносилен паттерну html;

*[starts-with(local-name(), 'A') or starts-with(local-name(), 'a')]— соответствует любому элементу, имя которого начинается на букву "а"в любом регистре символов;

*[string-length(local-name())=2]— соответствует любому элементу, локальная часть имени которого состоит из двух символов;

*[starts-with(namespace-uri(),'http') or starts-with(namespace-uri(), 'HTTP')]— соответствует любому элементу, URI пространства имен которого начинается на "http"или "HTTP";

br[not(*)]— соответствует элементу br, который не имеет дочерних элементов;

id('i')— соответствует элементу, уникальный атрибут которого (атрибут, имеющий тип ID) равен "i";

id('i')/@id— соответствует атрибуту idэлемента, уникальный атрибут которого равен "i"; заметим, что уникальный атрибут элемента вовсе не обязательно должен иметь имя id;

key('name', 'html')/@href— соответствует атрибуту hrefузла, значение ключа с именем "name"которого равно "html";

*|@*— соответствует любому элементу или атрибуту;

a|b|с— соответствует элементам а, bи с;

node()— соответствует любому узлу, кроме узла атрибута и пространства имен (поскольку они не являются дочерними узлами своих родителей);

node() | attribute::* | namespace::*— соответствует любому узлу, включая узлы атрибутов и пространств имен;

node()[not(self::text())]— соответствует любому узлу, кроме текстового узла, узла атрибута и узла пространства имен.

Выражения

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

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

Базовая конструкция, использующаяся в выражениях, называется первичным выражением (от англ. primary expression). Первичные выражения могут быть переменными, литералами, числами, вызовами функций, а также обычными выражениями Expr, сгруппированными в круглых скобках:

[XP15] PrimaryExpr ::= VariableReference

| '(' Expr ')'

| Literal

| Number

| FunctionCall

Переменные

Переменные вызываются в выражениях XPath по своему имени, которому предшествует символ " $". Например, если мы объявили переменную nodes:

то использовать в выражениях мы ее будем как $nodes.

Переменные, так же как элементы и атрибуты XML, могут иметь расширенные имена вида QName, состоящие из префикса пространства имен и локальной части имени. Это позволяет создавать переменные, принадлежащие различным пространствам имен.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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