Значение переменной $var, как определено в:
<xsl:variable name="var" select="boolean('false')"/>
true()
Это вызвано тем, что в XPath" false
" обычная строка, в противоположность false()
, который является конструктором для boolean
значение false()
, Эти два булевых значения в XPath (обратите внимание, что они создаются!):
true()
и false()
деталь преобразования любого значения к булевской переменной является записанным пикником Спецификация .:
XPath " булевская переменная , функция преобразовывает свой аргумент булевской переменной следующим образом:
число верно, если и только если это ни положительный или отрицательный нуль, ни NaN
, набор узлов верен, если и только если это непусто
, строка верна, если и только если ее длина ненулевая
, объект типа кроме этих четырех основных типов преобразовывается в булевскую переменную способом, которая зависит от того типа"
В Вашем случае, строка "ложь" не является номером 0 и имеет положительную длину, таким образом, правило в 3-м маркере выше применяется, уступая true()
.
Поэтому для определения переменной в XSLT 1.0, значение которого false()
, нужно записать определение как следующее:
<xsl:variable name="vMyVar" select="false()"/>
или, если Вы точно не помните это, Вы могли бы всегда писать:
<xsl:variable name="vMyVar" select="1 = 0"/>
(определяют любое выражение, которое оценивает к [1 112]) и процессор XSLT сделает работу для Вас.
В XSLT 2.0 всегда лучше явно определить тип переменной:
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>
Булевская переменная () функция, которую Вы используете, действительно делает, это - задание. Для использования явных истинных и ложных значений необходимо использовать следующие функции:
<xsl:variable name="var_false" select="false()"/>
<xsl:variable name="var_true" select="true()"/>
Просто к вашему сведению, на документация MSDN , булевская переменная () возвращает следующее: