Kniga-Online.club

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

Читать бесплатно Алексей Валиков - Технология XSLT. Жанр: Программирование издательство -, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

Сервлет-версия xt реализована в классе com.jclark.xsl.sax.XSLservlet и может выполняться на контейнерах, поддерживающих Java Servlet API версии 2.1 и выше.

Версия xt для командной строки позволяет выполнять преобразования посредством следующей команды:

java -Dcom.jdark.xsl.sax.parser=SAX-драйвер com.jclark.xsl.sax.Driver source.xml stylesheet.xsl result.xml

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

Для платформы Windows32 процессор xt поставляется также в уже скомпилированной версии. Его запуск в этом случае выглядит как

xt source.xml stylesheet.xsl result.xml

Расширения

В xt реализован стандартный метод вызова Java-функций расширения (если быть до конца откровенными, Кларк фактически и придумал этот "стандартный" способ). Функции реализуются в Java-классах, которые затем подключаются при помощи URI пространств имен.

Сверх этого, xt также реализует несколько дополнительных функций для операций над множествами (xt:node-set, xt:intersection и xt:difference) и дополнительный элемент xt:document, который позволяет выводить результат преобразования сразу в несколько выходящих файлов. Позже эта же концепция была реализована в некоторых других процессорах и перенесена в версию XSLT 1.1.

Библиотека libxslt

Основные характеристики.

□ Платформы: C/Gnome, Perl, Python.

□ Расширения: функции и элементы расширения.

□ Полнота реализации: практически полное соответствие XSLT 1.0.

□ Разработчик: Даниел Вейлард (Daniel Veillard).

□ URL: http://xmlsoft.org/XSLT/.

Наравне с Saxon и xt, библиотека libxslt является еще одним примером того, насколько сильным может быть open-source продукт, даже если он создается, в основном, одним человеком. Библиотека libxslt изначально создавалась для поддержки XSLT-преобразований в проекте Gnome. Для разбора XML, работы с древовидными структурами и вычисления XPath-выражений libxslt использует другую Gnome-библиотеку: libxml. Библиотека libxslt написана практически на чистом ANSI С (языке С стандарта ANSI) и работает на таких платформах, как Linux, Unix и Windows32.

Использование

Прежде всего, как C-библиотеку, libxslt можно подключать к собственным модулям посредством документированного API, а также при помощи разработанных врапперов использовать в Perl и Python-программах. Поскольку по степени совместимости и разработанности libxslt явно превосходит Sablotron, думается, что в скором времени он станет гораздо более популярным.

В libxslt также включена утилита xsltproc, которая обеспечивает для libxslt интерфейс командной строки:

xsltproc -о result.xml stylesheet.xsl source.xml

В языках Perl и Python libxslt используется при помощи модулей XML::LibXSLT и libxsltmod соответственно.

Расширения

Другим преимуществом libxslt по сравнению с Sablotron является возможность использования расширений, причем как в виде функций, так и в виде элементов. Функции и элементы расширения в libxslt оформляются в виде C-функций, затем регистрируются в процессоре перед вызовом и используются в преобразованиях так же, как и в случае с Java — посредством пространств имен.

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

Приложение 2

Краткий справочник элементов и атрибутов XSLT

Обозначения

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

□ attribute

Обязательный атрибут.

□ attribute

Необязательный атрибут.

□ attribute="строка"

Атрибут со строковым параметром.

□ attribute="{строка}"

Атрибут со строковым параметром, значение которого является шаблоном значения атрибута.

□ attribute="yes" | "no"

Атрибут с вариантами значений.

□ attribute={ "yes" | "no" }

Атрибут с вариантами значений, которые могут быть заданы шаблонами значений атрибутов.

□ <!-- Содержимое: шаблон -->

Содержимым элемента является шаблон.

□ <!-- Содержимое: несколько элементов xsl:import ... -->

Элемент содержит последовательность из нуля или более элементов xsl:import.

□ <!-- Содержимое: один или более элемент xsl:when ... -->

Элемент содержит последовательность из одного или более элементов xsl:when.

□ <!-- Содержимое: ... опциональный элемент xsl:otherwise -->

Элемент содержит элемент xsl:otherwise, который может быть пропущен.

Элементы

В табл. П2.1 приведены описания основных элементов XSLT.

Таблица П2.1. Описание основных элементов XSLT

Элемент Описание <xsl:apply-imports/> Инструкция. Применяет шаблонные правила, которые содержатся в импортированных преобразованиях <xsl:apply-templates select="выражение" mode="режим"> <!-- Содержимое: несколько элементов xsl:sort или xsl:with-param --> </xsl:apply-templates> Инструкция. Применяет шаблонные правила к множеству узлов, возвращаемому выражением, записанным в атрибуте select. • select — содержит выражение, возвращающее множество узлов для обработки; • mode — указывает режим, в котором должны применяться шаблоны <xsl:attribute name="{имя}" Инструкция. Создает в выходящем документе узел атрибута. • name — определяет имя атрибута; • namespace — URI пространства имен создаваемого атрибута namespace="{пространство имен}"> <!-- Содержимое: шаблон --> </xsl:attribute> <xsl:attribute-set name="имя" use-attribute-sets="имена"> <!-- Содержимое: несколько элементов xsl:attribute --> </xsl:attribute-set> Элемент верхнего уровня. Определяет именованный набор атрибутов. • name — содержит имя набора атрибутов; • use-attribute-sets — перечисляет через пробелы имена наборов атрибутов, которые следует включить в определяемый набор <xsl:call-template name="имя"> <!-- Содержимое: несколько элементов xsl:with-param --> </xsl:call-template> Инструкция. Вызов именованного шаблона. • name — имя вызываемого шаблона <xsl:choose> <!-- Содержимое: один или более элемент xsl:when, опциональный элемент xsl:otherwise --> </xsl:choose> Инструкция. Выполняет содержимое одного из субэлементов в зависимости от условий <xsl:comment> <!-- Содержимое: шаблон --> </xsl:comment> Инструкция. Создает в выходящем документе узел комментария <xsl:copy use-attribute-sets="имена"> <!-- Содержимое: шаблон --> </xsl:copy> Инструкция. Создает в выходящем документе копию текущего узла. Копии дочерних узлов не создаются. • use-attribute-sets — перечисляет именованные наборы атрибутов, которые следует добавить в создаваемый узел <xsl:copy-of select="выражение"/> Инструкция. Копирует в выходящий документ результат вычисления выражения. • select — содержит выражение, результат которого нужно скопировать <xsl:decimal-format name="имя" decimal-separator="символ" grouping-separator="символ" infinity="строка" minus-sign="символ" NaN="строка" percent="символ" per-mille="символ" zero-digit="символ" digit="символ" pattern-separator="символ"/> Элемент верхнего уровня. Определяет именованный набор параметров для формата числа. • name — имя. Если name отсутствует, формат числа определяется по умолчанию; • decimal-separator — символ, разделяющий целую и дробную часть; • grouping-separator — символ, разделяющий группы цифр целой части числа; • infinity — строка, соответствующая бесконечности; • minus-sign — символ отрицания; • NaN — строка, соответствующая нечислу; • percent — символ процента; • per-mille — символ промилле; • zero-digit — символ нуля; • digit — символ, помечающий позицию необязательной цифры; • pattern-separator — символ, разделяющий положительный и отрицательный образцы форматирования <xsl:element name="{имя}" namespace="{пространство имен}" use-attribute-sets="имена"> <!-- Содержимое: шаблон --> </xsl:element> Инструкция. Создает в выходящем документе элемент. • name — имя элемента; • namespace — URI пространства имен создаваемого элемента; • use-attribute-sets — перечисляет имена наборов атрибутов, которые надо включить в создаваемый элемент <xsl:fallback> <!-- Содержимое: шаблон --> </xsl:fallback> Инструкция. Выполняется при невозможности выполнить родительскую инструкцию <xsl:for-each select="выражение"> <!-- Содержимое: несколько элементов xsl:sort, шаблон --> </xsl:for-each> Инструкция. Выполняет содержащийся шаблон для каждого из узлов множества. • select — содержит выражение, возвращающее перебираемое множество узлов <xsl:if test="выражение" > <!-- Содержимое: шаблон --> </xsl:if> Инструкция. Выполняет или не выполняет дочерний шаблон в зависимости от заданного условия. • test — содержит выражение проверяемого условия <xsl:import href="URI"/> Элемент верхнего уровня. Импортирует указанный шаблон. • href — URI импортируемого шаблона <xsl:include href="URI"/> Элемент верхнего уровня. Включает указанный шаблон. • href — URI включаемого шаблона <xsl:key name="имя" match="паттерн" use="выражение"/ > Элемент верхнего уровня. Определяет именованный ключ. • name — имя ключа; • match — выбирает узлы, для которых будут определяться значения ключа; • use — выражение, значение которого будет значением ключа для каждого из узлов <xsl:message terminate="yes" | "no"> <!-- Содержимое: шаблон --> </xsl:message> Инструкция. Указывает процессору на то, что нужно вывести сообщение. • terminate — определяет, следует ли прервать обработку после вывода сообщения или нет <xsl:namespace-alias stylesheet-prefix="префикс" | "#default" result-prefix="префикс" | "#default"/> Элемент верхнего уровня. Определяет псевдоним для префикса. • stylesheet-prefix — префикс в преобразовании; • result-prefix — префикс в результирующем документе <xsl:number level="single" | "multiple" | "any" count="паттерн" from="паттерн" value="выражение" format="{строка}" lang="{токен}" letter-value={ "alphabetic" | "traditional" } grouping-separator="{символ}" grouping-size="{число}"/> Инструкция. Выводит номер в соответствии с заданными критериями. • level — на каких уровнях нумеровать узлы; • count — какие узлы учитывать при нумерации; • from — в какой части документа нумеровать узлы; • value — выражение, вычисляющее номер. • format — форматирующая строка номера; • lang — язык для алфавитных последовательностей; • letter-value — алфавитная или традиционная нумерация; • grouping-separator — разделяющий символ групп цифр номера; • grouping-size — количество цифр в группах цифр номера <xsl:otherwise> <!-- Содержимое: шаблон --> </xsl:otherwise> Субэлемент элемента xsl:choose. Выполняется в элементе xsl:choose, если ни одно из других условий не верно. <xsl:output method="xml" | "html" | "text" | " префикс:имя" version="токен" encodings="строка" omit-xml-declaration="yes" | "no" standalone="yes" | "no" doctype-public="строка" doctype-system="строка" cdata-section-elements="имена" indent="yes" | "no" media-type="строка"/> Элемент верхнего уровня. Определяет параметры вывода результирующего документа. • method — метод сериализации; • version — версия языка сериализации; • encoding — кодировка выходящего документа; • omit-xml-declaration — опустить декларацию XML; • standalone — самостоятельный или несамостоятельный документ; • doctype-public — публичный идентификатор типа документа; • doctype-system — системный идентификатор типа документа; • cdata-section-elements — элементы, содержимое которых следует выводить как секции CDATA; • indent — индентация (вывод отступов); • media-type — медиа-тип <xsl:param name="имя" select="выражение"> <!-- Содержимое: шаблон --> </xsl:param> Инструкция, элемент верхнего уровня. Определяет параметр преобразования или шаблонного правила. • name — имя параметра; • select — выражение, задающее значение параметра <xsl:preserve-space elements="токены"/> Элемент верхнего уровня. Определяет элементы входящего документа, в которых следует сохранять текстовые узлы, содержащие только пробельные символы. • elements — перечисляет элементы, в которых пробельные символы должны быть сохранены <xsl:processing-instruction name="{имя}"> <!-- Содержимое: шаблон --> </xsl:processing-instruction> Инструкция. Создает узел инструкции по обработке. • name — определяет имя целевого приложения создаваемой инструкции <xsl:sort select="выражение" lang="{токен}" data-type={ "text" | "number" | "префикс:имя" } order={ "ascending" | "descending" } case-order={ "upper-first" | "lower-first"}/> Субэлемент элементов xsl:apply-templates и xsl:for-each. • select — выражения для сортировки; • lang — язык сортировки; • data-type — тип данных сортировки; • order — порядок сортировки; • case-order — упорядоченность строчных и прописных букв <xsl:strip-space elements="токены"/> Элемент верхнего уровня. Определяет элементы входящего документа, в которых следует удалять текстовые узлы, содержащие только пробельные символы. • elements — перечисляет элементы, в которых пробельные символы должны быть удалены <xsl:stylesheet id="идентификатор" extension-element-prefixes="префиксы" exclude-result-prefixes="префиксы" version="число"> <!-- Содержимое: несколько элементов xsl:import, элементы верхнего уровня --> </xsl:stylesheet> Корневой элемент преобразования. • id — идентификатор преобразования; • extension-element-prefixes — префиксы элементов расширения; • exclude-result-prefixes — префиксы, не включаемые в выходящий документ; • version — версия языка XSLT <xsl:template match="паттерн" namе="имя" priority="число" modе="имя"> <!-- Содержимое: несколько элементов xsl:param, шаблон --> </xsl:template> Элемент верхнего уровня. Определяет шаблонное правило. • match — содержит паттерн, которому должны удовлетворять узлы, обрабатываемые данным шаблоном; • name — имя шаблона; • priority — приоритет шаблона; • mode — режим шаблона <xsl:text disable-output-escaping="yes" | "no"> <!-- Содержимое: символьные данные --> </xsl:text> Инструкция. Создает в выходящем документе текстовый узел. Пробельные символы, находящиеся внутри xsl:text, не удаляются. • disable-output-escaping — определяет, должны ли в выходящем документе особые символы этого текстового узла заменяться на сущности <xsl:transform id="идентификатор" extension-element-prefixes="префиксы" exclude-result-prefixes="префиксы" version="число"> <!-- Содержимое: несколько элементов xsl:import, элементы верхнего уровня --> </xsl:transform> Корневой документ преобразования. Псевдоним элемента xsl:stylesheet <xsl:value-of select="выражение" disable-output-escaping="yes" | "no"/> Инструкция. Создает в выходящем документе текстовый узел, содержащий результат вычисления выражения, приведенный к строке. • select — содержит вычисляемое выражение; • disable-output-escaping — определяет, должны ли в выходящем документе особые символы этого текстового узла заменяться на сущности <xsl:variable name="имя" select="выражение" > <!-- Содержимое: шаблон --> </xsl:variable> Инструкция, элемент верхнего уровня. Создает глобальную или локальную переменную. Значение переменной не может быть изменено. • name — задает имя определяемой переменной; • select — задает значение определяемой переменной <xsl:when test="выражение"> <!-- Содержимое: шаблон --> </xsl:when> Субэлемент элемента xsl:choose. Выполняется один из вариантов в блоке xsl:choose в зависимости от условия. • test — задает выражение логического условия <xsl:with-param name="имя" select="выражение"> <!-- Содержимое: шаблон --> </xsl:with-param> Субэлемент элементов xsl:apply- templates, xsl:call-template. Задает значение одного параметра при вызове параметризованного шаблона. • name — имя параметра; • select — выражение, значение которого должно быть передано как параметр. В случае, если атрибут select не определен, значением передаваемого параметра является дерево, полученное в результате выполнения содержимого xsl:with-param. Если элемент при этом пуст, значением параметра является пустая строка

Атрибуты

Перейти на страницу:

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

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


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

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


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*