Язык преобразований XSL


Повторение


<!-- Category: instruction -->
<xsl:for-each
select = node-set-expression>
  <!-- Content: (xsl:sort*, template) -->
</xsl:for-each>

Если результат имеет известную регулярную структуру, полезно иметь возможность указать это прямо в шаблоне для собираемых узлов. Инструкция xsl:for-each содержит шаблон, который обрабатывается для каждого узла, отобранного , указанным в атрибуте select. Атрибут select является обязательным. Результатом обработки выражения должен быть набор узлов. При обработке шаблона выбранный узел берется в качестве , а весь список собранных узлов берется в качестве . Узлы обрабатываются в том порядке как они следуют в документе, если нет указаний относительно сортировки (см. ).

Например, дан 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>



Содержание раздела