El valor de la variable $ var como se define en:
<xsl:variable name="var" select="boolean('false')"/>
es
true()
Ésta es becaus e en XPath "false
" es una cadena ordinaria, a diferencia de false()
, que es el constructor para el valor boolean
false()
Los dos valores booleanos en XPath son (tenga en cuenta que se están construyendo!):
true()
y false()
El detalle de conve rting cualquier valor a boolean se explican en el XPath Spec.:
"La función boolean convierte su argumento para un booleano como sigue:
un número es verdadero si y sólo si es ni positiva o negativa cero ni NaN
una node-set es verdadero si y solo si no está vacío
una cadena es verdadera si y solo si es longitud no es cero
un objeto de un tipo distinto a los cuatro tipos básicos se convierte en un valor booleano de una manera que depende de ese tipo "
En su caso la cadena de "falso" no es el número 0 y tiene una longitud positiva, por lo que se aplica la regla en el tercer punto anterior, obteniendo true()
.
Por lo tanto, para definir una variable en XSLT 1.0, cuyo valor esfalse()
, hay que escribir la definición como la siguiente:
<xsl:variable name="vMyVar" select="false()"/>
o, si no lo hace recordar exactamente esto, siempre se podría escribir:
<xsl:variable name="vMyVar" select="1 = 0"/>
(especifique cualquier expresión que evalúe a false()
) y el procesador XSLT hará el trabajo por usted.
En XSLT 2.0, siempre es mejor para especificar explícitamente el tipo de la variable:
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>
Sólo una sugerencia, pero es posible que también consiga un mejor calibre de respuesta si usted escribe su título como una pregunta adecuada y evitar que el l33t hable. –
Gracias chicos, lo siento. – sydlawrence