Перейти к содержанию

xsl:transform

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

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

Синтаксис

1
2
3
4
5
6
7
8
<xsl:transform
  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
необязательный атрибут, перечисляет префиксы пространств имен, определения которых не нужно включать в выходящий документ.

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

Пример 1

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

1
2
3
4
5
6
...
<xsl:transform version="1.0" id="trans"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    ...
</xsl:transform>
...

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

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

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

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

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

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

Пример 2

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<xsl:transform
  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:transform>

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

См. также

Ссылки

Комментарии