3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
В данном случае элемент xsl:value-of
используется для вычисления произведения переменных a
и b
. Численный результат преобразуется в строку и выводится в выходящий документ в виде текста.
Равно, как и xsl:text
, элемент xsl:value-of
может иметь атрибут disable-output-escaping
, полезный для вывода специальных символов, которые в противном случае были бы заменены сущностями.
Пример
Результатом выполнения элемента
будет текстовый узел
Divide & impera
Чтобы придать амперсанту более привычный вид, мы можем использовать атрибут disable-output-escaping
:
select="concat('Divide ', '&', ' impera')"
disable-output-escaping="yes"/>
Результатом выполнения этого шаблона уже будет текст:
Divide & impera
Создание узлов комментариев и инструкций по обработке
Этот элемент задается конструкцией вида:
Элемент xsl:comment
создает в результирующем дереве узел комментария. Текстом комментария становится результат выполнения шаблона, который содержится в элементе xsl:comment
.
Точно так же как и в случае с xsl:processing-instruction
, результат выполнения шаблона должен содержать только текстовые узлы. Узлы других типов будут либо проигнорированы, либо вызовут ошибку.
В соответствии с синтаксисом XML, комментарий в XML не может содержать двух знаков " -
" последовательно (" --
") и оканчиваться на " -
". Поэтому наличие таких последовательностей символов в тексте комментария будет являться в XSLT ошибкой. Для того чтобы избежать некорректного синтаксиса, процессор может разделять два последовательных минуса пробелом (заменять " --
" на " - -
") или добавлять пробел после завершающего минуса комментария.
Пример
Элемент:
| Please remove this later +
создаст комментарий:
Элемент xsl:processing-instruction
Синтаксис элемента представлен ниже:
name="{ имя }">
Элемент xsl:processing-instruction
создает в результирующем дереве узел инструкции по обработке. Обязательный атрибут name определяет имя целевого приложения, которому будет адресована инструкция по обработке. В этом атрибуте может быть указан шаблон значения атрибута.
Пример
Элемент:
links="follow" session-timeout="7200000"
создаст в выходящем документе инструкцию по обработке вида:
Содержимым создаваемой инструкции по обработке является результат выполнения шаблона, содержащегося внутри элемента xsl:processing- instruction
. Этот результат должен содержать только текстовые узлы, в противном случае процессор может либо выдать ошибку, либо проигнорировать нетекстовые узлы вместе с их содержимым.
Инструкция по обработке не может содержать последовательности символов " ?>
", поскольку это было бы некорректно с точки зрения синтаксиса XML.
В случае, если результат выполнения шаблона содержит такую комбинацию, процессор может либо выдать ошибку, либо разделить символы " ?
" и " >
" пробелом:" ? >
".
Имя инструкции по обработке, должно быть корректным XML-именем (но не равным при этом " xml
" в любом регистре символов). Например, следующее определение будет совершенно корректным:
logout _
В результате получится следующая инструкция:
Для того чтобы создать в выходящем XML-документе инструкцию xml-stylesheet
, которая используется для связывания документов со стилями и преобразованиями, можно воспользоваться следующим определением:
href="style.xsl" type="text/xsl"
Результирующий документ будет содержать инструкцию по обработке в виде:
Элемент xsl:processing-instruction
не может создать декларацию XML, несмотря на то, что с точки зрения синтаксиса (но не семантики) она имеет форму инструкции по обработке. Для вывода XML-декларации следует использовать элемент xsl:output
.
Преобразование может включать в себя не только создание новых, но и копирование существующих узлов. Для этого можно использовать элементы xsl:copy
и xsl:copy-of
, использование которых будет подробно разобрано ниже.
Ниже представлена синтаксическая конструкция этого элемента:
use-attribute-sets = " наборы атрибутов ">
Читать дальше