- - PR -
要素の入っている最後のノードだけ別の処理をする
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-02-22 20:47
いつもお世話になっております。
ご協力お願いします。 下記のようなxmlデータがあったとして、 xml --------------------------------------------------- <a>a-01-01</a> <a>a-01-02</a> <a></a> <a></a> <a></a> --------------------------------------------------- 最後のノードだけ別のテンプレートを使用したいのですが、 何も反応してくれません。 ためしにlast()でポジションを出力してみたら、 1番目と2番目のノードに対しfalseが返されました。 2番目にtrueが返されることを期待してたのですが・・・ つまり、データのはいっていない五番目のノードが、 lastになっているようです。(あたりまえですが・・・) どうにかデータの入っている2番目のノードをlastとして、 認識させたいのですが、無理なのでしょうか? ※データの終わりが何番目かは特定できません。 「データの入っている最後のノードに最後用のテンプレートを適用」 といった具合にさせたいと思います。 ご協力お願いいたします。 [ メッセージ編集済み 編集者: fireworkss 編集日時 2007-02-22 20:54 ] |
|
投稿日時: 2007-02-22 21:23
fireworkssさん、はじめまして。
こんな感じでどうでしょうか。 ========================== <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- 出力モード --> <xsl:output method="html" encoding="Shift_JIS"/> <!-- 一般のaタグ --> <xsl:template match="a"> <xsl:apply-templates/><br/> </xsl:template> <!-- 中身のある最後のaタグ --> <xsl:template match="a[string(.)!=''][position()=last()]"> <span style="color:#ff0000"> <xsl:apply-templates/> </span><br/> </xsl:template> </xsl:stylesheet> ========================== match="a[string(.)!=''][position()=last()]" が、『要素の入っている最後のaタグ』を表します。 a[string(.)!=''] の部分で『aタグの中に要素があるもの』に絞込み、続く [position()=last()] でその中の最後のタグを表します。 |
|
投稿日時: 2007-02-23 16:28
ご返信ありがとうございます!
なるほど、、[string(.)!='']ですべて解決できました! ありがとうございました!! |
1