Авторизация

Xslt рекурсия

Есть xml:

<items>
<item/>
<item/>
<item/>
<item/>
<item/>
<item/>
<item/>
...
</items>

Надо чтобы на выходе было:

<div class="table">
<div class="row">
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div>
<div class="row">
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div>
</div>

 

Тоесть надо сделать таблицу по 3 элемента в блоке row на xslt. Можно воспользоваться рекурсией xslt:

 

<div class="table">
  <xsl:call-template name="row">
  <xsl:with-param name="items" select="items" />
  </xsl:call-template>
  </div>
<xsl:template name="row"> <xsl:param name="items" /> <xsl:param name="index">0</xsl:param> <div class="row">
<xsl:apply-templates select="$items/item[(position() > $index) and (position() < $index + 4)]" />
</div>
<xsl:if test="$index < count($items)">
<xsl:call-template name="row"> <xsl:with-param name="items" select="$items" />
<xsl:with-param name="index" select="$index + 3" />
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="item">
<div class="item"></div>
</xsl:template>

[ Saitadmin.ru || с 2006 по текущий год || Санкт-Петербург ]