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>
--~--