Когда вы вызываете key('x', 'y')
, результатом является набор узлов, в которых ключ равен 'y'
. Вы можете проверить, является ли набор узлов пустым, используя функцию empty () (в XSLT 2.0) или функцию not () в XSLT 1.0:
<xsl:if test="not(key('x', 'y'))" version="1.0">...</xsl:if>
<xsl:if test="empty(key('x', 'y'))" version="2.0">...</xsl:if>
или для обратного теста (для проверки, если что-то было найдено):
<xsl:if test="key('x', 'y')" version="1.0">...</xsl:if>
<xsl:if test="exists(key('x', 'y'))" version="2.0">...</xsl:if>
Тестирование путем сравнения результата со строкой неверно. Оба теста key('x','y')=''
и key('x','y')!=''
будут возвращать false, если результатом функции key()
является пустой набор узлов; и наоборот, если функция key()
выбирает два узла, один с содержимым, а другой без, тогда оба теста вернут true.