в 2-D Скажем, у меня есть этот XML-узел:XSL: преобразование списка в таблицу
<items>
<item>...<item>
<item>...<item>
<item>...<item>
<item>...<item>
<item>...<item>
...
</items>
где есть N item
узлов.
Теперь я хотел бы преобразовать его в таблицу HTML с 4 столбцами. (например, если N = 12, есть 3 полные строки, а если N = 27, то есть 7 строк, последний из которых имеет 3 ячейки)
Как я мог это сделать?
Моя кишка вызов, чтобы сделать это таким образом, где {{something}}
то, что я не знаю, как реализовать:
<xsl:template match="items">
<table>
<xsl:call-template name="partition-items">
<xsl:with-param name="skip" select="0" />
</xsl:call-template>
</table>
</xsl:template>
<xsl:template name="partition-items">
<xsl:param name="skip" />
{{ if # of items in current node > $skip,
output a row,
and call partition-items($skip+4)
}}
<xsl:template />
Куски я не знаю, как реализовать, являются
- как сделать предикат для проверки # из
item
элементов в текущем узле - как получить элемент Nth
item
в текущем узле
Обновление от комментариев
Как подушечка последней строки с пустыми
<td />
элементов, так что каждая строка содержит точно хотели клетку?
Хороший вопрос, +1. См. Мой ответ на возможное кратчайшее решение, в котором даже не используется явная рекурсия. :) –
Также добавлено решение XSLT 2.0. :) –