' последовательно ('--') и оканчиваться на '-'. Поэтому наличие таких последовательностей символов в тексте комментария будет являться в XSLT ошибкой. Для того чтобы избежать некорректного синтаксиса, процессор может разделять два последовательных минуса пробелом (заменять '--' на '- -') или добавлять пробел после завершающего минуса комментария.

Пример

Элемент:

<xsl:comment>&#xA; | Please remove this later&#xA; +</xsl:comment>

создаст комментарий:

<!--

 | Please remove this later

 +-->

Элемент xsl:processing-instruction

Синтаксис элемента представлен ниже:

<xsl:processing-instruction

 name='{имя}'>

 <!-- Содержимое: шаблон -->

</xsl:processing-instruction>

Элемент xsl:processing-instruction создает в результирующем дереве узел инструкции по обработке. Обязательный атрибут name определяет имя целевого приложения, которому будет адресована инструкция по обработке. В этом атрибуте может быть указан шаблон значения атрибута.

Пример

Элемент:

<xsl:processing-instruction name='servlet'>

 <xsl:text>links='follow' session-timeout='7200000'</xsl:text>

</xsl:processing-instruction>

создаст в выходящем документе инструкцию по обработке вида:

<?servlet links='follow' session-timeout='7200000'?>

Содержимым создаваемой инструкции по обработке является результат выполнения шаблона, содержащегося внутри элемента xsl:processing- instruction. Этот результат должен содержать только текстовые узлы, в противном случае процессор может либо выдать ошибку, либо проигнорировать нетекстовые узлы вместе с их содержимым.

Инструкция по обработке не может содержать последовательности символов '?>', поскольку это было бы некорректно с точки зрения синтаксиса XML.

В случае, если результат выполнения шаблона содержит такую комбинацию, процессор может либо выдать ошибку, либо разделить символы '?' и '>' пробелом:'? >'.

Имя инструкции по обработке, должно быть корректным XML-именем (но не равным при этом 'xml' в любом регистре символов). Например, следующее определение будет совершенно корректным:

<xsl:processing-instruction name='_'>

 <xsl:text>logout _</xsl:text>

</xsl:processing-instruction>

В результате получится следующая инструкция: <?_ logout _?>

Для того чтобы создать в выходящем XML-документе инструкцию xml-stylesheet, которая используется для связывания документов со стилями и преобразованиями, можно воспользоваться следующим определением:

<xsl:processing-instruction name='xml-stylesheet'>

 <xsl:text>href='style.xsl' type='text/xsl'</xsl:text>

</xsl:processing-instruction>

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

<?xml-stylesheet href='style.xsl' type='text/xsl'?>

Элемент xsl:processing-instruction не может создать декларацию XML, несмотря на то, что с точки зрения синтаксиса (но не семантики) она имеет форму инструкции по обработке. Для вывода XML-декларации следует использовать элемент xsl:output.

Копирование узлов

Преобразование может включать в себя не только создание новых, но и копирование существующих узлов. Для этого можно использовать элементы xsl:copy и xsl:copy-of, использование которых будет подробно разобрано ниже.

Элемент xsl:copy

Ниже представлена синтаксическая конструкция этого элемента:

<xsl:copy

 use-attribute-sets = 'наборы атрибутов'>

 <!-- Содержимое: шаблон -->

</xsl:copy>

Элемент xsl:copy создает копию текущего узла вне зависимости от его типа. Вместе с текущим узлом в выходящее дерево копируются только узлы пространств имен, ассоциированные с ним. Дочерние узлы и узлы атрибутов в выходящий документ не копируются.

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

Пример

Предположим, что в каждый элемент преобразовываемого документа нам нужно добавить атрибут element-count со значением, равным количеству его дочерних элементов, а все остальные узлы оставить, как есть.

Листинг 7.17. Входящий документ

<а> text

 <b attr='value'/>

 <c/>

 <d>

  text

  <e/>

 </d>

</a>

Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

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