XSLTので文字列を比較する際に、"not equals to"を指定するにはどうしたらいいですか?

現在、次のようなコードのxslがあり、N/Aと等しくない場合にのみ"count"を出力しようとしていますが、"!="が機能していないようです。

<xsl:for-each select="Directory/Match">
    <xsl:if test = "Count != N/A">
        <tr>
            <td><xsl:value-of select="@bookName" /></td>
            <td><xsl:value-of select="@AuthorName" /></td>
            <td><xsl:value-of select="Count" /></td>
        </tr>
    </xsl:if>
</xsl:for-each>

ただし、数値と比較しようとすると動作します。

<xsl:if test = "Occurrances != 0">

どなたか教えてください。文字列を比較したい場合、何を使えばいいのでしょうか?

ソリューション

フィルバートが言っているように、しかし、通常は、次のように書いた方がいいでしょう。

test="not(Count = 'N/A')"

Countの要素が1つしかない場合は同じ意味ですが、Countがない場合や複数ある場合は意味が異なります。

6年後

この答えは人気があるようだが、読者の中には少し不可解な人もいるかもしれないので、説明しておこう。

XPathの"="および"!="演算子は、2つの値の集合を比較することができます。一般的には、AとBが値の集合である場合、"="はAとBの値の中に等しいペアがあればtrueを返し、"!="は不等号のペアがあればtrueを返します。

Aが0または1のノードを選択し、Bが定数(例えば"NA")である一般的なケースでは、Aが存在しないか、または"NA"と等しくない値を持つ場合、not(A = "NA")が真を返すことになります。これに対して、A != "NA"は、Aが存在し、"NA"と等しくない場合に真を返します。通常は、"absent"の場合は、"not equal"として扱いたいので、not(A = "NA")が適切な定式化となります。

解説 (0)

文字列リテラルと比較したい場合は、文字列を(シングル)引用符で囲む必要があります。

解説 (2)