こんばんは、アドバイスください。アイテムのリストがあります:
<List>
<Item>
<Description>Item 1</Description>
<Code>0001</Code>
</Item>
<Item>
<Description>Item 2</Description>
<Code>0002</Code>
</Item>
<Item>
<Description>Item 3</Description>
<Code>0003</Code>
</Item>
<Item>
<Description>Item 4</Description>
<Code>0004</Code>
</Item>
</List>
次のような項目を含む 3 列の表を印刷したいと思います。
| Column 1 | Column 2 | Column 3 |
==================================
| Item 1 | Item 2 | Item 3 |
----------------------------------
| Item 4 | | |
----------------------------------
以下のコードは、各アイテムのテーブル セルをレンダリングします。2 行目の列 2 と 3 のセルは表示されません。
<fo:table>
<fo:table-column width="82mm"/>
<fo:table-column width="82mm"/>
<fo:table-column width="82mm"/>
<fo:table-body>
<xsl:for-each select="/List/Item[position() mod 3 = 1]">
<fo:table-row><xsl:apply-templates select=". | following-sibling::*[3 > position()]"/></fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
<xsl:template match="Item">
<fo:table-cell><fo:block><xsl:value-of select="Description"/></fo:block></fo:table-cell>
</xsl:template>
テーブルは次のように出力されます。
| Column 1 | Column 2 | Column 3 |
==================================
| Item 1 | Item 2 | Item 3 |
----------------------------------
| Item 4 |
------------
テーブルがいっぱいに見えるように、空のテーブルセルでもレンダリングするエレガントな方法はありますか? FOP 0.95、xsl バージョン 1.0 を使用する必要があります。
前もって感謝します
ヴォイテック