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