Вход/Регистрация
Технология XSLT
вернуться

Валиков Алексей Н.

Шрифт:

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

Прежде всего, как 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
. Если элемент при этом пуст, значением параметра является пустая строка

Атрибуты

Сведения об атрибутах XSLT представлены в табл. П2.2.

Таблица П2.2. Атрибуты XSLT

Атрибут Назначение
xsl:version
Указывает версию языка в случае использования упрощенного синтаксиса записи преобразований
xsl:exclude-result-prefixes
Перечисляет префиксы пространств имен, которые должны быть исключены в данном элементе
xsl:extension-elements-prefixes
Перечисляет префиксы пространств имен, которые используются в элементах расширения
xsl:use-attribute-sets
Перечисляет названия именованных наборов атрибутов, которые следует включить в данный элемент на выходе

Приложение 3

Краткий справочник функций XSLT и XPath

Обозначения

Прототип функции имеет следующий синтаксис:

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

Здесь тип1 — тип возвращаемого значения, тип2, тип3, тип4 — типы передаваемых параметров.

  • Читать дальше
  • 1
  • ...
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: