<xsl:stylesheet> XSLT

Корневым элементом XSLT-документа всегда является элемент xsl:stylesheet или его синоним xsl:transform.

Эти элементы полностью идентичны и различаются лишь именами.

Синтаксис

XSLT 1.0

<xsl:stylesheet
    id = "id"
    extension-element-prefixes = "tokens"
    exclude-result-prefixes = "tokens"
    version = "number">
    <!-- Содержимое: (xsl:import*, top-level-elements) -->
</xsl:stylesheet>

Атрибуты

  • versionобязательный атрибут, в котором указывается версия языка XSLT, использованная при создании этого преобразования.
  • idнеобязательный атрибут, может содержать уникальный идентификатор данного преобразования. Этот атрибут используется в тех случаях, когда преобразование включено в преобразуемый документ для его идентификации внутри этого документа.
  • extension-element-prefixesнеобязательный атрибут, перечисляет префиксы пространств имен, которые определяют элементы расширения.
  • exclude-result-prefixesнеобязательный атрибут, перечисляет префиксы пространств имен, определения которых не нужно включать в выходящий документ.

Спецификация

XSLT 2.0

<xsl:stylesheet
    id? = id
    extension-element-prefixes? = tokens
    exclude-result-prefixes? = tokens
    version = number
    xpath-default-namespace? = uri
    default-validation? = "preserve" | "strip"
    default-collation? = uri-list
    input-type-annotations? = "preserve" | "strip" | "unspecified">
    <!-- Content: (xsl:import*, other-declarations) -->
</xsl:stylesheet>

XSLT 3.0

<xsl:stylesheet
    id? = id
    version = decimal
    default-mode? = eqname | "#unnamed"
    default-validation? = "preserve" | "strip"
    input-type-annotations? = "preserve" | "strip" | "unspecified"
    default-collation? = uris
    extension-element-prefixes? = prefixes
    exclude-result-prefixes? = prefixes
    expand-text? = boolean
    use-when? = expression
    xpath-default-namespace? = uri >
    <!-- Content: (declarations) -->
</xsl:stylesheet>

Описание и примеры

Пример 1

Если преобразование, включенное в преобразуемый документ, будет иметь вид

...
<xsl:stylesheet version="1.0" id="trans"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    ...
</xsl:stylesheet>
...

то ассоциироваться с документом оно будет следующей инструкцией:

<?xml-stylesheet type="text/xsl" href="#trans"?>

Элемент xsl:stylesheet может включать следующие элементы языка XSLT:

Эти элементы называются элементами верхнего уровня, поскольку они могут находиться на самом верхнем (не считая уровня корневого элемента) уровне в иерархии элементов документа. Более того, все перечисленные элементы кроме xsl:variable и xsl:param должны находиться только на верхнем уровне. Элементы xsl:variable и xsl:param могут использоваться в шаблонах, определяя локальные переменные и параметры.

Если преобразование импортирует внешние модули, первыми дочерними элементами xsl:stylesheet должны быть элементы xsl:import. Иначе говоря, элементам xsl:import внутри xsl:stylesheet должны предшествовать только другие элементы xsl:import. Порядок всех остальных дочерних элементов xsl:stylesheet не имеет значения.

Помимо элементов верхнего уровня, xsl:stylesheet может содержать элементы других, но обязательно ненулевых пространств имен. Это позволяет включать в преобразования любую сопутствующую информацию, правда спецификация оговаривает, что такого рода элементы не должны изменять поведение элементов и функций самого XSLT.

Пример 2

Листинг 4.1. Преобразование с элементом верхнего уровня, не принадлежащим XSLT

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <source xmlns="http://www.a.com/XSL/source">
        Simple stylesheet
    </source>
    <xsl:template match="/">
        <root/>
    </xsl:template>
</xsl:stylesheet>

На листинге 4.1 элемент source принадлежит пространству имен с URI http://www.a.com/XSL/source. Поскольку пространство имен этого элемента ненулевое, такое объявление является корректным.

См. также

Ссылки

MDN xsl:stylesheet на MDN
MSDN xsl:stylesheet на MSDN