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

Интервал:

Закладка:

Сделать

namespace-uri="http://www.a.com"

local-name="a">

namespace-uri="http://www.b.com"

local-name="b">

namespace-uri=""

local-name="c"/>

Функция id

node-set id( object )

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

Функция idвыполняется по-разному в зависимости от того, какой тип данных ей передается.

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

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

□ Если аргументом функции является объект другого типа, аргумент вначале преобразуется в строку и функция idвыполняется как со строковым параметром.

Пример

Предположим, что мы используем XML для того, чтобы описать граф — множество вершин, соединенных дугами (рис. 6.11).

Рис 611 Изображение графа который мы будем описывать в XML Каждой вершине - фото 57

Рис. 6.11. Изображение графа, который мы будем описывать в XML

Каждой вершине будет соответствовать элемент vertex. Для того чтобы описать все связи, мы дадим каждой вершине уникальное имя, которое будет записано в ее ID-атрибуте name. Имена вершин, с которыми она соединена, будут перечислены в атрибуте connectsтипа IDREFS.

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

Листинг 6.13. Документ gemini.xsl

Декларация типа документа вынесена во внешний файл gemini.dtd.

Листинг 6.14. Файл gemini.dtd

name ID #REQUIRED

connects IDREFS #REQUIRED>

При обработке этого документа функция idбудет очень полезна для выбора элементов соединенных вершин. Действительно, функция id, которой будет передано значение атрибута connects(в котором через пробелы перечислены вершины, смежные данной), возвратит множество, состоящее из элементов с перечисленными уникальными идентификаторами. Так, например, функция id('tau upsilon')возвратит множество, состоящее из двух элементов с атрибутами name, равными tauи upsilonсоответственно.

Более того, функция idможет быть вычислена и от множества узлов. В этом случае ее значением будет объединение множеств, полученных в результате выполнения функции от строкового значения каждого узла переданного множества. Например, id(id('tau upsilon')/@connects)возвратит множество, состоящее из вершин с именами alpha, beta, delta, epsilon, theta, iotaи kappa— множество вершин, смежных с вершинами tau и upsilon.

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

Для того чтобы найти множество вершин, достижимых за один шаг (иначе говоря, смежных), мы воспользуемся выражением вида id(@connects), для выборки множества вершин, достижимых из текущей за два шага — выражением id(id(@connects)/@connects). Таким образом, множество вершин, достижимых не более чем за два шага, будет вычисляться как

id(@connects)|id(id(@connects)/@connects)

Листинг 6.15. Преобразование gemini.xsl

version="1.0"

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

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

Базовые продукции XPath

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

Литералы — это строковые значения, заключенные в одинарные или двойные кавычки. В литералах нельзя использовать символ кавычек, в которые они заключены. Кроме этого, поскольку XPath-выражения чаще всего используются в атрибутах элементов, в них нельзя использовать символы " <" и " &" — они должны заменяться на сущности. Литералам соответствует продукция Literal, определяемая в виде:

[XP29] Literal ::= '"' [^"]* '"' | "'" [^']* "'"

XPath использует десятичную систему счисления. Наборы цифр, соответствующие правилу Digits, могут состоять из цифр от 0до 9:

[XP31] Digits ::= [0-9]+

Число в XPath состоит из последовательности цифр, которые могут быть разделены точкой, причем точка может стоять как в начале числа ( .5), так и в конце ( 5.). Числу соответствует EBNF-правило Number:

[XP30] Number ::= Digits ('.' Digits?)? | '.' Digits

Оператору умножения соответствует символ " *" и синтаксическое правило MultiplyOperator:

[XP34] MultiplyOperator ::= '*'

Именам переменных, которые используются в XPath, предшествует символ " $". Сами же имена должны удовлетворять продукции QName, которую мы рассматривали в разделе "Расширенные имена" .

[XP36] VariableReference ::= '$' QName

Продукция NodeType, использованная в тесте узла ( см. раздел "Тесты узлов" данной главы, продукция [XP7] ), определяет типы узлов, которые можно проверить при тесте — comment(комментарий), text(текстовый узел), processing-instruction(узел инструкции по обработке) и node(узел любого типа). NodeTypeзаписывается следующим образом:

[XP38] NodeType ::= 'comment'

| 'text'

| 'processing-instruction'

| 'node'

Другая конструкция, NameTest, которая также используется в тесте узла, проверяет узлы базового типа оси на соответствие определенному имени. EBNF-правило NameTestимеет следующий синтаксис:

[ХР37] NameTest ::= '*' | NCName ':' '*' | QName

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

[XP35] FunctionName ::= QName - NodeType

В целях удобочитаемости, в выражениях можно использовать пробельное пространство. Ему соответствует EBNF-правило ExprWhiteSpace:

[XP39] ExprWhitespace ::= S

Разбор XPath-выражений

Хотя синтаксис языка XPath укладывается в тридцать с небольшим синтаксических правил, реализация интерпретатора XPath-выражений может быть довольно непростой задачей. Для того чтобы хоть как-то упростить ее, в XPath определяются так называемые токены выражения (англ. expression token). Токены — это единицы, из которых состоит выражение. Будучи сами очень простыми, они выстраиваются в более сложные конструкции, образуя, в итоге, выражения.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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