xsl-list
[Top] [All Lists]

RE: [xsl] Breaking up a large XML document into several smaller ones

2008-01-12 01:45:21
A SAX solution would execute faster and in less memory but would take rather
longer to write.

It's not difficult in XSLT 2.0

<xsl:for-each-group select="widget" group-by="(position()-1) idiv 1000">
  <xsl:result-document href="widgets{position()}.xml">
    <widgets>
      <xsl:copy-of select="current-group()"/>
    </widgets>
  </xsl:result-document>
</xsl:for-each-group>

Michael Kay
http://www.saxonica.com/

 

-----Original Message-----
From: Glen Mazza [mailto:glen(_dot_)mazza(_at_)gmail(_dot_)com] 
Sent: 11 January 2008 14:49
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Breaking up a large XML document into several 
smaller ones

Hello,

I searched the XSLT FAQ and could not find an answer to this. 
 If only for proof-of-concept (we may find better solutions 
not needing this), I am interested in breaking up a very 
large XML document into multiple smaller ones, and was 
wondering if XSLT would be a good solution for this.  For 
example, if I have the following:

<order>
   <widgets>
       <widget.../>
       <widget.../>
       ... (about 100000 widgets) ...
   </widgets>
</order>

And, as output, I would like about hundred documents of 1000 
widgets each, with the last document having the remainder 
(possibly not 1000)
widgets:

<order>
   <widgets>
       <widget../>     // widget #1

       <widget.../>    // widget #1000
   </widgets>
</order>

<order>
   <widgets>
       <widget../>     // widget #1001

       <widget.../>    // widget #2000
   </widgets>
</order>
...

Can this be done via XSLT, or would a SAX-based solution be 
more appropriate, or?

Thanks,
Glen

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--