El valor de la variable $ var como se define en:
<xsl:variable name="var" select="boolean('false')"/>
es
true()
Esto se debe a que en XPath " false
" es una cadena ordinaria, a diferencia de false()
, que es el constructor del boolean
valorfalse()
Los dos valores booleanos en XPath son (¡tenga en cuenta que están construidos!):
true()
y false()
Los detalles de la conversión de cualquier valor a booleano se detallan en la especificación XPath :
"La función booleana convierte su argumento en un booleano de la siguiente manera:
un número es verdadero si y solo si no es cero positivo o negativo ni NaN
un conjunto de nodos es verdadero si y solo si no está vacío
una cadena es verdadera si y solo si su longitud no es cero
un objeto de un tipo distinto de los cuatro tipos básicos se convierte en un booleano de una manera que depende de ese tipo "
En su caso, la cadena "falso" no es el número 0 y tiene una longitud positiva, por lo que se aplica la regla de la tercera viñeta anterior, cedendo true()
.
Por lo tanto, para definir una variable en XSLT 1.0, cuyo valor es false()
, es necesario escribir la definición de la siguiente manera:
<xsl:variable name="vMyVar" select="false()"/>
o, si no recuerda esto exactamente, siempre puede escribir:
<xsl:variable name="vMyVar" select="1 = 0"/>
(especifique cualquier expresión que evalúe false()
) y el procesador XSLT hará el trabajo por usted.
En XSLT 2.0 siempre es mejor especificar explícitamente el tipo de variable:
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>