Compruebe si una cadena es nula o está vacía en XSLT

Resuelto raklos asked hace 15 años • 14 respuestas

¿Cómo puedo comprobar si un valor es nulo o está vacío con XSL ?

Por ejemplo, ¿si categoryNameestá vacío? Estoy usando a al elegir una construcción.

Por ejemplo:

<xsl:choose>
    <xsl:when test="categoryName !=null">
        <xsl:value-of select="categoryName " />
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="other" />
    </xsl:otherwise>
</xsl:choose>
raklos avatar May 05 '09 23:05 raklos
Aceptado
test="categoryName != ''"

Editar : Esto cubre la interpretación más probable, en mi opinión, de "[no] nulo o vacío" como se infiere de la pregunta, incluido su pseudocódigo y mi propia experiencia temprana con XSLT. Es decir, "¿Cuál es el equivalente del siguiente Java?":

// Equivalent Java, NOT XSLT
!(categoryName == null || categoryName.equals(""))

Para obtener más detalles, por ejemplo, identificar claramente nulo versus vacío, consulte la respuesta de Johnvey a continuación y/o el 'violín' XSLT que he adaptado de esa respuesta, que incluye la opción en el comentario de Michael Kay, así como la sexta interpretación posible.

steamer25 avatar May 05 '2009 16:05 steamer25

A falta de cualquier otra información, asumiré el siguiente XML:

<group>
    <item>
        <id>item 1</id>
        <CategoryName>blue</CategoryName>
    </item>
    <item>
        <id>item 2</id>
        <CategoryName></CategoryName>
    </item>
    <item>
        <id>item 3</id>
    </item>
    ...
</group>

Un caso de uso de muestra sería el siguiente:

<xsl:for-each select="/group/item">
    <xsl:if test="CategoryName">
        <!-- will be instantiated for item #1 and item #2 -->
    </xsl:if>
    <xsl:if test="not(CategoryName)">
        <!-- will be instantiated for item #3 -->
    </xsl:if>
    <xsl:if test="CategoryName != ''">
        <!-- will be instantiated for item #1 -->
    </xsl:if>
    <xsl:if test="CategoryName = ''">
        <!-- will be instantiated for item #2 -->
    </xsl:if>
</xsl:for-each>
johnvey avatar May 05 '2009 17:05 johnvey