データ値の内容によって処理を変える場合[複数の条件の組み合わせ]

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
kaz575
記事: 2
登録日時: 2011年1月24日(月) 15:05

データ値の内容によって処理を変える場合[複数の条件の組み合わせ]

投稿記事 by kaz575 » 2011年1月24日(月) 15:12

マニュアル48ページの、データ値の内容によって出力する内容を変える場合、
複数の条件で制御する事は可能でしょうか?

具体的には、
・photo1とphoto2の項目が二つある
・両方とも空の場合には、別の画像を表示させる

といった具合です。

<xsl:if test="not(photo1='')"> と <xsl:if test="not(photo2='')">
を統合して記述したいということなんですが、このような事は可能でしょう?

miya
パワーユーザー
記事: 85
登録日時: 2006年3月25日(土) 09:20
お住まい: 東京都

Re: データ値の内容によって処理を変える場合[複数の条件の組み合わせ]

投稿記事 by miya » 2011年1月25日(火) 13:02

kaz575 さん、初めまして。
kaz575 さんが書きました:・photo1とphoto2の項目が二つある
・両方とも空の場合には、別の画像を表示させる
おそらく、これでいけると思います。。。

コード: 全て選択

<!-- photo1 にデータがある場合 -->
<xsl:if test="not(photo1='')"><img src="photo1" alt="" /></xsl:if>

<!-- photo2 にデータがある場合 -->
<xsl:if test="not(photo2='')"><img src="photo2" alt="" /></xsl:if>

<!-- photo1 と photo2 にデータが無い場合 -->
<xsl:if test="photo1=''">
  <xsl:if test="photo2=''">
    <img src="photo3" alt="" />
  </xsl:if>
</xsl:if>
試してはいませんが、たぶんこれでもいけると思います。

コード: 全て選択

<xsl:choose>
  <!-- photo1 にデータがある場合 -->
  <xsl:when test="not(photo1='')">
    <img src="photo1" alt="" />
  </xsl:when>
  <!-- photo2 にデータがある場合 -->
  <xsl:when test="not(photo2='')">
    <img src="photo2" alt="" />
  </xsl:when>
  <!-- それ以外 -->
  <xsl:otherwise>
    <img src="photo3" alt="" />
  </xsl:otherwise>
</xsl:choose>
これでもいけそうな気はするんですが、たぶんダメだと思います。

コード: 全て選択

<!-- photo1 と photo2 にデータが無い場合 -->
<xsl:if test="photo1=''&photo2=''">
  <img src="photo3" alt="" />
</xsl:if>

kaz575
記事: 2
登録日時: 2011年1月24日(月) 15:05

Re: データ値の内容によって処理を変える場合[複数の条件の組み合わせ]

投稿記事 by kaz575 » 2011年1月25日(火) 20:06

miyaさん、アドバイスありがとうございます。
結論として、上手く動きました。ありがとうございます。

1番目のコードで問題なく動きました。
if testを入れ子にすればよかったんですね。なるほど頭の体操になりました。

2番目のコードだと、画像を2枚表示させようとした時、1枚目しか表示してくれませんでした。
ただ、chooseとかwhenとか見たことなかったので、これが動いたらスマートでカッコいいなーと思ったんですが。
これから機会があったら使い方を研究してみたいと思います。

3番目のコードは、エラーでした。
自分でも一昨日同じことを試してお手上げだーと思ったきっかけでした。

大変ありがとうございました。

返信