ページ 1 / 1
xsl:ifで複数の条件を指定したい場合
Posted: 2006年12月04日(月) 16:11
by ifeel
こんにちは。
リファレンスマニュアルの「データ値の内容によって処理を変える」を
参考にして、画像がない場合は○○を表示、などの処理を行えるようになったのですが、
「画像1と画像2と画像3がない場合」のように複数の条件を指定したい場合はどのようにすればよいでしょうか?
具体的には
<p>
<xsl:if test="img1/text()"><img src="{img1}" /></xsl:if>
<xsl:if test="img2/text()"><img src="{img2}" /></xsl:if>
<xsl:if test="img3/text()"><img src="{img3}" /></xsl:if>
</p>
となっている時に、画像1〜3全てがない場合、空の<p>タグだけが
残ってしまうため、3つとも画像がない場合は<p>タグごと非表示にしたいのです。
適当に<xsl:if test="img01&img02/text()">など試してみましたが
当然動かず

またこちらでアドバイスをいただければと書き込みさせていただきました。お手数ですがよろしくお願いいたします。
Posted: 2006年12月05日(火) 09:50
by tsu
ifeelさん
うまく動くか分かりませんが、、、、、。
img1/img2/img3のいずれかが存在していれば〜という条件になってると思います。多分。
コード: 全て選択
<xsl:if test="img1/text() or img2/text() or img3/text()">
<p>
<xsl:if test="img1/text()"><img src="{img1}" /></xsl:if>
<xsl:if test="img2/text()"><img src="{img2}" /></xsl:if>
<xsl:if test="img3/text()"><img src="{img3}" /></xsl:if>
</p>
</xsl:if>
画像一つ一つをPタグでくくるのであれば、
コード: 全て選択
<xsl:if test="img1/text()"><p><img src="{img1}" /></p></xsl:if>
<xsl:if test="img2/text()"><p><img src="{img2}" /></p></xsl:if>
<xsl:if test="img3/text()"><p><img src="{img3}" /></p></xsl:if>
なるほど!
Posted: 2006年12月05日(火) 10:34
by ifeel
tsuさんへ
アドバイスありがとうございます!
無事思った通りの結果になりました。
そうゆう記述の仕方なのですね。
しかも考え方として and ではなく
「どれかが存在していれば」なので or だったのですね。
試しに、or をandに変えたてみたら
画像が3つないとPタグごと消えてしまいました・・・。
これを知っていると、他にも色々と応用できそうです。
とても良い勉強になりました、ありがとうございました!

Posted: 2006年12月05日(火) 11:08
by tsu
ifeelさん
無事に動いて良かったです
他にも色々XPathについて書かれている記事がありますので参考にどうぞ。
http://www.utj.co.jp/XML/dev/xslt/xslt3_1.html
Posted: 2006年12月11日(月) 01:07
by webmaster
webmasterです。ifeelさん、ご質問ありがとうございました。
また、tsuさん、ご回答大変助かります。
andやorについてはXSLTの高度な使い方だと位置づけ、マニュアルでは解説して
おりませんでしたが、そのせいでご面倒をおかけしたようで申し訳ありませんでした。
仰る通り、andとorを使いこなせる方にとってはかなり便利な手段となるかと思いますので、
ぜひご活用頂ければ幸いです。
また、andとorは()で入れ子にすることもできます。
例: <xsl:if test="(条件1 or 条件2) and (条件3 or 条件4)">
ありがとうございます
Posted: 2006年12月11日(月) 12:51
by ifeel
tsuさん
こちらでもお世話になりました。
こちらで丁寧にアドバイスしていただけた事もあり
xmlにはまってきました
もっと勉強して色んな事を試してみたいなぁと思っていたので
教えていただいたページ、参考にさせていただきます!
webmaster様
さらなる高度な使い方をありがとうございます!
cmsdesigner自体、知識が少ない人でも使える
素晴らしいツールですが、間口が広い分
更に奥深いxmlの世界への興味も沸かせてくれますね。
また何かありましたらよろしくお願いいたします。