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

Интервал:

Закладка:

Сделать

Примером токенов являются операторы, которым соответствуют продукции Operatorи OperatorName:

[XP33] OperatorName ::= 'and' | 'or' | 'mod* | 'div'

[XP32] Operator ::= OperatorName

| MultiplyOperator

| '/' | '//' | '|' | '+' | '-'

| '=' | '!=' | '<' | '>' | '<=' | '>='

Продукция самого токена выражения имеет вид:

[ХР28] ExprToken ::= '(' | ')' | '[' | ']'

| ' . ' | ' .. ' | '@' | ' | ':: '

| NameTest

| NodeType

| Operator

| FunctionName

| AxisName

| Literal

| Number

| VariableReference

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

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

□ Если текущему токену предшествует другой токен, причем этот предшествующий токен не является символом @, ::, (, [или нетерминалом Operator, то текущий токен, являющийся символом *, должен восприниматься как знак умножения, а токен, являющийся NCName, — как нетерминал OperatorName.

□ Если за текущим токеном вида NCNameследует открывающая круглая скобка (символ " ("), токен должен восприниматься или как имя функции ( FunctionName), или как тип узла ( NodeType).

□ Если за текущим токеном вида NCNameследуют символы " ::", токен должен восприниматься как имя оси навигации ( AxisName).

□ Если ничего из вышеперечисленного не выполняется, токен не должен восприниматься, как MultiplyOperator, OperatorName, NodeType, FunctionNameили AxisName.

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

□ Символ *является знаком умножения ( MultiplyOperator) тогда и только тогда, когда ему предшествует токен, но этот токен не является токеном @, ::, (, [или Operator.

□ Токен NCNameпредставляет имя оператора ( OperatorName) тогда и только тогда, когда ему предшествует токен, но этот токен не является токеном ::, (, [или Operator.

□ Токен NCNameявляется именем функции ( FunctionName) или типом узла ( NodeType) тогда и только тогда, когда за ним следует символ " (".

□ Токен NCNameявляется именем оси навигации ( AxisName) тогда и только тогда, когда за ним следуют символы " ::".

Глава 7

Основные элементы XSLT

Основные и дополнительные элементы

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

Таким образом, множество основных элементов будет включать в себя следующее:

xsl:element— создание в выходящем дереве узла элемента;

xsl:attribute— создание в выходящем дереве узла атрибута;

xsl:attribute-set— определение именованного набора атрибутов;

xsl:text— создание текстового узла;

xsl:value-of— создание текстового узла по результатам вычисления выражения;

xsl:comment— создание узла комментария;

xsl:processing-instruction— создание узла инструкции по обработке;

xsl:copy— копирование текущего узла вместе с его узлами пространств имен;

□ x sl:copy-of— копирование результата вычисления выражения;

xsl:if— условная обработка;

xsl:choose, xsl:whenи xsl:otherwise— выбор одной из нескольких альтернатив согласно некоторым условиям;

xsl:for-each— итеративная обработка множества узлов.

Создание узлов элементов

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

□ Что, если в выходящем документе требуется создать элемент с заранее неизвестным (например, вычисляемым во время выполнения) именем?

□ Как создать элемент, принадлежащий пространству имен, известному обрабатывающему процессору?

Поясним на примерах суть и той и другой проблемы.

Представим себе входящий документ вида

который нужно преобразовать во что-нибудь наподобие

<���а>

</а>

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

Представим теперь, что нам в XSLT-преобразовании необходимо сгенерировать другое XSLT-преобразование. Скажем из элемента вида

нужно получить шаблон

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

будет некорректным определением. He поможет и смена префикса, ведь принадлежность пространству имен определяется не им.

Для того чтобы решить эти проблемы (главным образом, первую), XSLT предоставляет возможность создавать узлы элементов при помощи элемента xsl:element.

Элемент xsl:element

Синтаксическая конструкция этого элемента задается следующим образом:

name="{ имя }"

namespace="{ пространство имен }

"use-attribute-sets=" имена ">

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

Атрибут namespaceуказывает URI пространства имен создаваемого элемента. Точно так же, как и name, этот атрибут может содержать шаблон значения, что позволяет вычислять пространство имен создаваемого элемента при помощи выражений.

Атрибут use-attribute-setsперечисляет имена наборов атрибутов, которые должны быть включены в создаваемый элемент.

Содержимым xsl:elementявляется шаблон, который выполняется процессором и затем включается в создаваемый элемент.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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