Чтение онлайн

ЖАНРЫ

Технология XSLT

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

Шрифт:

□ 

<!-- Содержимое: ... опциональный элемент 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 — типы передаваемых параметров.

При этом символ "

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

Функции

В табл. П3.1–П3.5 представлено описание наиболее часто используемых функций.

Таблица П3.1. Булевые функции

Функция Описание
boolean boolean(object)
Явным образом преобразует объект, который ей передается в булевый тип
boolean not(boolean)
Выполняет логическое отрицание
boolean true
Возвращает
true
, "истину"
boolean false
Возвращает
false
, "ложь"
boolean lang(string)
Возвращает "истину", если идентификатор языка, который передан ей в виде строкового параметра, соответствует языковому контексту контекстного узла

Таблица П3.2. Числовые функции

Функция Описание
number number(object?)
Явным образом конвертирует свой аргумент в числовой тип. Если аргумент опущен, то выполняется с множеством, состоящим из контекстного узла
number sum(node-set)
Суммирует значения узлов из переданного ей множества
number floor(number)
Округляет аргумент до ближайшего не большего целого
number ceiling(number)
Округляет аргумент до ближайшего не меньшего целого
number round(number)
Округляет аргумент до ближайшего целого значения

Таблица П3.3. Строковые функции

Функция Описание
string string(object?)
Преобразует свой аргумент к строковому типу явным образом. Если аргумент опущен, то выполняется с множеством, состоящим из контекстного узла
string concat(string, string, string*)
Возвращает конкатенацию (строковое сложение) своих аргументов
boolean starts-with (string, string)
Принимает на вход два строковых аргумента и возвращает
true
, если первая строка начинается со второй и
false
в противном случае
boolean contains (string, string)
Принимает на вход два строковых аргумента и возвращает
true
, если первая строка содержит вторую и
false
в противном случае
string substring-before(string, string)
Принимает на вход два строковых аргумента, находит в первой строке вторую и возвращает подстроку, которая ей предшествует
string substring-after(string, string)
Принимает на вход два строковых аргумента, находит в первой строке вторую и возвращает подстроку, которая за ней следует
string substring(string, number, number?)
Возвращает подстроку переданного ей строкового аргумента, которая начинается с позиции, указанной вторым аргументом и длиной, указанной третьим аргументом. Если третий аргумент не указан, то подстрока продолжается до конца строки
number string-length(string?)
Возвращает число символов строкового аргумента
string normalize-space(string?)
Производит со строковым аргументом нормализацию пробельного пространства. Если аргумент опущен, выполняется со строковым значением контекстного узла
string translate (string, string, string)
Производит замену символов первого своего строкового аргумента, которые присутствуют во втором аргументе на соответствующие символы третьего аргумента

Таблица П3.4. Функции множеств узлов

Функция Описание
number last
Возвращает размер контекста вычисления выражения
number position
Возвращает позицию контекста вычисления выражения
number count(node-set)
Возвращает число узлов, которое входит во множество, переданное ей в качестве аргумента
string local-name(node-set?)
Возвращает локальную часть имени первого в порядке просмотра документа узла множества, переданного в качестве аргумента или локальную часть имени контекстного узла, если аргумент отсутствует. Если аргумент опущен, то выполняется с множеством, состоящим из контекстного узла
string namespace-uri(node-set?)
Возвращает URI пространства имен первого в порядке просмотра документа узла множества, переданного в качестве аргумента или локальную часть имени контекстного узла, если аргумент отсутствует. Если аргумент опущен, то выполняется с множеством, состоящим из контекстного узла
string name(node-set?)
Возвращает в виде
префикс:имя
расширенное имя локальную часть имени первого в порядке просмотра документа узла множества, переданного в качестве аргумента или локальную часть имени контекстного узла, если аргумент отсутствует. Если аргумент опущен, то выполняется с множеством, состоящим из контекстного узла
node-set id(object)
Возвращает множество узлов по уникальным идентификаторам

Таблица П3.5. Другие функции

Функция Описание
node-set key(string, object)
По данному имени и значению ключа возвращает множество узлов, которые им обладают
node-set document(object, node-set?)
Позволяет обращаться к внешним документам по заданным URI. Первый узел необязательного параметра
node-set
принимается за точку отсчета для относительных URI
node-set current
Возвращает текущий узел преобразования
string unparsed-entity-uri(string)
Возвращает URI неразбираемой сущности по ее имени
string generate-id(node-set?)
Возвращает уникальный строковый идентификатор первого узла переданного множества или контекстного узла, если аргумент опущен
object system-property(string)
Возвращает значение свойства, имя которого передано как аргумент

Приложение 4

Интернет-ресурсы, посвященные XSLT

Зарубежные интернет-ресурсы по XSLT

□ http://www.dpawson.co.uk/xsl/sect2/sect21.html

XSLT Questions and Answers. Большой архив вопросов и ответов по XSLT.

□ http://www.zvon.org

The Guide to the XML Galaxy. Большой репозитарий примеров, уроков и материалов для изучения XML-технологий и, в частности, XSLT.

□ http://www.datapower.com/XSLTMark/res_2001_04_01.html

XSLT Benchmarking. Тесты эффективности различных XSLT-процессоров.

□ http://www.tfi-technology.com/xml/xslbench.html

XSLT Processor Benchmarking. Тесты эффективности различных XSLT-процессоров.

□ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmconxsltfaq.asp?frame=true

Microsoft MSXML 3.0

XSLT Developer's Guide: XSLT FAQ. Вопросы и ответы об XSLT-разработке на основе библиотеки MSXML.

□ http://www.netcrucible.com/xslt/msxml-faq.htm

Unofficial MSXML XSLT FAQ. Неофициальный список вопросов и ответов по реализации XSLT в библиотеке MSXML.

□ http://www.ibiblio.org/xml/books/bible2/chapters/ch17.html

Chapter 17 of the XML Bible: XSL Transformations. Глава, посвященная XSLT из популярной книги "Библия XML".

□ http://www.biglist.com/lists/xsl-list/archives/

XSL Mailing List archives. Архив сообщений списка рассылки XSL Mailing List.

Поделиться с друзьями: