8 Повторение
<!-- Category: instruction -->
<xsl:for-each
select =
node-set-expression>
<!-- Content: (xsl:sort*,
template) -->
</xsl:for-each>
Если результат имеет известную регулярную структуру, полезно иметь возможность указать это прямо в шаблоне для собираемых узлов. Инструкция xsl:for-each
содержит шаблон, который обрабатывается для каждого узла, отобранного выражением, указанным в атрибуте select
. Атрибут select
является обязательным. Результатом обработки выражения должен быть набор узлов. При обработке шаблона выбранный узел берется в качестве текущего узла, а весь список собранных узлов берется в качестве текущего набора узлов. Узлы обрабатываются в том порядке как они следуют в документе, если нет указаний относительно сортировки (см. [10 Сортировка]).
Например, дан XML документ со следующей структурой
<customers>
<customer>
<name>...</name>
<order>...</order>
<order>...</order>
</customer>
<customer>
<name>...</name>
<order>...</order>
<order>...</order>
</customer>
</customers>
Следующий пример должен создать HTML документ, содержащий таблицу, где каждому элементу customer
отводится отдельная строка.
<xsl:template match="/">
<html>
<head>
<title>Customers</title>
</head>
<body>
<table>
<tbody>
<xsl:for-each select="customers/customer">
<tr>
<th>
<xsl:apply-templates select="name"/>
</th>
<xsl:for-each select="order">
<td>
<xsl:apply-templates/>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</tbody>
</table>
</body>
</html>
</xsl:template>
Назад |
Содержание |
Вперед