How to merge multiple xml files using xsl?

10,070

Use document function:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/xmlResponse">
        <xsl:copy>
            <xsl:apply-templates select="Person"/>
            <xsl:apply-templates select="document('2.xml')/*/Person"/>
            <xsl:apply-templates select="document('3.xml')/*/Person"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
Share:
10,070
user475464
Author by

user475464

Updated on June 18, 2022

Comments

  • user475464
    user475464 about 2 years

    I need to merge below 3 xml files uisng xsl in 1.0

    In XML FILE : 01.xml

    <xmlResponse>
        <Person>
            <FirstName>FirstName_1</FirstName>
            <LastName>LastName_1</LastName>
        </Person>
        <Person>
            <FirstName>FirstName_2</FirstName>
            <LastName>LastName_2</LastName>
        </Person>
    </xmlResponse>
    

    In XML FILE : 02.xml

    <xmlResponse>
        <Person>
            <FirstName>FirstName_2</FirstName>
            <LastName>LastName_2</LastName>
        </Person>
        <Person>
            <FirstName>FirstName_3</FirstName>
            <LastName>LastName_3</LastName>
        </Person>
        <Person>
            <FirstName>FirstName_4</FirstName>
            <LastName>LastName_4</LastName>
        </Person>
    </xmlResponse>
    

    In XML FILE : 03.xml

    <xmlResponse>
        <Person>
            <FirstName>FirstName_5</FirstName>
            <LastName>LastName_5</LastName>
        </Person>
    </xmlResponse>
    

    I need output like below (01.xml + 02.xml + 03.XML)

    <xmlResponse>
        <Person>
            <FirstName>FirstName_1</FirstName>
            <LastName>LastName_1</LastName>
        </Person>
        <Person>
            <FirstName>FirstName_2</FirstName>
            <LastName>LastName_2</LastName>
        </Person>
        <Person>
            <FirstName>FirstName_2</FirstName>
            <LastName>LastName_2</LastName>
        </Person>
        <Person>
            <FirstName>FirstName_3</FirstName>
            <LastName>LastName_3</LastName>
        </Person>
        <Person>
            <FirstName>FirstName_4</FirstName>
            <LastName>LastName_4</LastName>
        </Person>
        <Person>
            <FirstName>FirstName_5</FirstName>
            <LastName>LastName_5</LastName>
        </Person>
    </xmlResponse> 
    

    hoping your response, tks...