В настоящее время у меня есть xsl с следующий код, где я'м пытаюсь распечатать на "Граф" и только если он не равен "н/д". но, кажется, в `"!=" и не работает.
<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')"
Если там's ровно один элемент графа они означают одно и то же, но если там'ы не в счет, или если есть несколько, то и смыслы разные.
6 ЛЕТ СПУСТЯ
Поскольку этот ответ, похоже, становится популярным, но может быть немного загадочным для некоторых читателей, позвольте мне развернуть его.
В "=и"; и "!=" и оператор в XPath может сравнить два набора значений. В общем, если A и B представляют собой наборы значений, потом "=", которая возвращает true, если любая пара значений A и B, равны, в то время как и"!=", которая возвращает true, если есть любая пара, которая неравны.
В общем случае, когда выбирает ноль-или-один узлов, а Б является константой (говорит: "на глаз"), а это значит, что не(А = С "на глаз")возвращает true, если либо отсутствует, либо имеет значение, не равное, чтобы "на глаз". Напротив,
а != назальный НС;` возвращает true, если присутствует и не равен, чтобы "на глаз". Как правило, вы хотите в "отсутствует" по делу должны рассматриваться как "не равно", который означает, что не(А = С "на глаз") - это подходящая формулировка.