[xsl] another hierarchical problem

Subject: [xsl] another hierarchical problem
From: Thomas Kielczewski <thomaskiel@xxxxxxxxx>
Date: Thu, 28 Jun 2007 04:38:46 -0700 (PDT)
Hi all,

Given the flat XML:


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()"/>
= generate-id(current())]" />
<xsl:template match="*">
     <xsl:copy-of select="." />

<xsl:template match="root">
    <xsl:apply-templates select="skill" />

Perhaps another flat-to-hierarchical method is better

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.

Current Thread