xsl-list
[Top] [All Lists]

Re: merging multiple xml files

2003-06-04 13:47:06
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



<Prev in Thread] Current Thread [Next in Thread>