Как мне указать, что "не равняется" при сравнении строк в XSLT ?

В настоящее время у меня есть 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 ЛЕТ СПУСТЯ

Поскольку этот ответ, похоже, становится популярным, но может быть немного загадочным для некоторых читателей, позвольте мне развернуть его.

В &quot=и"; и "!=" и оператор в XPath может сравнить два набора значений. В общем, если A и B представляют собой наборы значений, потом "=", которая возвращает true, если любая пара значений A и B, равны, в то время как и"!=", которая возвращает true, если есть любая пара, которая неравны.

В общем случае, когда выбирает ноль-или-один узлов, а Б является константой (говорит: "на глаз"), а это значит, что не(А = С "на глаз")возвращает true, если либо отсутствует, либо имеет значение, не равное, чтобы "на глаз". Напротив,а != назальный НС;` возвращает true, если присутствует и не равен, чтобы "на глаз". Как правило, вы хотите в "отсутствует" по делу должны рассматриваться как "не равно", который означает, что не(А = С "на глаз") - это подходящая формулировка.

Комментарии (0)

Если вы хотите сравнить на строковый литерал, нужно поместить его в (один) цитаты:

Комментарии (2)