- - PR -
[xslt]文字列を使った条件分岐
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-04-03 15:08
いつもお世話になっております。
すみれと申します。 以下のようなxml文書Aがあり、Bのように結果を出したいのですが、 when以下の処理でつまづいてしまっています。 (コンテキストノードをつかめていません。。) どなたかお力を貸していただけないでしょうか。 よろしくお願いいたします。 ■xmlA <?xml version="1.0" encoding="UTF-8"?> <doc> <配列>"1, 3"</配列> <数>4</数> <li id="1">a</li> <li id="2">b</li> <li id="3">c</li> </doc> ■結果B <?xml version="1.0" encoding="UTF-8"?> <p> <span class="highlight">a</span> </p> <p> <span>b</span> </p> <p> <span class="highlight">c</span> </p> ■未完成xslt
| ||||
|
投稿日時: 2009-04-04 00:42
とりあえず,比較する文字列をconcatを使って生成すると,
一応,目的の出力になると思います。 <xsl:when test="starts-with(/doc/配列, '"$id, ')"> ↓ <xsl:when test="starts-with(/doc/配列, concat('"',$id,','))"> <xsl:when test="contains(/doc/配列, ', $id"')"> ↓ <xsl:when test="contains(/doc/配列, concat(',',$id,'"'))"> なお,highlightにするかどうかの属性を付け加えると, xslは簡単になりますね。 <li id="1" hg="1">a</li> <li id="2" hg="0">b</li> | ||||
|
投稿日時: 2009-04-09 10:49
naderaさん
書き込みをありがとうございます! 書き込みいただいたxsltで試してみたのですが、残念ながらうまくいきませんでした。 また元のソースに属性を加えられたら解決するのですが、それができない状況です。。 text()を使ったり等、引き続きチャレンジしてみます! | ||||
|
投稿日時: 2009-04-09 14:29
解決いたしました。
docテンプレートを修正して、処理用テンプレートを追加しました。 ありがとうございました。 1.docテンプレートからcall-templateで処理用のテンプレートを呼び出す。 2.concatでid属性と文字列をつなげる。 3.条件と一致したら、highlightの処理をさせる。
[ メッセージ編集済み 編集者: すみれ 編集日時 2009-04-09 14:31 ] |
1