xsl:for-each¶
Элемент xsl:for-each
используется для создания в выходящем документе повторяемых частей структуры.
Обязательный атрибут select
указывает выражение, результатом вычисления которого должно быть множество узлов. Шаблон, содержащийся в xsl:for-each
, будет выполнен процессором для каждого узла этого множества.
Синтаксис¶
1 2 3 |
|
Атрибуты:
select
- обязательный атрибут, указывает выражение, результатом вычисления которого должно быть множество узлов. Шаблон, содержащийся в
xsl:for-each
, будет выполнен процессором для каждого узла этого множества. В XSLT 2.0 атрибутselect
выбирает объекты, к числу которых могут относиться как атомарные значения, так и узлы.
Описание и примеры¶
Пример¶
Мы можем использовать xsl:for-each
для того, чтобы создать список гипертекстовых ссылок для документа вида.
Листинг 7.24. Входящий документ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Будем считать, что в этом документе элементы гипертекстовых ссылок а являются потомками элемента body
, который находится в элементе html
.
Листинг 7.25. Шаблон преобразования
1 2 3 4 5 6 7 8 9 |
|
Листинг 7.26. Результат преобразования
1 2 3 4 5 6 |
|
Элемент xsl:for-each
изменяет контекст преобразования. Множество узлов, возвращаемое выражением в атрибуте select
, становится текущим множеством узлов, а узел, шаблон для которого выполняется в данный момент, становится текущим узлом.
Как мы знаем, множества узлов в XSLT не имеют внутреннего порядка. Однако, обработка узлов в xsl:for-each
будет происходить в так называемом порядке просмотра документа, который зависит от того, какое выражение использовалось для вычисления обрабатываемого множества. Порядок обработки множества узлов в xsl:for-each
может быть также изменен элементами xsl:sort
, которые могут присутствовать в xsl:for-each
. Элемент xsl:sort
задает сортировку обрабатываемого множества узлов, изменяя, таким образом, порядок просмотра, что часто бывает очень полезно.
См. также¶
xsl:sort
— задает порядок сортировкиxsl:apply-templates
Ссылки¶
xsl:for-each
MDN (рус.)xsl:for-each
MSDN (en)