こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

tableを3段組みにしてsortをかけたい

下記のxsltによってtableを3段組にしています。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<title>test</title>
<body>
<table border="1">
<xsl:apply-templates select="cate/tea/name[position() mod 3 = 1]"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="cate/tea/name">
<tr>
<td><xsl:value-of select="."/></td>
<td><xsl:value-of select="following-sibling::name[1]"/></td>
<td><xsl:value-of select="following-sibling::name[2]"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>

こんな感じの出力です。
<table>
<tr>
<td>あかぎ</td>
<td>さとみ</td>
<td>ゆめお</td>
</tr>
<tr>
<td>かさお</td>
<td>らの</td>
<td>でお</td>
</tr>
省略
</table>

xmlは下記です。
<cate>
<tea>
<name>あかぎ</name>
<name>さとみ</name>
<name>ゆめお</name>
<name>かさお</name>
<name>らの</name>
<name>でお</name>
<name>くる</name>
<name>もも</name>
<name>しょう</name>
<name>さめお</name>
<name>たさお</name>
<name>うらの</name>
<name>こでお</name>
<name>さくる</name>
<name>れもも</name>
<name>きょう</name>
</tea>
</cate>

この3段組みをしたまま、
nameを名前順にソートしたいのですが、
うまくいきません。
あかぎ、かさお、くる、といった左の列内だけで、
ソートされてしまい、次にそれぞれの後続の兄弟ノードが、
真ん中の列にでてしまいます。

ちゃんと、xmlデータ順(あかぎ、さとみ、ゆめお、かさお・・・)に3段組みを表現したいのですが、
無理なのでしょうか。

どなたかご協力お願いします。

投稿日時 - 2007-04-17 01:49:34

QNo.2927450

すぐに回答ほしいです

質問者が選んだベストアンサー

頑張って考えたけど、ギブアップです。ごめんなさい。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=17942&forum=9&4

>ITEMでposition()を表示した場合は、ソート順の位置を持っているようですが、X,Yからancestor::DATA/ITEMで指定するposition()は元の文書上の位置のようです。

こんなの知るかあ・・・orz

http://www.mothprog.com/prog/xslt2/xslt3.html

>このように、段階を踏む処理をするには、 XSLTスタイルシートで結果として構成されたツリーに対して、さらに処理を与える必要があります。ところが、これまでは一つのXSLTスタイルシートで多段階の処理をすることはできませんでした;XSLTの処理結果(result tree fragment)が代入不能だったからです。

うーん。やっぱりfor-eachの後の結果は利用できないorz

投稿日時 - 2007-04-17 04:43:43

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問