web-dev-qa-db-ja.com

<xsl:if>タグの 'test'属性式に複数のテスト条件を追加する方法

XSLTの<xsl:if>タグの 'test'属性式に複数の条件を含める可能性はありますか

<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">
</xsl:if>

「式はノードセットに評価される必要がある」というエラーが表示されます。

<xsl:if>タグにこのような複数の条件をコーディングする可能性はありますか?

誰でも、次のタグのこの複数条件検証をどのように達成できるか説明できますか?

テスト属性式の<xsl:if>

<xsl:for-each> select属性式

<xsl:template>一致属性式

28
User 4.5.5
<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">

これは間違っています-ブール値でXPathunion演算子|を使用しています。

ソリューション:XPath or演算子を使用します:

<xsl:if test="$var='ab' or $var='bc' or $var='ca' ">

上記のXPath式(test属性の値)は最適化できるため、1つの比較のみが行われ、orは不要です。

<xsl:if test="contains('|ab|bc|ca|', concat('|', $var, '|'))">
40

XSLT 2.0以降では、一連の文字列に対してテストできます。

<xsl:if test="$var=('ab','bc','ca')">...</xsl:if>
3
Daniel Haley