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


Авторские права

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

Здесь можно скачать бесплатно "Алексей Валиков - Технология XSLT" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство БХВ-Петербург, год 2002. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Алексей Валиков - Технология XSLT
Рейтинг:
Название:
Технология XSLT
Издательство:
БХВ-Петербург
Год:
2002
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Технология XSLT"

Описание и краткое содержание "Технология XSLT" читать бесплатно онлайн.



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

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






Результатом обработки элемента

<xsl:value-of select="1&lt;2"/>

будет строка "true".

Сравнение всегда требует наличия двух операндов числового типа. Если операнды не являются числами, они будут соответствующим образом преобразованы.

В XPath вполне корректным будет выражение вида A > B > C. Однако результат его будет довольно неожиданным. В XPath действует правило левой ассоциативности операторов сравнения, поэтому A > B > C будет равносильно (А > B) > C. То есть A будет сравнено с B, затем результат, истина или ложь, будет преобразован в числовой тип (получится 1 или 0) и затем сравнен со значением C.

Пример:

3 > 2 > 1 → (3 > 2) > 1 → 1 > 1 → false

3 > 2 > 0 → (3 > 2) > 0 → 1 > 0 → true

Неравенствам в XPath соответствует продукция RelationalExpr:

[XP24] RelationalExpr ::= AdditiveExpr

                          | RelationalExpr '<' AdditiveExpr

                          | RelationalExpr '>' AdditiveExpr

                          | RelationalExpr '<=' AdditiveExpr

                          | RelationalExpr '>=' AdditiveExpr

Операции "равно" и "не равно" записываются при помощи продукции

EqualityExpr:

[XP23] EqualityExpr ::= RelationalExpr

                        | EqualityExpr '=' RelationalExpr

                        | EqualityExpr '!=' RelationalExpr

Операции с множествами узлов

Три основные операции с множествами узлов, которые поддерживает язык XPath, — это фильтрация множества, выборка с использованием путей и объединение.

Фильтрация

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

В выражениях множества узлов могут также фильтроваться одним или несколькими предикатами. Узел остается в фильтруемом множестве, только если он удовлетворяет всем предикатам поочередно.

Пример

Предположим, что нам нужно оставить в фильтруемом множестве узлов, которое присвоено переменной nodes, только те узлы, которые имеют имя а и атрибут href. Искомое выражение может быть записано следующим образом:

$nodes[self::а][@href]

Можно использовать и более сложные конструкции, например, фильтровать объединение двух множеств — присвоенного переменной nodes и возвращаемого путем выборки body/*:

($nodes|body/*)[self::a][@href]

Выражение, в котором производится фильтрация узлов, отвечает EBNF-правилу FilterExpr:

[XP20] FilterExpr ::= PrimaryExpr | FilterExpr Predicate

Если раскрыть рекурсию, которая имеется в этом правиле, его можно переписать в более простом виде:

FilterExpr ::= PrimaryExpr Predicate*

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

Использование в выражениях путей выборки

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

$nodes/*

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

$nodes//node()

Здесь node() — это тест узла, выполняющийся для всех типов узлов, а //, как и обычно, сокращение от /descendant-or-self:node()/.

Выражения, которые используют пути выборки, соответствуют продукции PathExpr:

[XP19] PathExpr ::= LocationPath

                    | FilterExpr

                    | FilterExpr '/' RelativeLocationPath

                    | FilterExpr '//' RelativeLocationPath

Объединение множеств

Множества могут быть объединены при помощи оператора "|". В объединение будут входить узлы, которые присутствуют хотя бы в одном из множеств, причем результат не содержит повторений. Объединять можно любые выражения, результатом вычисления которых являются множества узлов.

Пример

Множество всех элементов а, b и с документа может быть задано выражением //a|//b|//c.

Выражению объединения соответствует продукция UnionExpr:

[XP18] UnionExpr ::= PathExpr | UnionExpr '|' PathExpr

Старшинство операций

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

Выражению, как самой общей конструкции XPath, соответствует продукция Expr, которая определяется следующим образом:

[XP14] Expr ::= OrExpr

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

□ выражения (Expr);

□ логические выражения "или" (OrExpr);

□ логические выражения "и" (AndExpr);

□ выражения равенства и неравенства (EqualityExpr);

□ выражения сравнения (RelationalExpr);

□ выражения сложения и вычитания (AdditiveExpr);

□ выражения умножения и деления (MultiplicativeExpr);

□ унарные выражения (UnaryExpr);

□ выражения объединения множеств (UnionExpr);

□ выражения путей выборки (PathExpr);

□ пути выборки (LocationPath), фильтрация множеств (FilterExpr), относительные пути выборки (RelativeLocationPath).

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

□ операции с путями выборки;

□ операция объединения множеств (|);

□ унарная операция отрицания (-);

□ умножение, деление и вычисление остатка от деления (*, div и mod);

□ операции сложения и вычитания (+ и -);

□ операции сравнения (<, >, <=, =>);

□ операции проверки равенства и неравенства (= и !=);

□ операция "и" (and);

□ операция "или" (or).

Операции одного порядка имеют левую ассоциативность, как это было показано на примере с операциями сравнения (3 > 2 > 1 равносильно (3 > 2) >1).

Функции

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

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

Прежде, чем разбирать функции, рассмотрим синтаксис их вызова. Он описывается правилом FunctionCall:

[XP16] FunctionCall ::= FunctionName

                        '(' ( Argument ( ',' Argument )* )? ')'

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

тип1 функция(тип2, тип3, тип4?)

где тип1 — тип возвращаемого значения, тип2, тип3, тип4 — типы передаваемых параметров, символ "?" обозначает аргумент, который может быть опущен. Также может быть использован символ * для обозначения аргумента, который может повторяться несколько раз. Например,


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Технология XSLT"

Книги похожие на "Технология XSLT" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора Алексей Валиков

Алексей Валиков - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

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

Отзывы о "Алексей Валиков - Технология XSLT"

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

А что Вы думаете о книге? Оставьте Ваш отзыв.