Subject: Re: [xsl] Removing hierarchy From: Martin Honnen <Martin.Honnen@xxxxxx> Date: Thu, 01 Oct 2009 13:50:12 +0200 |
I've got an input file like this: <items> <item> <a>abc</a> <b>def</b> <item> <a>ghi</a> <b>jkl</b> </item> <item> <a>mno</a> <b>pqr</b> <item> <a>stu</a> <b>vwx</b> </item> </item> </item </items
The items can be nested to any depth.
I want to convert this to:
<items> <item> <level>0</level> <a>abc</a> <b>def</b> </item <item> <level>1</level> <a>ghi</a> <b>jkl</b> </item> <item> <level>1</level> <a>mno</a> <b>pqr</b> </item <item> <level>2</level> <a>stu</a> <b>vwx</b> </item> </items
In other words I want to remove the hierarchy of items and replace it with a 'level' element.
What's the best way of doing this?
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="items"> <xsl:copy> <xsl:apply-templates select="descendant::item"/> </xsl:copy> </xsl:template>
<xsl:template match="item"> <xsl:copy> <level><xsl:value-of select="count(ancestor::item)"/></level> <xsl:copy-of select="*[not(self::item)]"/> </xsl:copy> </xsl:template>
Martin Honnen http://msmvps.com/blogs/martin_honnen/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Removing hierarchy, rowan@xxxxxxxxxxxxxx | Thread | Re: [xsl] Removing hierarchy, David Carlisle |
Re: [xsl] Create a web interface to, Andrew Welch | Date | Re: [xsl] Removing hierarchy, David Carlisle |
Month |