Книга: Технология XSLT
Тело шаблона
Тело шаблона
Фактически, элемент xsl:template
, определяющий шаблонное правило, задает не более чем условия, при которых это правило должно выполняться. Конкретные же действия и инструкции, которые должны быть исполнены, определяются содержимым элемента xsl:template
и составляют тело шаблона.
Пример
Тело следующего шаблона (выделенное полужирным шрифтом):
<xsl:template match="page">
<body>
<xsl:value-of select="."/>
</body>
Комментарии
<xsl:copy-of select="comment()"/>
</xsl:template>
состоит из литерального элемента body
, текстового узла и элемента xsl:copy-of
. При выполнении этого шаблона элемент body
будет выведен как есть (при этом содержимое его будет вычислено); текстовый узел будет скопирован в выходящее дерево; элемент xsl:copy-of
будет заменен множеством дочерних комментариев текущего узла.
Следует заметить, что текстовый узел в данном случае состоит не только из строки "Комментарии". Он включает также все пробельные символы и символы переноса строки.
Тело шаблона может быть также и пустым. В этом случае результат обработки узлов, соответствующих этому шаблону будет пустым. Например, если в преобразовании содержится шаблон вида
<xsl:template match="comment()"/>
то каждый раз, встретив узел комментария и обрабатывая его этим правилом, процессор будет получать пустой результат. Таким образом, используя пустые шаблоны совместно с идентичным преобразованием можно добиться эффекта удаления определенных узлов из шаблона, как это было показано ранее в этой главе.
Тело шаблона может содержать любые текстовые узлы, комментарии, инструкции по обработке и литеральные элементы результата при условии, что не будет нарушен синтаксис XML-документа. Тело шаблона может также содержать следующие элементы XSLT, называемые также инструкциями (не путать с инструкциями по обработке):
? xsl:apply-imports
;
? xsl:apply-templates
;
? xsl:attribute
;
? xsl:call-template
;
? xsl:choose
;
? xsl:comment
;
? xsl:copy
;
? xsl:copy-of
;
? xsl:element
;
? xsl:fallback
;
? xsl:for-each
;
? xsl:if
;
? xsl:message
;
? xsl:number
;
? xsl:param
;
? xsl:processing-instruction
;
? xsl:text
;
? xsl:value-of
;
? xsl:variable
.
Элементы xsl:param
и xsl:variable
, которые входят в этот список в преобразовании, могут быть как элементами верхнего уровня, так и инструкциями. В первом случае они определяют глобальные параметры и переменные, во втором — локальные.
Если элементы xsl:param
используются для определения локальных переменных, они должны быть первыми дочерними элементами xsl:template
, то есть, строго говоря, определение
<xsl:template name="page">
<xsl:text>Text</xsl:text>
<xsl:param name="foo"/>
</xsl:template>
будет некорректным. На самом деле многие процессоры игнорируют эту ошибку, вполне разумно считая, что ничего смертельного в ней нет. Но, конечно, лучше использовать стандартный вариант:
<xsl:template name="page">
<xsl:param name="foo"/>
<xsl:text>Text</xsl:text>
</xsl:template>
- Структура шаблона
- Сохранение и использование шаблона узла
- Создание рабочей области для собраний с использованием шаблона
- Пример использования шаблона «Выводы – рекомендации»
- Повторяем части шаблона
- Пользуйтесь шаблонами
- Тело стрекозы Система, которая держит ее в воздухе
- Телесная когниция: тело тоже умеет думать
- Блокировка локальных и удаленных сценариев WSH. Пример административного шаблона
- Пример: параллельный поиск указанного текстового шаблона
- Создание и импортирование шаблона безопасности
- Создание шаблона безопасности