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 に答える