Altova Mailing List Archives>Archive Index >comp.text.xml Archive Home >Recent entries >Thread Prev - Re: help using XSLT in parsing nested xml trees [Thread Next] Re: help using XSLT in parsing nested xml treesTo: NULL Date: 4/2/2007 8:15:00 AM On Mar 30, 12:19 am, p.le...@ctncorp.com wrote: > On Mar 30, 12:49 am, binary_sun...@yahoo.com wrote: > > > > > <article> > > <title/> > > <date/> > > <body/> > > <article> > > <title/> > > <date/> > > <body/> > > <article> > > <title/> > > <date/> > > <body/> > > </article> > > </article> > > </article> > > > The desired output from an XSLT would be something like > > three separate files (easy) with the structure: > > Unless I'm much mistaken, XSLT1 cannot produce several > result trees in one pass. For that matter, I'm not sure it > can be done with EXSLT; and XSLT2 implementations are not > that common yet. > > > > > or at least: > > > <article> > > <title/> > > <date/> > > <body/> > > </article> > > <article> > > <title/> > > <date/> > > <body/> > > </article> > > <article> > > <title/> > > <date/> > > <body/> > > </article> > > > So how do I parse the output? It looks like a recursive > > process, as the number of nestings will vary with the > > number of articles in the signature, and by magazine. The > > idea of attaching an attribute <article id="n"> to each > > article occurred to me, but this changes the workflow > > somewhat, as ids were to be established in > > post-processing, rather than by hand. > > Perhaps I'm missing something, but unnesting the structure > described seems trivial enough to me: > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:template match="/"> > <unnested-articles> > <xsl:apply-templates select="//article"/> > </unnested-articles> > </xsl:template> > <xsl:template match="article"> > <xsl:copy> > <xsl:apply-templates > select="@*|node()" mode="clone"/> > </xsl:copy> > </xsl:template> > <xsl:template match="@*|node()" mode="clone"> > <xsl:copy> > <xsl:apply-templates > select="@*|node()" mode="clone"/> > </xsl:copy> > </xsl:template> > <xsl:template match="article" mode="clone"/> > </xsl:stylesheet> > > -- > Pavel Lepin Great! Thanks... This looks like it will work for now, and I'm going to pursue a dialogue with the folks at Adobe to see why the XML is being formatted like that in the first place, and if there is a way to configure it differently. Much appreciated. MC | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
