Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
«Причём, если для шаблона используется mode, то дочерние узлы тоже будут преобразовываться с этим mode»
<xsl:template match="items" mode="table">
<xsl:variable name="$cols" />
<table>
<xsl:for-each select="item[position() mod $cols] = 1">
<tr>
<xsl:for-each select=".|following-sibling::items[position() < $cols]">
<td>
<xsl:apply-templates select="." mode="table-cell" />
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
Дело вкуса и стиля программирования.
Я всё ещё собираю подобные советы, т.ч. если у вас есть, что добавить, обязательно отпишитесь в комментах.
Самое веселое, что мне доводилось делать в XSLT — это реализация циклов от X до Y. Можно показать их рекурсивную реализацию
Производительный и читабельный XSLT: сборник советов