</xsl:for-each>
Если результат имеет известную регулярную структуру, полезно иметь возможность указать это прямо в шаблоне для собираемых узлов. Инструкция
Например, дан XML документ со следующей структурой
<customers>
<customer>
<name>…</name>
<order>…</order>
<order>…</order>
</customer>
<customer>
<name>…</name>
<order>…</order>
<order>…</order>
</customer>
</customers>
Следующий пример должен создать HTML документ, содержащий таблицу, где каждому элементу
<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>
9 Обработка с условием
В XSLT в шаблоне обработку с условием поддерживают две инструкции:
9.1 Обработка с условием
<!– Category: instruction ->
<xsl:if
test = boolean-expression >
<!– Content: template ->
</xsl:if>
Элемент
<xsl:template match='namelist/name'>
<xsl:apply-templates/>
<xsl:if test='not(position()=last())'>, </xsl:if>
</xsl:template>
В следующем примере каждый второй ряд таблицы раскрашивается желтым:
<xsl:template match='item'> <tr>
<xsl:if test='position() mod 2 = 0'>
<xsl:attribute name='bgcolor'>yellow</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</tr>
</xsl:template>