我有以下条件来测试
cursorAfter()
有没有办法像这样检查?
<xsl:if test=" $Occupation='5'
or $Occupation='7'
or $Occupation='N'
or $Occupation='M'
or $Occupation='J'
or $Occupation='V'
or $Occupation='W'">
<xsl:value-of select="'Accounts'"/>
</xsl:if>
答案 0 :(得分:4)
假设列表中的所有内容都是单个字符:
<xsl:if test="string-length($occupation) = 1 and contains('57NWJM', $occupation)">
<xsl:value-of select="'Accounts'"/>
</xsl:if>
如果条目长于一个字符,则可以使用分隔字符。当然,此字符不得出现在列表中的任何值中。使用空格作为分隔字符,事情可能如下:
<xsl:if test="not(contains($occupation, ' ')) and contains(' foo bar baz ', concat(' ', $occupation, ' '))">
<xsl:value-of select="'Accounts'"/>
</xsl:if>
请确保在foo
之前和baz
之后不要忘记这些填充空格。
答案 1 :(得分:3)
您可以使用:
<xsl:if test="contains('57NMJ', $Occupation)">
但是当$Occupation
=&#34; 7N&#34;时,这也会返回true。
为了防范这种情况,您可以使用:
<xsl:if test="contains('|5|7|N|M|J|', concat('|', $Occupation, '|'))">
答案 2 :(得分:0)
反过来可能会有效......
<xsl:if test="contains('57NWJM',$Occupation)">
答案 3 :(得分:0)
你可以在XSLT 2.0中更干净地做到这一点:
$occupation = ('5','7','N','M','J','V','W')
对于单字符值的情况,例如你的,这个XPath 1.0表达式,
translate($occupation,'7NMJVW','555555')='5'
$occupation
为5
,7
,N
,M
,J
,V
时,将返回true W
按要求提供。
对于单字符或多字符值的情况,请参阅Thomas W's answer或michael.hor257k's answer,其中采用了test @class
attribute values safely常用的技术:
contains(concat(" ", normalize-space(@class), " "), " target ")]