Как проверить, является ли переменная нулевой или пустой в XSLT?
Я определил следующие переменные:
<xsl:variable name="pica036E"
select="recordData/record/datafield[@tag='036E']" />
<xsl:variable name="pica036F"
select="recordData/record/datafield[@tag='036F']" />
Теперь мне нужно выполнить условие, если переменная pica036E не пуста, а pica036F пуста, показать следующее сообщение, в противном случае показать другое сообщение. Это мой код, но я не получаю вывод. Правильно ли определено значение "пустой или пустой"?
<xsl:choose>
<xsl:when test="$pica036E != '' and $pica036F = ''">
<xsl:message>
036F no 036E yes
</xsl:message>
</xsl:when>
<xsl:otherwise>
<xsl:message>
036E no 036F yes
</xsl:message>
</xsl:otherwise>
</xsl:choose>
3 ответа
В XPath X = Y означает (если некоторая пара x в X, y в Y удовлетворяет x = y), а X!= Y означает (если некоторая пара x в X, y в Y удовлетворяет x!= Y).
Это означает, что если X или Y - пустая последовательность, то оба X = Y и X!= Y ложны.
Например, $pica036E != ''
проверяет, есть ли значение в $pica036E
это не строка нулевой длины. Если нет значений в $pica036E
тогда нет значения, удовлетворяющего этому условию.
В результате использование! = В XPath всегда является запахом кода. Обычно, а не X != Y
, ты должен писать not(X = Y)
,
В XSLT переменная с текстовым содержимым также может служить логической переменной. Непустой контент означает истину, пустой контент означает ложь.
Таким образом, условие также может быть записано как:
<xsl:when test="$pica036E and not($pica036F)">
Помни что not
это функция (не оператор).
Проверьте следующий код. Я думаю, что ваш вывод
<xsl:when test="not($pica036E = '') and $pica036F = ''">