|
Subject: RE: [xsl] flatten a hierachy and change positions From: "Andreas L. Delmelle" <a_l.delmelle@xxxxxxxxxx> Date: Wed, 24 Sep 2003 23:09:27 +0200 |
> -----Original Message-----
> From: Elke Naraschewski
>
> I looked up the list and books but still don't get a clue which
> method to choose. I want to flatten a hierachy and change
> positions, the way the following example shows:
>
Not an XSLT-expert, but I'm gonna try anyway. (So to the real experts:
please read the *whole* message before correcting the mistakes in the
suggested solution.)
I have to make some suppositions first, however...
You have:
>
<root>
> <g1>
> <u1><s></s></u1>
</g1> <!-- I presume... -->
> <g2>
> <u2></u2>
> </g2>
</root>
>
You need:
>
> <u1></u1>
> <s></s>
> <g1></g1>
> <u2></u2>
> <g2></g2>
<root></root>
Correct? Needs some kind of a recursive template, I think.
If so, something like:
<xsl:template match="/">
<xsl:call-template name="one">
<xsl:with-param name="parnode" select="."/>
</xsl:call-template>
</xsl:template>
<xsl:template name="one">
<xsl:param name="parnode" select="node()"/>
<xsl:for-each select="$parnode/node()">
<xsl:call-template name="one">
<xsl:with-param name="parnode" select="."/>
</xsl:call-template>
<xsl:call-template name="another">
<xsl:with-param name="parname" select="name(.)"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="another">
<xsl:param name="parname" select="empty"/>
<xsl:element name="{$parname}">
<xsl:value-of select="$parname"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
may just help you out here.
I'm not 100% certain ( have tested this on the input as completed above, and
the result is
<s>s</s>
<u1>u1</u1>
<g1>g1</g1>
<u2>u2</u2>
<g2>g2</g2>
<root>root</root> <!-- last one left out when you set the parameter in the
first template call
to 'node()' instead of '.' -->
Needs some adjustments, as I received error messages complaining about
'Illegal values being used for attribute name' (Xalan-J 2.5.1).
Perhaps one of the gurus can take a look at this and correct this error? I
would certainly appreciate knowing what flaws there are in my logic here...
Greetz,
Andreas Delmelle
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] flatten a hierachy and ch, Michael Kay | Thread | Re: [xsl] flatten a hierachy and ch, Jeni Tennison |
| Re: [xsl] generate a table with row, Tim Meals | Date | RE: [xsl] splitting multiple occurr, Passin, Tom |
| Month |