Книга: Технология XSLT
Элемент xsl:for-each
Разделы на этой странице:
Элемент 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
задает сортировку обрабатываемого множества узлов, изменяя, таким образом, порядок просмотра, что часто бывает очень полезно.
- Элементы , и
- Элемент : создание наборов атрибутов
- Сортирующие элементы
- Элемент xsl:sort
- Элемент xsl:fallback
- Элемент
- Элемент xsl:value-of
- Forced writes - палка о двух концах
- Forced Writes
- Создание свободно позиционируемых элементов
- 6.4. Рабочий лист Excel и его структурные элементы
- Chapter 15. Graphical User Interfaces for Iptables