visual traduccion que ejemplo booleanas xml xslt boolean

xml - traduccion - boolean visual basic



¿Cómo crear un valor booleano? (3)

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 valor boolean false()

Los dos valores booleanos en XPath son (¡tenga en cuenta que están construidos!):

true() y false()

El detalle de convertir cualquier valor en booleano se explica en la especificación XPath .

"La función boolean convierte su argumento en booleano de la siguiente manera:

  • un número es verdadero si y solo si no es positivo o negativo cero 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 es distinta de cero

  • un objeto de un tipo diferente a los cuatro tipos básicos se convierte a 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 en la tercera viñeta anterior, obteniéndose true() .

Por lo tanto, para definir una variable en XSLT 1.0, cuyo valor es false() , se necesita escribir la definición de la siguiente manera:

<xsl:variable name="vMyVar" select="false()"/>

o, si no recuerda exactamente esto, siempre puede escribir:

<xsl:variable name="vMyVar" select="1 = 0"/>

(especifique cualquier expresión que evalúe como false() ) y el procesador XSLT hará el trabajo por usted.

En XSLT 2.0, siempre es mejor especificar explícitamente el tipo de la variable:

<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>

Soy totalmente nuevo en XSLT y no puedo determinar dónde me estoy equivocando con el siguiente código.

<xsl:variable name="var" select="boolean(''false'')"/> <xsl:if test="$var''">variable is true</xsl:if>

Siempre está volviendo verdadero cuando se supone que es falso. ¿Por qué?


La función boolean () que está utilizando está haciendo su trabajo. Para usar valores explícitos verdaderos y falsos, debe usar las siguientes funciones:

<xsl:variable name="var_false" select="false()"/> <xsl:variable name="var_true" select="true()"/>

Solo para su información, según la documentación de MSDN , boolean () devuelve lo siguiente:

  • Si el argumento es un número negativo o positivo, se convierte al valor booleano verdadero.
  • Si el argumento es cero o un valor NaN, se convierte en falso.
  • Si el argumento es un conjunto de nodos vacío, se convierte en verdadero. Un conjunto de nodos vacío se convierte en falso.
  • Si el argumento es una cadena no vacía, se convierte en verdadero . Una cadena vacía se convierte en falsa.
  • Si el argumento es 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.

Un poco tarde en esta etapa, tal vez, pero no estoy tratando con booleanos simplemente no vale la pena el esfuerzo. Heres cómo lidié con un booleano (Obligatorio) que regresa de la base de datos:

<xsl:variable name="vTrue" select="true()"/> <xsl:choose> <xsl:when test="string(Mandatory) = string($vTrue)"> <xsl:text>Mandatory</xsl:text> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose>

Espero que esto ayude a alguien