|
Subject: [xsl] arbitrary depth element type conversion From: Sebastian Tennant <sebyte@xxxxxxxxxxxxxxx> Date: Fri, 03 Feb 2006 12:12:53 +0000 |
Hi all,
Given an XML doc:
<document>
<first>
first
<first-child-of-first>
first child of first
</first-child-of-first>
<second-child-of-second>
second child of second
</second-child-of-second>
</first>
<second>
second
<first-child-of-second>
first child of second
<first-grandchild-of-second>
first grandchild of second
</first-grandchild-of-second>
</first-child-of-second>
</second>
<third>
third
</third>
orphan
</document>
I would like to preserve the exact same structure but change all the
elements to divs, with class attributes reflecting the source element
types, to an arbitrary depth.
I have almost got there with this stylesheet:
<xsl:template match="document">
<xsl:apply-templates select="child::*" />
</xsl:template>
<xsl:template match="*">
<xsl:element name="div">
<xsl:attribute name="class">
<xsl:value-of select="name(.)" />
</xsl:attribute>
<xsl:value-of select="." />
<xsl:apply-templates select="child::*" />
</xsl:element>
</xsl:template>
but the element contents of child elements are being duplicated in
parent elements:
<div class="first">
first
first child of first
second child of second
<div class="first-child-of-first">
first child of first
</div>
<div class="second-child-of-second">
second child of second
</div>
</div>
<div class="second">
second
first child of second
first grandchild of second
<div class="first-child-of-second">
first child of second
first grandchild of second
<div class="first-grandchild-of-second">
first grandchild of second
</div>
</div>
</div>
<div class="third">
third
</div>
How can I avoid this?
sdt
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Repace regex with a varia, Agnisys | Thread | Re: [xsl] arbitrary depth element t, Sebastian Tennant |
| Re: [xsl] Re: Language-specific out, Dimitre Novatchev | Date | Re: [xsl] arbitrary depth element t, Sebastian Tennant |
| Month |