XSLT e XSL-FO: Criando uma tabela com várias linhas?
Sou bastante novo no XSLT e estou com um problema em que tenho um elemento com uma quantidade desconhecida de filhos, e preciso exibi-los em uma tabela para que haja de 5 a 6 colunas disponíveis para exibir as informações.
Se eu receber um arquivo XML parecido com este:
<books>
<book>
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
</book>
<book>
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
</book>
<book>
<author>Corets, Eva</author>
<title>Oberon's Legacy</title>
</book>
<book>
<author>Randall, Cynthia</author>
<title>Lover Birds</title>
</book>
<book>
<author>Thurman, Paula</author>
<title>Splish Splash</title>
</book>
<book>
<author>Knorr, Stefan</author>
<title>Creepy Crawlies</title>
</book>
<book>
<author>Kress, Peter</author>
<title>Paradox Lost</title>
</book>
<book>
<author>Crichton, Michael</author>
<title>Jurassic Park</title>
</book>
<book>
<author>Orwell, George</author>
<title>1984</title>
</book>
<book>
<author>Martin, George</author>
<title>A Song of Ice And Fire</title>
</book>
</books>
Gostaria de exibir esses 10 livros em uma tabela composta por duas linhas e cinco colunas.
Cheguei até aqui:
<xsl:template match="books" mode="table">
<fo:table margin-left="auto" margin-right="auto">
<fo:table-body>
<fo:table-row table-layout="fixed">
<xsl:for-each select="skill">
<fo:table-cell border="1">
<fo:block font-weight="bold">
<xsl:value-of select="name"/>
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:template>
Mas tudo o que isso fará é colocar todas as células na mesma linha. Estou procurando uma maneira de verificar se o loop foi executado uma certa quantidade de vezes (5 ou 6) e inserindo uma nova linha quando isso acontecer, mas não sei se é algo que posso fazer no XSL.
Alguém pode me apontar na direção certa?