Шаблоны можно вызывать по имени. Именованный шаблон задается элементом xsl:template с атрибутом name. Значением атрибута является имя name QName, которое приводится к расширенному имени как описано в главе [2.4 Полные имена]. Если элемент xsl:template имеет атрибут name, то он может, но не обязан, иметь также атрибут match. Элемент xsl:call- template вызывает шаблон по имени, он содержит обязательный атрибут name, идентифицирующий шаблон, который должен быть вызван. В отличие от xsl:apply-templates, xsl:call-template не меняет текущий узел и текущий набор узлов.

Атрибуты match, mode и priority в элементе xsl:template не зависят от того, был ли этот шаблон вызван элементом xsl:call-template. Точно так же атрибут name в элементе xsl:template не зависит от того, был ли этот шаблон вызван элементом xsl:apply-templates.

Если стиль содержит более одного шаблона с одним и тем же названием, а также одним и тем же приоритетом импорта, фиксируется ошибка.

7 Создание конечного дерева

В этой главе описываются инструкции, непосредственно создающие узлы в конечном дереве.

7.1 Создание элементов и атрибутов

7.1.1 Фиксированные конечные элементы

В шаблоне элемент из стиля, который не принадлежит пространству имён XSLT и не является элементом расширения (см. [14.1 Элементы расширения]), обрабатывается, чтобы создать узел элемента с тем же расширенным именем. Содержимое этого элемента является шаблоном, который обрабатывается чтобы получить содержимое для созданного узла элемента. Узел созданного элемента будет иметь те узлы атрибутов, которые были представлены в дереве стиля в узле данного элемента, а не атрибутов с названиями из пространства имён XSLT.

Созданный узел элемента будет также иметь копию узлов для пространства имён, которые присутствовали в узле элемента в дереве стиля, за исключением тех узлов пространства имён, чьим строковым значением является URI пространства имён XSLT (http://www.w3.org/1999/XSL/Transform), URI пространства имён, декларированного как пространство расширения (см. [14.1 Элементы расширения]), или URI пространства имён, обозначенного как исключенное. URI пространства имён обозначается как исключенное с помощью атрибута exclude-result-prefixes в элементе xsl:stylesheet или атрибута xsl:exclude-result-prefixes в фиксированном конечном элементе. Значением обоих этих атрибутов является перечень префиксов пространства имён, разделенных пробельным символом. Пространство имён, связанное с каждым из этих префиксов, обозначается как исключенное. Если с префиксом элемента, имеющего атрибут exclude-result-prefixes или xsl:exclude-result-prefixes, не связано никакого пространства имён, фиксируется ошибка. Пространство имён по умолчанию, декларированное с помощью xmlns, может быть обозначено как исключенное если в соответствующий список префиксов пространства имён включить #default . Объявление пространства имён в качестве исключенного действует в том поддереве стиля, которое начинается с элемента, имеющего данный атрибут exclude-result-prefixes или xsl:exclude-result-prefixes. Поддерево, начинающееся с элемента xsl:stylesheet, не включает стили, импортированные или включенные непосредственным потомком этого элемента xsl:stylesheet.

Замечание: Если стиль использует декларацию пространства имён только для адресации в исходном дереве, то указание этого префикса в атрибуте exclude-result- prefixes позволит избежать появления в конечном дереве ненужных деклараций пространства имён.

Значение атрибута в фиксированном конечном элементе интерпретируется как шаблон значения атрибута: он может содержать выражения, заключённые в фигурные скобки ({}).

uri пространства имён в дереве стиля, которое используется для определения URI пространства имён в конечном дереве, называется фиксированным URI пространства имён. Это относится к:

URI пространства имён в расширенном имени фиксированного конечного элемента в этом стиле

URI пространства имён в расширенном имени атрибута, указанного в фиксированном конечном элементе в стиле

строковому значению узла пространства имён в фиксированном конечном элементе в стиле

<!– Category: top-level-element ->

<xsl:namespace-alias

stylesheet-prefix = prefix | «#default»

result-prefix = prefix | «#default» />

Чтобы декларировать, что один URI пространства имён является синонимом другого uri пространства имён, в стиле может использоваться элемент xsl:namespace-alias . Если 1

  • « ...
  • 13
  • 14
  • 15
  • 16
  • » ...
  • 55
  • Добавить отзыв
    ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

    0

    Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

    Отметить Добавить цитату