現在、次のコードを含む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">
誰か教えてもらえますか?文字列を比較したい場合、何を使用できますか?
Filburtが言うように。ただし、通常は次のように書くことをお勧めします。
test="not(Count = 'N/A')"
Count要素が1つだけの場合、それらは同じことを意味しますが、Countがない場合、または複数ある場合、意味は異なります。
6年後
この回答は一般的になったように見えますが、一部の読者にとっては少しわかりにくいかもしれませんので、拡大させてください。
XPathの「=」および「!=」演算子は、2つの値セットを比較できます。一般に、AとBが値のセットである場合、「=」はAとBの値のペアが等しい場合にtrueを返し、「!=」は等しくないペアがある場合にtrueを返します。
Aがゼロまたは1ノードを選択し、Bが定数(「NA」など)である一般的なケースでは、これは、Aが存在しないか、値が「NA」に等しくない場合、not(A = "NA")
がtrueを返すことを意味します。対照的に、A != "NA"
は、Aが存在し、 "NA"と等しくない場合にtrueを返します。通常、「不在」の場合は「等しくない」として扱われます。つまり、not(A = "NA")
が適切な定式化です。
文字列リテラルと比較する場合は、(単一の)引用符で囲む必要があります。
<xsl:if test="Count != 'N/A'">