шаблонN

 </xsl:when>

 <xsl:otherwise>

  шаблонМ

 </xsl:otherwise>

</xsl:choose>

Циклическая обработка

Элемент xsl:for-each

Конструкция этого элемента такова:

<xsl:for-each

 select='выражение'>

 <!-- Содержимое: несколько элементов xsl:sort, шаблон -->

</xsl:for-each>

Элемент xsl:for-each используется для создания в выходящем документе повторяемых частей структуры. Обязательный атрибут select указывает выражение, результатом вычисления которого должно быть множество узлов. Шаблон, содержащийся в xsl:for- each, будет выполнен процессором для каждого узла этого множества.

Пример

Мы можем использовать xsl:for-each для того, чтобы создать список гипертекстовых ссылок для документа вида.

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

<html>

 <head>

  <title>I'm just a simple page...</title>

 </head>

 <body>

  Please visit <a href='http://www.aaa.com'>this link</a>.

  Or <a href='http://www.bbb.com'>this one</a>.

  Or visit <a href='http://www.ccc.com'>this site</a>.

  Or click <a href='http://www.ddd.com'>here</a>.

 </body>

</html>

Будем считать, что в этом документе элементы гипертекстовых ссылок а являются потомками элемента body, который находится в элементе html.

Листинг 7.25. Шаблон преобразования

<xsl:template match='/'>

 <links>

  <xsl:for-each select='/html/body//a'>

   <a href='{@href}'>

    <xsl:value-of select = '@href'/>

   </a>

  </xsl:for-each>

 </links>

</xsl:template>

Листинг 7.26. Результат преобразования

<links>

 <a href='http://www.aaa.com'>http://www.aaa.com</a>

 <a href='http://www.bbb.com'>http://www.bbb.com</a>

 <a href='http://www.ccc.com'>http://www.ccc.com</a>

 <a href='http://www.ddd.com'>http://www.ddd.com</a>

</links>

Элемент xsl:for-each изменяет контекст преобразования. Множество узлов, возвращаемое выражением в атрибуте select, становится текущим множеством узлов, а узел, шаблон для которого выполняется в данный момент, становится текущим узлом.

Как мы знаем, множества узлов в XSLT не имеют внутреннего порядка. Однако, обработка узлов в xsl:for-each будет происходить в так называемом порядке просмотра документа, который зависит от того, какое выражение использовалось для вычисления обрабатываемого множества. Порядок обработки множества узлов в xsl:for-each может быть также изменен элементами xsl:sort, которые могут присутствовать в xsl:for-each. Элемент xsl:sort задает сортировку обрабатываемого множества узлов, изменяя, таким образом, порядок просмотра, что часто бывает очень полезно.

Глава 8

Дополнительные элементы и функции языка XSLT

Дополнительные элементы и функции

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

К дополнительным элементам XSLT мы отнесем следующие:

□ xsl:preserve-space и xsl:strip-space — работа с пробельными символами;

□ xsl:message — сообщения процессора;

□ xsl:sort — сортировка множеств перед обработкой;

□ xsl:namespace-alias — определение псевдонимов пространств имен;

□ xsl:key — определение ключей;

□ xsl:number — нумерация;

□ xsl:decimal-format — определение десятичного формата;

□ xsl:output — контроль сериализации.

В XSLT также определяются дополнительные функции, расширяющие базовую библиотеку функций XPath:

□ key — использование ключей;

□ format-number — форматирование чисел;

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

0

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

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