[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Transforming XML to multiple different versions (multi
Hi I've been struggling with this for a few days now and my XSL skills are very basic at the moment. I have XML that contains multiple chapters and I want to output to multiple files, each of which should contain only one of the <chapter> nodes, but with the rest of the file unchanged. E.g. the input file is of the form: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE book SYSTEM "booksarc.dtd"> <book id="bk117"> <metadata> <isbns><isbn ref="bk117">0750307625</isbn></isbns> <history><firstpub>1989</firstpub></history> <publisher>Institute of Physics Publishing</publisher> </metadata> <bookdata> <title>Measured tones</title> <subtitle>The interplay of physics and music</subtitle> <author-group><author aff="bk117a1"><fnm>Ian</fnm><snm>Johnston</snm></author> <affil id="bk117a1">University of Sydney, Australia</affil> </author-group> <contents pdf="bk117v1.pdf"> <chapter type="front" ser="1" head="" start="i" pdf="bk117f1.pdf"> <title>Prelims, List of tables and Prologue</title> </chapter> <chapter ser="1" num="1" start="1" pdf="bk117c1.pdf"> <title>Why these and not others?</title> </chapter> <chapter ser="2" num="2" start="17" pdf="bk117c2.pdf"> <title>Music and scientific method</title> </chapter> <chapter ser="3" head="Interlude 1" start="37" pdf="bk117c3.pdf"> <title>Brass instruments</title> </chapter> </contents> </bookdata> </book> and I want to output to separate files of the form: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE book SYSTEM "booksarc.dtd"> <book id="bk117"> <metadata> <isbns><isbn ref="bk117">0750307625</isbn></isbns> <history><firstpub>1989</firstpub></history> <publisher>Institute of Physics Publishing</publisher> </metadata> <bookdata> <title>Measured tones</title> <subtitle>The interplay of physics and music</subtitle> <author-group><author aff="bk117a1"><fnm>Ian</fnm><snm>Johnston</snm></author> <affil id="bk117a1">University of Sydney, Australia</affil> </author-group> <contents pdf="bk117v1.pdf"> <chapter type="front" ser="1" head="" start="i" pdf="bk117f1.pdf"> <title>Prelims, List of tables and Prologue</title> </chapter> </contents> </bookdata> </book> etc. etc. I have worked out how to output the <chapter> elements to multiple files, but I'm having trouble copy ing the preceding and following parts of the xml. Here is a snippet of the XSL I have been working with: (I'm using XML::LibXSLT to do the transform) <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <xsl:apply-templates select="//chapter" /> </xsl:template> <xsl:template match="chapter"> <xsl:variable name="docnumber"> <xsl:number value="position()" format="1"/> </xsl:variable> <xsl:document href="/iop/ebooks/data/load/tony-dtd/tmp{$docnumber}.html" method="html"> <xsl:copy-of select="."/> </xsl:document> </xsl:template> </xsl:stylesheet> I have left out all my attempts to copy the remaining parts of the xml (including rewriting the default templates and using copy-of on preceding and following nodes). I hope someone can point me in the right direction. Many thanks Richard XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|