IF sentence in xsl

0

I find myself making an if statement when the data is empty.

this is the XML document '

<?xml version="1.0" encoding="utf-8"?>
<document>
<fields>
    <field id="HCR_S2_1_DIRECCION_PROPIEDAD" type="STGString">Avenida maximo 1918</field>
    <field id="HCR_S2_1_COMUNA" type="STGString">RENCA</field>
    <field id="HCR_S2_1_BODEGA" type="STGString">NO</field>
    <field id="HCR_S2_1_TIPO" type="STGString">NO</field>
</fields>
</document>

'

and what I want to generate is an IF that when the field HCR_S2_1_DIRECCION_PROPIEDAD does not contain data, the sentence is not executed. I was doing it this way.

    <xsl:if test="field[@id='HCR_S2_1_DIRECCION_PROPIEDAD'] != ''">
    <HCR_S2_1>
            <HCR_S2_1_DIRECCION_PROPIEDAD>
                    <xsl:value-of select="document/fields/field[@id='HCR_S2_1_DIRECCION_PROPIEDAD']/text()"/>
            </HCR_S2_1_DIRECCION_PROPIEDAD>
            <HCR_S2_1_COMUNA>
                    <xsl:value-of select="document/fields/field[@id='HCR_S2_1_COMUNA']/text()"/>
                </HCR_S2_1_COMUNA>
                <HCR_S2_1_BODEGA>
                    <xsl:value-of select="document/fields/field[@id='HCR_S2_1_BODEGA>']/text()"/>
                </HCR_S2_1_BODEGA>
                <HCR_S2_1_TIPO> 
                    <xsl:value-of select="document/fields/field[@id='HCR_S2_1_TIPO']/text()"/>
                </HCR_S2_1_TIPO>
        </HCR_S2_1>
    </xsl:if>

so far without result with

    
asked by Alvarows 20.09.2018 в 14:24
source

2 answers

0

Answer I found

<xsl:choose>
<xsl:when test="categoryName and string-length(categoryName) &gt; 0">
    <xsl:value-of select="categoryName " />
</xsl:when>

and code stays that way

<xsl:choose>
        <xsl:when test="string-length(document/fields/field[@id='HCR_S2_1_DIRECCION_PROPIEDAD'])&gt; 0">
        <HCR_S2_1>
                <HCR_S2_1_DIRECCION_PROPIEDAD>
                    <xsl:value-of select="document/fields/field[@id='HCR_S2_1_DIRECCION_PROPIEDAD']/text()"/>
                </HCR_S2_1_DIRECCION_PROPIEDAD>
                <HCR_S2_1_COMUNA>
                    <xsl:value-of select="document/fields/field[@id='HCR_S2_1_COMUNA']/text()"/>
                </HCR_S2_1_COMUNA>

        </HCR_S2_1> 
        </xsl:when>

        </xsl:choose>

Check if a string is null or empty in XSLT

    
answered by 21.09.2018 / 15:51
source
1

You can try with when: (for answer = null)

<xsl:when test="not(string(field[@id='HCR_S2_1_DIRECCION_PROPIEDAD']))">

If we talk about receiving an empty string:

<xsl: when test = "string-length (field[@id='HCR_S2_1_DIRECCION_PROPIEDAD']) <1">

(Remember to close the when)

    
answered by 20.09.2018 в 14:47