Actuellement, j'ai un xsl avec le code suivant où j'essaie d'imprimer le "compte" uniquement s'il n'est pas égal à N/A
. mais semble comme "!="
ne fonctionne pas.
<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>
Cependant, cela fonctionne si j'essaie de le comparer avec une valeur numérique.
Exemple:
<xsl:if test = "Occurrances != 0">
Quelqu'un peut-il me dire s'il vous plaît: Si je veux comparer des chaînes, que puis-je utiliser?
Comme dit Filburt; mais notez également qu'il est généralement préférable d'écrire
test="not(Count = 'N/A')"
S'il y a exactement un élément Count, ils veulent dire la même chose, mais s'il n'y a pas de Count, ou s'il y en a plusieurs, les significations sont différentes.
6 ANS PLUS TARD
Puisque cette réponse semble être devenue populaire, mais peut-être un peu cryptique pour certains lecteurs, laissez-moi la développer.
Les opérateurs "=" et "! =" Dans XPath peuvent comparer deux ensembles de valeurs. En général, si A et B sont des ensembles de valeurs, alors "=" renvoie vrai s'il existe une paire de valeurs de A et B égale, alors que "! =" Renvoie vrai si une paire quelconque était inégale.
Dans le cas habituel où A sélectionne les nœuds zéro ou un et que B est une constante (par exemple, "NA"), cela signifie que not(A = "NA")
renvoie true si A est absent ou a une valeur différente de à "NA". En revanche, A != "NA"
Renvoie vrai si A est présent et différent de "NA". Habituellement, vous souhaitez que le cas "absent" soit traité comme "non égal", ce qui signifie que not(A = "NA")
est la formulation appropriée.
Si vous souhaitez comparer un littéral de chaîne, vous devez le mettre entre guillemets (simples):
<xsl:if test="Count != 'N/A'">