1

如果出现以下情况,我试图在 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')">

但这会导致语法错误。

4

3 回答 3

1

我发现我的错误......大写和。

<xsl:if test="@status != 'BadNumber' and @status != 'Disconnected' and @status !=  'NoCallsAccepted'and @status != 'Fax'">
于 2012-08-29T00:49:57.417 回答
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'))">
于 2012-08-29T12:42:48.063 回答
0

如果您使用 XSLT 2.0,您可以简化:

<xsl:if test="not(@status=('BadNumber','Disconnected','NoCallsAccepted','Fax'))">
于 2012-08-29T02:09:25.117 回答