プロが教えるわが家の防犯対策術!

XML

<pe>
<ko>
<na> goo1 </na>
<yu> 111 </yu>
</ko>
<ko>
<na> goo2 </na>
<yu> 222 </yu>
</ko>
</pe>

のようなXMLをテーブルでXSlで

<tr>
<td>goo1 111</td>
<td>goo2 222</td>
</tr>

そして、3件の場合は、

<tr>
<td>goo1 111</td>
<td>goo2 222</td>
</tr>
<tr>
<td>goo3 333</td>
</tr>


と表したいのですが、悩んでいます…。
自分でも、いろいろ試したのですが、うまく行きません。
ご助言、宜しくお願いします…。

A 回答 (1件)

私も同じ様なものを考えて次のような手を思いつきました。



Code:A
<xsl:if test="position() mod 3 = 1">
<xsl:text disable-output-escaping="yes">&lt;tr&gt;</xsl:text>
</xsl:if>

もし位置が3で割って1余るなら <tr> を出力する

Code:B
<xsl:if test="position() mod 3 = 0">
<xsl:text disable-output-escaping="yes">&lt;/tr&gt;</xsl:text>
</xsl:if>

もし位置が3で割って余りが0ならば </tr> を出力する

上記の二つを <xsl:for-each select="ko"> 全ての ko について繰り返す

すべて終わったら Code:B をもう一度呼び出す。

サンプルは、次のページにあります。
http://skyandcloud.homedns.org/software/download …

参考URL:http://skyandcloud.homedns.org/software/download …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
大変参考になりました。

ずっと調べてたのですが、position()関係を、見落としていました…。

回答を半ば諦めてたので返信が送れました…。

今回は本当にありがとうございました。

お礼日時:2006/12/19 13:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!