プロが教えるわが家の防犯対策術!

XSLで、要素の値の取得方法がわかりません。
ご教授いただければうれしいです。

XML-----------------------------------
<data>
<num1>test</num1>
<title>title</title>
</data>
<data>
<num2>test2</num2>
<title>title</title>
</data>

で、XSL内で、
<xsl:template match="num1">
// ここで、num2があるか判断したい
</xsl:template>
ということは、出来るのでしょうか?

A 回答 (1件)

こんな感じでしょうか。



<xsl:choose>
<xsl:when test="../../data/num2">
データあり
</xsl:when>
<xsl:otherwise>
データなし
</xsl:otherwise>
</xsl:choose>

判断にはxsl:choose命令を使います。子要素のxsl:when命令で
test属性が真になればその内側を実行します。
(複数のxsl:whenを記述可。最初に真になるもののみ実行)
いずれも当てはまらない場合はxsl:otherwiseの内側を実行します。

test属性で要素を指定するとその要素があれば真となります。
質問のとおりのXMLに対して「num2要素があるかどうか」であれば
上記のように指定することで判断できます。

補足ですが、1件分はdata要素でまとめられているので、「次の
data要素があるかどうか」判断する場合はtest属性で
test="../following-sibling::data"
と記述すると、現在処理中のnum1要素を含んでいるdata要素と
同じ階層の後ろにdata要素があるかどうかという条件になります。
    • good
    • 0
この回答へのお礼

遅くなりましたが、ありがとうございました。
解決しました。

# test="../following-sibling::data"
の説明大変勉強になりました。

お礼日時:2007/02/02 19:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!