contains()
是否适用于存储在变量中的多个单词?下面的一个会起作用吗?如果它不起作用,请帮我解决。
<xsl:variable name="games" select="footballvolleyballchesscarrom"/>
<xsl:when test="contains($games,'chess,carrom')">CORRECT</xsl:when>
答案 0 :(得分:1)
我认为多个变量不适用于contains方法。根据定义:
boolean contains(str1, str2)
str1:可能包含第二个参数的字符串。 str2:可能包含在第一个参数中的字符串。
参考:https://msdn.microsoft.com/en-us/library/ms256195(v=vs.110).aspx
您可以使用或运营商:
<xsl:when test="contains($games,'chess') or contains($games,'carrom')">CORRECT</xsl:when>
答案 1 :(得分:1)
假设您正在寻找子字符串包含的逻辑OR ......
首先,这个select
可能是错误的 1 :
<xsl:variable name="games" select="footballvolleyballchesscarrom"/>
它正在寻找一个名为footballvolleyballchesscarrom
的元素。如果您尝试将游戏设置为字符串 footballvolleyballchesscarrom
,请将其更改为:
<xsl:variable name="games" select="'footballvolleyballchesscarrom'"/>
然后,使用
<xsl:when test="contains($games,'chess')
or contains($games,'carrom')">CORRECT</xsl:when>
或
<xsl:when test="matches($games,'chess|carrom')">CORRECT</xsl:when>
测试$games
是否包含多个子字符串中的一个。
1 如果您真的打算从输入XML中选择(可能是多个)元素,则还有另一个XSLT 2.0选项,用于根据一组可能的值测试所选序列。如果您的输入XML是,例如
<games>
<game>football</game>
<game>volleyball</game>
<game>chess</game>
<game>carrom</game>
</games>
然后是这个模板,
<xsl:template match="/">
<xsl:variable name="games" select="//game"/>
<xsl:if test="$games = ('chess','carrom')">CORRECT</xsl:if>
</xsl:template>
会输出CORRECT
,因为所选元素的字符串值中至少有chess
或carrom
。