XSL помимо основных узлов xml-дерева способен обрабатывать комментарии, инструкции обработки и выводить сообщения. Достигается это с помощью инструкций xsl:comment
, xsl:processing-instruction
, xsl:message
.
Инструкция xsl:comment
Комментарии, непосредственно размещенные в шаблоне, в конечное дерево не переносятся (в отличие от фиксированных конечных элементов и текстовых узлов). Они являются комментариями исключительно для xsl-файла, в котором они размещены. Для создания комментариев в конечном дереве используется инструкция xsl:comment
.
Синтаксис:
1 2 3 | <xsl:comment> Инструкции или фиксированные конечные элементы </xsl:comment> |
Содержимое инструкции xsl:comment
определяет содержимое создаваемого комментария. Содержимым могут быть другие инструкции, фиксированные конечные элементы и текст. Если при обработке содержимого xsl:comment
создаются узлы, не являющиеся строковыми, то в зависимости от реализации процессора либо будет зафиксирована ошибка, либо неправильные узлы вместе с их содержимым будут проигнорированы и в конечное дерево не войдут. Также если результат обработки содержимого xsl:comment
содержит строку --
или заканчивается символом -
, то опять же в зависимости от реализации процессора либо будет зафиксирована ошибка, либо после каждого символа –
будет поставлен пробел (если за ним идет другой символ –
или конец строки).
Инструкция xsl:processing-instruction
Инструкции обработки, непосредственно размещенные в шаблоне, в конечное дерево не переносятся (в отличие от фиксированных конечных элементов и текстовых узлов). Они являются инструкциями обработки исключительно для xsl-файла, в котором они размещены. Если же возникает необходимость включить в конечное дерево инструкцию обработки, то для этого используется специальная инструкция xsl:processing-instruction
, которая и создает инструкцию обработки в конечном дереве.
Синтаксис:
1 2 3 4 | <xsl:processing-instruction name = "{XPath}|строка"> Инструкции или фиксированные конечные элементы </xsl:processing-instruction> |
Атрибуты:
name
– обязательный атрибут, определяет название создаваемой инструкции обработки. Его значением может быть строка или выражение XPath.
Содержимое инструкции xsl:processing-instruction
определяет содержимое создаваемой инструкции обработки (как правило, это дополнительные атрибуты инструкции обработки). Содержимым могут быть другие инструкции, фиксированные конечные элементы и текст. Например:
1 2 3 4 5 | <xsl:processing-instruction name="xml-stylesheet"> href="book.css" type="text/css" </xsl:processing-instruction> |
создаст в конечном дереве вот такую инструкцию обработки:
1 | <?xml-stylesheet href="book.css" type="text/css"?> |
Инструкцию xsl:processing-instruction
нельзя использовать для вывода XML декларации. Вместо нее для этого необходимо использовать элемент верхнего уровня xsl:output
. Если при обработке содержимого инструкции xsl:processing-instruction
создаются узлы, не являющиеся текстовыми, то в зависимости от реализации процессора либо будет зафиксирована ошибка, либо неправильные узлы вместе с их содержимым будут проигнорированы и в конечное дерево не войдут. Если результат обработки инструкции xsl:processing-instruction
содержит строку ?>
, то опять же в зависимости от реализации процессора либо будет зафиксирована ошибка, либо указанные символы будут разделены пробелом.
Инструкция xsl:message
В процессе XSLT-преобразования можно выводить сообщения. Делается это с помощью инструкции xsl:message
. Как именно эти сообщения будут выводить зависит от XSLT-процессора: это может быть модальное окно, запись в лог-файл или что-либо другое.
Синтаксис:
1 2 3 4 | <xsl:message terminate = "yes|no"> Инструкции или фиксированные конечные элементы </xsl:message> |
Атрибуты:
terminate
— определяет, должен ли процессор прервать обработку xml-документа после вывода сообщения (yes
) или нет (no
). По умолчанию берется значениеno
.