如果value不是以下任何XSLT

时间:2012-08-29 00:29:31

标签: xslt xpath

我试图在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')">

但这会导致语法错误。

3 个答案:

答案 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'))">