XSLT-элементы
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2014 г. ) |
XSLT (преобразования расширяемого языка таблиц стилей) определяет множество элементов для описания преобразований, которые следует применить к документу. В этой статье перечислены некоторые из этих элементов. Введение в XSLT смотрите в основной статье .
Логические элементы XSLT
[ редактировать ]Узел | Описание/атрибуты | Контейнер/дети | Пример |
---|---|---|---|
xsl: применить-шаблоны | могут существовать другие совпадения Указывает, что внутри этого узла ; если это не указано, любые совпадения будут игнорироваться. Если select указан , будут применяться только те шаблоны, которые определяют «соответствие», соответствующее выбранному узлу или типу атрибута. Т.е. элементы, соответствующие атрибуту select в xsl:apply-templates, соответствуют шаблону, соответствующему тем же элементам. Если указан режим , будут применены только шаблоны, имеющие тот же «режим» и соответствующее «совпадение». | Любой родитель. Может содержать любое количество дочерних элементов xsl:sort и xsl:with-param . | <xsl:apply-templates/>
|
xsl:выбрать | Множественный выбор. Никаких атрибутов. | Любой родитель. Содержит блоки xsl:when и до одного блока xsl:otherwise . | <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:шаблон | Задает шаблоны обработки. match — это момент, когда следует использовать шаблон. 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: импорт | Получает другой файл XSLT. href — это URI файла. | xsl:таблица стилей . Никаких детей. | <xsl:import href="..\Library\FuncLib.xslt"/>
|
xsl:вывод | Описывает, как будут возвращены данные. Метод определяет, какие данные возвращаются. omit-xml-declaration указывает, следует ли включать начальный тег xml. кодировка определяет, как возвращаются данные. | xsl:таблица стилей . Никаких детей. | <xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8"/>
|
xsl:параметр | Обозначает параметр, который можно передать в шаблон с помощью xsl:call-template . | xsl: шаблон . Никаких детей. | <xsl:param name="elem-name"/>
|
xsl:текст | Выводит содержимое тега. | Любой родитель. Никаких детей. | <xsl:text>ClaimNumber ClaimSeqNumber</xsl:text>
|
xsl:значение-из | Выводит переменную. select указывает переменную. | Любой родитель. Никаких детей. | <xsl:value-of select="$s"/>
|
xsl: с параметром | Обозначает параметр, передаваемый в 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($fname, ' ', $lname)
|
содержит [2] | Возвращает true, если первая строка содержит вторую строку, в противном случае возвращает false. | contains('string to search', 'find')
|
считать | Функция count подсчитывает и возвращает количество узлов в наборе узлов. | count(elements)
|
пол | Функция Floor возвращает наибольшее целое число, которое равно или меньше числового значения аргумента числа. | floor(3.57)
|
нормализовать пространство | Удаляет пробелы в начале и конце строки | normalize-space($fname)
|
позиция | Функция позиции возвращает значение, основанное на единице. [3] индекс текущего узла, обрабатываемого 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-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