Элементы XSLT - XSLT elements
XSLT (Extensible Stylesheet Language Transformations) определяет множество элементов для описания преобразований, которые должны применяться к документу. В этой статье перечислены некоторые из этих элементов. Введение в XSLT см. В основной статье .
Логические элементы XSLT
Узел | Описание / атрибуты | Контейнер / дети | пример |
---|---|---|---|
xsl: применить шаблоны | Указывает, что в этом узле могут существовать другие совпадения ; если это не указано, любые совпадения будут проигнорированы. Если указан select , будут применяться только шаблоны, которые задают «совпадение», соответствующее выбранному типу узла или атрибута. Т.е. элементы, соответствующие атрибуту select в xsl: apply-templates, соответствуют шаблону, который соответствует тем же элементам. Если указан режим , будут применяться только шаблоны с одинаковым «режимом» и подходящим «соответствием». | Любой родитель. Может содержать любое количество дочерних элементов xsl: sort и xsl: with-param . |
<xsl:apply-templates/>
|
xsl: выбрать | Множество вариантов. Без атрибутов. | Любой родитель. Содержит xsl: when блоков и до одного блока xsl: else . |
<xsl:choose>
…
</xsl:choose>
|
xsl: для каждого | Создает цикл, который повторяется для каждого совпадения. select обозначает критерии соответствия. | Любой родитель. Может содержать любой XML. |
<xsl:for-each select="input[@name=$name]">
…
</xsl:for-each>
|
xsl: если | Да или нет Нет условий. test определяет критерии для входа в if. | Любой родитель. Может содержать любой XML. |
<xsl:if test="$type='text' or $type='password'">
…
</xsl:if>
|
xsl: иначе | Выбор по умолчанию, если ни один из критериев xsl: when не соблюден. | xsl: выберите . Может содержать любой XML. |
<xsl:otherwise>
…
</xsl:otherwise>
|
xsl: таблица стилей | Элемент верхнего уровня. Происходит только один раз в документе таблицы стилей. version указывает, какая версия XSLT используется. xmlns: xsl указывает URL-адрес этого стандарта. | Элемент верхнего уровня. Содержит весь XML. |
<xsl:stylesheet>
…
</xsl:stylesheet>
|
xsl: шаблон | Задает шаблоны обработки. совпадение - это когда следует использовать шаблон. name дает шаблону имя, которое xsl: call-template может использовать для вызова этого шаблона. | xsl: таблица стилей . Может содержать любой XML. |
<xsl:template match="//input">
…
</xsl:template>
|
xsl: переменная | Позволяет объявить переменную. name - это имя переменной. Позже на него можно будет ссылаться $name . select - это значение переменной.
|
Любой родитель. нет детей. |
<xsl:variable name="type" select="@type"/>
|
xsl: когда | Да или Нет условий. test определяет критерии для входа в if. | xsl: выберите . Может содержать любой XML. |
<xsl:when test="$type='radio'">
…
</xsl:when>
|
Пример таблицы стилей XSLT с использованием логических элементов
<xsl:stylesheet>
<xsl:template match="//input">
<xsl:variable name="type" select="@type"/>
<xsl:variable name="name" select="@name"/>
<xsl:if test="$type='text' or $type='password' or $type='radio' or $type='checkbox'">
<xsl:choose>
<xsl:when test="$type='radio'">
<xsl:if test="not(preceding-sibling::input[@type='radio'])">
<select name="{@name}">
<xsl:for-each select="../input[@name=$name]">
<option value="{@value}">
<xsl:apply-templates/>
</option>
</xsl:for-each>
</select>
</xsl:if>
</xsl:when>
<xsl:when test="$type='text'">
<input name="{@name}" type="{@type}">
<xsl:apply-templates/>
</input>
</xsl:when>
<xsl:when test="$type='password'">
<input name="{@name}" type="{@type}">
<xsl:apply-templates/>
</input>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Элементы ввода-вывода файла XSLT
Узел | Описание / атрибуты | Контейнер / дети | пример |
---|---|---|---|
xsl: шаблон вызова | Вызывает шаблон, имя которого указано. имя совпадает с именем в xsl: template . | Любой родитель. дочерние элементы - это xsl: with-param . |
<xsl:call-template name="lib:make-elem">
|
xsl: import | Извлекает другой файл XSLT. href - это URI файла. | xsl: таблица стилей . Нет детей. |
<xsl:import href="..\Library\FuncLib.xslt"/>
|
xsl: вывод | Описывает, как будут возвращены данные. Метод определяет , какой тип данных возвращаются. omit-xml-декларация указывает, должен ли быть включен исходный тег xml. кодировка определяет способ возврата данных. | xsl: таблица стилей . Нет детей. |
<xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8"/>
|
xsl: param | Обозначает параметр, который может быть передан в шаблон с помощью xsl: call-template . | xsl: шаблон . Нет детей. |
<xsl:param name="elem-name"/>
|
xsl: текст | Выводит содержимое тега. | Любой родитель. Нет детей. |
<xsl:text>ClaimNumber ClaimSeqNumber</xsl:text>
|
xsl: значение-из | Выводит переменную. select указывает переменную. | Любой родитель. Нет детей. |
<xsl:value-of select="$s"/>
|
xsl: with-param | Обозначает параметр, передаваемый в xsl: call-template . Ему должен соответствовать параметр xsl: param в шаблоне. name указывает имя параметра. select указывает значение параметра . | xsl: шаблон вызова . Нет детей. |
<xsl:with-param name="elem-name" select="'hma:ClaimNumber'"/>
|
XSLT на стороне клиента можно реализовать в браузере , добавив строку, подобную следующей, в исходный XML- файл сразу после корневого тега XML.
<?xml-stylesheet type="text/xsl" href="family.xsl"?>
Это описано на странице http://www.xml.com/pub/a/2000/10/25/msie/index.html.
Другая семантика XSLT
условное обозначение | смысл | где используется |
---|---|---|
|
|
оператор объединения. используется для группировки наборов узлов в выражениях XPath. | выберите атрибуты элементов, такие как xsl: when , xsl: if , xsl: for-each . |
&
|
и | любой условный критерий или критерий соответствия, например xsl: if.test , xsl: when.test , xsl: template.select и xsl: for-each.select . |
<!--
|
начать комментарий. | нигде не в теге. |
-->
|
конец комментария. | нигде не в теге. |
$
|
начало имени переменной. | в любом месте тега, например xsl: value-of.select и xsl: variable.name . |
name()
|
имя обрабатываемого тега. Полезно, если критерий соответствия содержит | s (символы вертикальной черты).
|
любой условный критерий или критерий соответствия, например xsl: if.test , xsl: when.test , xsl: template.select и xsl: for-each.select . |
@
|
атрибут в XML. | любой условный критерий или критерий соответствия, например xsl: if.test , xsl: when.test , xsl: template.select и xsl: for-each.select . |
Функции, определенные XSLT
Следующие функции могут встречаться во многих атрибутах XSLT, таких как xsl: value-of.select и xsl: for-each.select.
Функция | Описание / синтаксис | пример |
---|---|---|
потолок | Функция потолка возвращает наименьшее целое число , которое равно или больше числового значения числового аргумента. |
ceiling(3.57)
|
concat | Объединяет две или более строк. |
concat($fname, ' ', $lname)
|
содержит | Возвращает истину, если первая строка содержит вторую строку, иначе возвращает ложь. |
contains('string to search', 'find')
|
считать | Функция count подсчитывает и возвращает количество узлов в наборе узлов. |
count(elements)
|
пол | Функция floor возвращает наибольшее целое число, которое равно или меньше числового значения числового аргумента. |
floor(3.57)
|
нормализовать пространство | Удаляет пробелы из начала и конца строки |
normalize-space($fname)
|
позиция | Функция position возвращает отсчитываемый от единицы индекс текущего узла, обрабатываемого списком узлов элемента xsl: for-each или xsl: apply-templates . Нет никаких аргументов. |
position()
|
круглый | Функция round округляет число до ближайшего целого. |
round(3.57)
|
строка | Строковая функция преобразует аргумент значения в строку. |
string()
|
длина строки | Функция длины строки возвращает количество символов в строке. Строковый аргумент не является обязательным. Если он опущен, по умолчанию используется строковое значение контекстного узла. |
string-length('hello')
|
подстрока | Сегмент внутри значения переменной. Подстрока принимает три параметра: входную переменную, первый выбираемый символ и длину результирующей строки. |
substring($dob,4,2)
|
подстрока после | Функция substring-after возвращает часть строки, указанной в строковом аргументе, которая появляется после подстроки, указанной в аргументе подстроки. |
substring-after('In 1814 we took a little trip', 'we')
|
подстрока перед | Функция substring-before возвращает часть строки, указанной в строковом аргументе, которая встречается перед подстрокой, указанной в аргументе substring. |
substring-before('In 1814 we took a little trip', 'we')
|
сумма | Функция sum складывает и возвращает общее значение набора числовых значений в наборе узлов или списке значений. |
sum(1,3,7,12)
|
перевести | Принимает строку в аргументе значения, заменяет все вхождения символов в аргументе string1 на заменяющие символы в том же месте в аргументе string2 и возвращает измененную строку. |
translate('band', 'abcd', 'ABCD') = 'BAnD'
|
внешние ссылки
- Рекомендация W3C XSLT 1.0 - описывает весь синтаксис и семантику XSLT 1.0.
- Рекомендация W3C XSLT 2.0
- Справочник по элементам XSLT - от W3Schools