Subject: RE: [xsl] another hierarchical problem From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 28 Jun 2007 13:09:57 +0100 |
Best approach to this is XSLT 2.0 <xsl:for-each-group select="*" group-starting-with="skill"> <skill name="{.}"> <xsl:copy-of select="subsequence(current-group(), 2)"/> </skill> </xsl:for-each> Having said that, I haven't worked out why your current code doesn't work. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Thomas Kielczewski [mailto:thomaskiel@xxxxxxxxx] > Sent: 28 June 2007 12:39 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] another hierarchical problem > > Hi all, > > Given the flat XML: > > <root> > <skill>skill1</skill> > <procedure>procedure</procedure> > <note>note</note> > <supplies>supplies</supplies> > <cleanup>cleanup</cleanup> > <skill>skill2</skill> > ... > </root> > > I would like to structure this. I'm using the > generate-id/preceding-sibling method but unlike the example I > base this on, I would like to call ALL elements types to be > under it hierarchically (following-sibling::*). However, when > I try the following XSLT, <skill> begins nesting ad > infinitum, eventually maxing out the memory allocated to saxon-j. > > > Can anyone see anything wrong with this? > > <xsl:output method="xml" indent="yes" /> <xsl:strip-space > elements="*"/> > > <xsl:template match="skill"> > <xsl:element name="{name()}"> > <xsl:attribute name="id" select="text()"/> > <xsl:apply-templates > select="following-sibling::*[generate-id(preceding-sibling::skill[1]) > = generate-id(current())]" /> > </xsl:element> > </xsl:template> > > <xsl:template match="*"> > <xsl:copy-of select="." /> > </xsl:template> > > <xsl:template match="root"> > <xsl:apply-templates select="skill" /> </xsl:template> > </xsl:stylesheet> > > Perhaps another flat-to-hierarchical method is better suited? > > What if I need to create multiple levels of nesting? > Could that be done in a single stylesheet? Once I solve my > first problem, I could easily do it in several passes. I also > toyed with the idea of building a structured "skeleton" of my > parent element <skill> into a template and then populating > it. Is that an accepted technique? > > > I appreciate any pointers, > Thomas Kiel > > > > > ______________________________________________________________ > ______________________ > Choose the right car based on your needs. Check out Yahoo! > Autos new Car Finder tool. > http://autos.yahoo.com/carfinder/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] another hierarchical problem, Thomas Kielczewski | Thread | [xsl] Retrieving "markup" hidden in, AAS Contractor |
[xsl] another hierarchical problem, Thomas Kielczewski | Date | [xsl] Retrieving "markup" hidden in, AAS Contractor |
Month |