I'm having a hard time wrapping my head around XSLT but I heard it's possible to split an XML file into multiple files. Basically I'd like to copy all the elements up to the first file and after the last file and then add the individual file content for each output file.
Could someone give me some pointers on this if it's even possible?
Thanks,
complete.xml
<rootelem>
<elem>
<file attr1='1'>
<content>content file 1</content>
</file>
<file attr2='2'>
<content>content file 2</content>
</file>
<file attr3='3'>
<content>content file 3</content>
</file>
</elem>
</rootelem>
OUTPUT:
complete_PART1.xml
<rootelem>
<elem>
<file attr1='1'>
<content>content file 1</content>
</file>
</elem>
</rootelem>
complete_PART2.xml
<rootelem>
<elem>
<file attr2='2'>
<content>content file 2</content>
</file>
</elem>
</rootelem>
complete_PART3.xml
<rootelem>
<elem>
<file attr3='3'>
<content>content file 3</content>
</file>
</elem>
</rootelem>
It is not possible in pure XSLT 1.0 to produce more than one output files. One could use the
<exslt:document>
extension element for this purpose.In XSLT 2.0 use the
<xsl:result-document>
element.Responding to your comment on @Dimitre's answer...
You wrote,
This doesn't quite match your XML, which has
rootelem
as an outermost element, and your comment saysroot
as an outermost element. You probably want something like this:You could get fancier, trying to use
<xsl:copy>
instead of literal result elements for root and elem, but it doesn't seem worth the effort unless they're going to vary.If you want to use
from an ANT xslt call, you need to use 2.0., just add the following in your ANT call:
And specifiy Version="2.0" And enjoy file splitting.