- - PR -
for-eachのselect要素で指定したタグがNULLなら表示しなくない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-28 10:35
こんにちは。XMLの仕様が中途半端だったので、嫌な現象が起こってしまいました。
XML中で繰り返されるデータをfor-eachで表形式で表示していたのですが、 データにNULLが存在したのです。下記のような感じです。 <test> <object>お茶</object> <no>1</no> </test> <test> <object>コーヒー</object> <no>2</no> </test> <test> <object></object> <no></no> </test> 現在のXSLだと、下記のようになってしまいます(汗)。 お茶は番号1です。 コーヒーは番号2です。 は番号です。 これをNULLの場合は表示させなくする方法を教えていただけないでしょうか?初歩的な質問で申し訳ありません。よろしくお願いします。 | ||||
|
投稿日時: 2005-02-28 12:18
xsl:ifでobjectに値が入っている場合だけ出力するようにすればよいのではないですか?
| ||||
|
投稿日時: 2005-02-28 13:14
ご回答ありがとうございます。
確かにxsl:ifでご指摘どおりの処理を事前に試しましたが <xsl:for-each select="test"> <xsl:if test="test/object!=''> 処理 </xsl:if> </xsl:for-each> だと、うまくいきません。おそらく <xsl:if test="test/object!=''> は<xsl:if test="test/object[1]!=''> と同様の意味のため(ですよね?)1行目のデータが 挿入されていれば残りの行にデータが無くても 表示されてしまうということには気がつきました。 <for-each>内の<xsl:if>も同じく繰り返してくれればいいのですが だめみたいです。 もう少しいいアルゴリズムがあればご教示願います。 よろしくお願いします | ||||
|
投稿日時: 2005-02-28 16:16
私の環境では <xsl:if test="object!=''"> ↑見にくい〜。 シングルクォーテーション2つとダブルクォーテーションです。 でうまくいきました。 XSLTプロセッサは何をお使いですか? ちなみにXMLにルート要素がないのは投稿の便宜上ですよね? | ||||
|
投稿日時: 2005-02-28 16:48
ご回答ありがとうございました。
>XMLにルート要素がないのは投稿の便宜上ですよね? その通りです〜。 申し訳ないです^^; で、Vacant-Eyesさんとは同様の処理を入れたはず!と思ってて でも再度試してみたらうまく行きました! どうやら中身のobject部分がおかしかったみたいです--; ありがとうございました!助かりました! |
1