You can use a combination of the document() function and sort.
try running this agaist the masterfile:
<xsl:template match="masterfile">
<merged>
<xsl:apply-templates select="document(doc/@filename)/client">
<xsl:sort select="name"/>
<xsl:sort select="subclient/name"/>
</xsl:apply-templates>
</merged>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
-rick
At 02:36 PM 6/4/03 -0500, you wrote:
I have multiple xml files that I wish to merge. An example of the files is
below. Note that a file
may contain thousands of <detail> nodes. I want to merge them so that the
clients are grouped together
I have been using a master xml file to try and merge but with no success in
keeping the clients together.
Also, due to the size of the files, is using xsl:copy and xsl:copy-of the
best way to approach this.
Thanks
.
<masterfile>
<doc filename="file1.xml"/>
<doc filename="file2.xml"/>
<doc filename="file3.xml"/>
</masterfile>
<client>
<name>A</name>
<subclient>
<name>a</name>
<detail>....</<detail>
<detail>....</<detail>
</subclient>
</client>
<client>
<name>A</name>
<subclient>
<name>b</name>
<detail>....</<detail>
<detail>....</<detail>
</subclient>
</client>
<client>
<name>B</name>
<subclient>
<name>c</name>
<detail>....</<detail>
<detail>....</<detail>
</subclient>
</client>
<merged>
<client>
<name>A</name>
<subclient>
<name>a</name>
<detail>....</<detail>
<detail>....</<detail>
</subclient>
<subclient>
<name>b</name>
<detail>....</<detail>
<detail>....</<detail>
</subclient>
</client>
<client>
<name>B</name>
<subclient>
<name>c</name>
<detail>....</<detail>
<detail>....</<detail>
</subclient>
</client>
</merged>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Rick Taylor
XML Developer
PPDM Association
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list