T.M. SoftStudio

feci quod potui, faciant meliora potentes

Язык XSLT

Язык XSLT (Extensible Stylesheet Language Transformations) — это основанный на XML язык преобразования одного XML-документа в вновь созданный другой XML-документ.

Суть XSLT-преобразования состоит в применении XSLT-процессором таблицы XSLT-стилей к XML-документу, в результате чего генерируется новый XML-документ, HTML-документ или простой текст. Поэтому XSLT-синтаксис определяет структуру XML-документа, называемого таблицей XSLT-стилей, при этом при определении правил выборки данных используется язык XPath.

XSLT-документ использует пространство имен http://www.w3.org/1999/XSL/Transform и содержит элементы, описанные в табл. 1 и 2.

Таблица 1. Элементы верхнего уровня XSLT-синтаксиса

Элемент верхнего уровня

Атрибуты

Описание

stylesheet (его синоним  transform)

·   id — идентификатор документа;

·   extension-element-prefixes — пространство имен элементов XSLT-расширения;

·   exclude-result-prefixes — пространство имен, которое необходимо исключить из результирующего документа;

·   version — обязательный атрибут, указывающий версию XSLT

Корневой элемент таблицы XSLT-стилей

import

href — обязательный атрибут, указывающий URI-адрес импортируемого XSLT-документа

Импортирует другой XSLT-документ, при этом исходный XSLT-документ имеет приоритет над импортируемым  XSLT-документом

include

href — обязательный атрибут, указывающий URI-адрес включаемого XSLT-документа

Включает другой XSLT-документ

strip-space

elements — обязательный атрибут, содержит перечень элементов исходного XML-документа, в которых должны быть удалены пробелы

Определяет удаление пробелов в XML-документе

preserve-space

elements — обязательный атрибут, содержит перечень элементов исходного XML-документа, в которых должны быть сохранены пробелы

Определяет сохранение пробелов в XML-документе

output

·   method — указывает результирующий формат ("xml" | "html" | "text"| имя);

·   version — версия результирующего формата;

·   encoding — кодировка;

·   omit-xml-declaration — "yes" или "no", если "no" (по умолчанию), тогда XML-объявления исходного документа включаются в результирующий документ;

·   standalone — "yes" или "no", если "no" (по умолчанию), тогда объявление автономности не включается в результирующий документ;

·   doctype-public — устанавливает значение атрибута PUBLIC декларации DOCTYPE в результирующем документе;

·   doctype-system — устанавливает значение атрибута SYSTEM декларации DOCTYPE в результирующем документе;

·   cdata-section-elements — перечень элементов, чье содержимое должно быть выведено  помощью разделов CDATA;

·   indent — "yes" или "no", определяет форматирование результирующего документа согласно его иерархической структуре;

·   media-type — MIME-тип результирующего документа

Определяет формат результирующего XML-документа

key

·   name — обязательный атрибут, указывает имя ключа;

·   match — обязательный атрибут, указывает элементы XML-документа, к которым данный ключ применяется;

·   use — обязательный атрибут, содержит выражение значения ключа

Определяет ключ "имя  значение", используемый функцией key() в XPath-выражениях для эффективного поиска элементов XML-документа

decimal-format

·   name — имя формата;

·   decimal-separator — символ разделения десятичной части числа от целой, по умолчанию ".";

·   grouping-separator — символ группировки тысяч, по умолчанию ",";

·   infinity — бесконечность, по умолчанию "Infinity";

·   minus-sign — символ отрицательности числа, по умолчанию "-";

·   NaN — неопределенное число, по умолчанию "NaN";

·   percent — символ процентов, по умолчанию "%";

·   per-mille — символ промилле, по умолчанию "‰";

·   zero-digit — ноль, по умолчанию "0";

·   digit — символ цифры, по умолчанию #;

·   pattern-separator — символ разделения положительных и отрицательных подшаблонов в шаблоне, по умолчанию ";"

Определяет символы, используемые при конвертации чисел в строку функцией format-number(). Указывает способ группировки цифр в числе, символ разделения десятичной части числа от целой и т. д.

namespace-alias

·   stylesheet-prefix — исходный префикс;

·   result-prefix — результирующий префикс

Служит для замены префикса пространства имен

attribute-set

·   name — обязательный атрибут, указывает имя набора;

·   use-attribute-sets — перечень имен атрибутов

Создает именованный набор атрибутов, вставляемых в результирующий XML-документ. Служит контейнером для элементов attribute (обязательный атрибут name — имя вставляемого атрибута, namespace — его пространство имен). Элементы attribute содержат значения вставляемых атрибутов

variable

·   name — обязательный атрибут, указывает имя переменной;

·   select — содержит выражение, определяющее значение переменной

Объявляет переменные преобразования

param

·   name — обязательный атрибут, указывает имя параметра;

·   select — содержит выражение, определяющее значение параметра

Объявляет параметры преобразования

template

·   match — имя элемента исходного XML-документа, к которому применяется шаблон;

·   name — имя шаблона;

·   priority — номер приоритета шаблона;

·   mode — режим преобразования

Определяет шаблон преобразования

 

Таблица 2. Элементы нижнего уровня XSLT-синтаксиса

Элемент нижнего уровня

Атрибуты

Описание

apply-imports

 

Указывает, что необходимо применить шаблон из импортируемой таблицы XSLT-стилей

apply-templates

·   select — указывает дочерний элемент текущего элемента, к которому применяется шаблон;

·   mode — режим преобразования

Указывает применение шаблона к элементу исходного XML-документа

call-template

name — имя вызываемого шаблона

Вызывает именованный шаблон

choose

 

Выбор условия, вложенные элементы when (обязательный атрибут test — условие) и otherwise

comment

 

Создает комментарии в результирующем XML-документе

copy

use-attribute-sets — перечень атрибутов элемента

В результирующем XML-документе создает копию текущего элемента исходного XML-документа без дочерних элементов и неуказанных атрибутов

copy-of

select — обязательный атрибут, указывает имя копируемого элемента

Создает копию, включая дочерние элементы и атрибуты

element

·   name — имя создаваемого элемента;

·   namespace — его пространство имен;

·   use-attribute-sets — перечень атрибутов элемента

В результирующем XML-документе создает элемент

fallback

 

Определяет альтернативную обработку элементов, которые не распознаются XSLT-процессором

for-each

select — обязательный атрибут, указывает имя элемента исходного XML-документа

Создает цикл обработки для указанного элемента исходного XML-документа

if

test — обязательный атрибут, содержит условие преобразования

Определяет условие преобразования

message

terminate — "yes" или "no", указывает необходимость прерывания преобразования

Выдает сообщение в процессе преобразования

number

·   level — "single" или "multiple", или "any", указывает уровень исходного XML-документа;

·   count — указывает элементы уровня, которые необходимо учитывать;

·   from — указывает точку отсчета;

·   value — содержит выражение, которое будет преобразовано в число;

·   format — формат вывода чисел;

·   lang — код языка для чисел;

·   letter-value — "alphabetic" или "traditional", указывает нумерацию;

·   grouping-separator — группировка цифр;

·   grouping-size — размер группировки

Вставляет форматированное число в результирующий XML-документ

processing-instruction

name — обязательный атрибут, указывает имя инструкции по обработке

Создает элемент инструкции по обработке в исходящем XML-документе

sort

·   select — указывает элементы сортировки;

·   lang — код языка, используемый для сортировки;

·   data-type — "text" или "number", или "qname", указывает тип данных сортировки;

·   order — "ascending" или "descending", указывает порядок сортировки;

·   case-order — "upper-first" или "lower-first", указывает регистр сортировки

Указывает критерии сортировки для элементов for-each и apply-templates

text

disable-output-escaping — "yes" или "no", указывает вывод специальных символов как есть

Создает текст в исходящем XML-документе

value-of

·   select — обязательный атрибут, указывает имя элемента, значение которого извлекается;

·   disable-output-escaping — "yes" или "no", указывает вывод специальных символов как есть

Извлекает значение элемента исходного XML-документа и вставляет его в виде текста в результирующий XML-документ

with-param

·   name — имя параметра;

·   select — значение параметра

Передает параметр шаблону

 

В дополнение к XPath-функциям для работы с данными язык XLST содержит ряд функций, описанных в табл. 3.

Таблица 3. XLST-функции

Функция

Параметры

Описание

current()

 

Возвращает набор узлов, содержащий данный узел

document()

·   object (обязательный) — URI-адрес внешнего документа;

·   node-set — набор узлов, используемый для разрешения относительного URI-адреса внешнего документа

Обеспечивает доступ к внешним XML-документам

element-available()

string (обязательный) — тестируемый элемент

Указывает поддержку элемента XSLT-процессором

format-number()

·   number (обязательный) — число;

·   Format (обязательный) — шаблон формата конвертации;

·   decimalformat — имя элемента decimalformat

Конвертирует число в строку

function-available()

string (обязательный) — тестируемая функция

Указывает поддержку функции XSLT-процессором

generate-id()

node-set — набор узлов

Генерирует идентификатор для узла

key()

·   string (обязательный) — имя элемента key;

·   object (обязательный) — значение поиска

Возвращает набор узлов документа, используя элемент key

system-property()

string (обязательный) — имя свойства

Возвращает значение системного свойства

unparsed-entity-uri()

string (обязательный) — имя не разбираемой сущности

Возвращает URI-адрес не XML-ресурса