hrishi
hrishi

Reputation: 1656

Generate multiple nodes with same name in XSLT

I am using XSLT

Input is like below

<data>
    <details>
        <DATA>
            <name>nameValue</name>
        </DATA>
        <DATA>
            <name>nameValue1</name>
        </DATA>
    <details>
<data>

XSLT is

<xsl:template match="details">
    <xsl:copy>
        <info>
            <person_name>
                <xsl:value-of select="DATA/name"/>
            </person_name>
        </info>
    </xsl:copy>
</xsl:template>

output

<info>
    <person_name>nameValue</person_name>
</info>

Expected output is like below

<info>
    <person_name>nameValue</person_name>
</info>
<info>
    <person_name>nameValue1</person_name>
</info>

Upvotes: 0

Views: 267

Answers (1)

Tim C
Tim C

Reputation: 70648

Your XML is not well-formed, as it has opening tag where closing tags should be. But assuming it looked like this...

<data>
    <details>
        <DATA>
            <name>nameValue</name>
        </DATA>
        <DATA>
            <name>nameValue1</name>
        </DATA>
    </details>
</data>

... what you need to do is use an xsl:for-each to select each child DATA element

<xsl:template match="details">
    <xsl:copy>
        <xsl:for-each select="DATA">
            <info>
                <person_name>
                    <xsl:value-of select="name"/>
                </person_name>
            </info>
        </xsl:for-each>
    </xsl:copy>
</xsl:template>

Upvotes: 2

Related Questions