我试图在XSLT中表示以下内容:
if (status != Disconnected || status != BadNumber || status != NoCallsAccepted || status != Fax)
我知道这可以通过choose
表达式完成,但我不想在模板中添加如此多的详细信息......
我在适当时使用AND和OR尝试了以下的不同变体:
<xsl:if test="not(@status = 'BadNumber') AND not(@status = 'Disconnected') AND not( @status = 'NoCallsAccepted') AND not(@status = 'Fax')">
但这会导致语法错误。
答案 0 :(得分:1)
我想出了我的错误......大写和。
<xsl:if test="@status != 'BadNumber' and @status != 'Disconnected' and @status != 'NoCallsAccepted'and @status != 'Fax'">
答案 1 :(得分:1)
这可以用更紧凑的形式表示为:
<xsl:if test=
"not(contains('|BadNumber|Disconnected|NoCallsAccepted|Fax|',
concat('|', @status,'|')
))">
在XPath 2.0(XSLT 2.0)中,甚至可以使用更紧凑的表达式:
<xsl:if test="not(@status=('BadNumber','Disconnected','NoCallsAccepted','Fax'))">
答案 2 :(得分:0)
如果您使用的是XSLT 2.0,则可以简化:
<xsl:if test="not(@status=('BadNumber','Disconnected','NoCallsAccepted','Fax'))">