|
Subject: RE: [xsl] calculate depth of an xml-tree From: "Michael Kay" <mhk@xxxxxxxxx> Date: Tue, 22 Apr 2003 14:23:49 +0100 |
<xsl:for-each select="//*">
<xsl:sort select="count(ancestor-or-self::*)" data-type="number"/>
<xsl:if test="position()=last()">
<xsl:value-of select="count(ancestor-or-self::*)"/>
</xsl:if>
</xsl:for-each>
Or in 2.0:
max(for $n in //* return count($n/ancestor-or-self::*))
You can possibly speed it up a little by excluding non-leaf elements, or
by using a recursive template that supplies the depth of a node as a
parameter, avoiding the need to count ancestors of every node.
Michael Kay
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> Florian Bauer
> Sent: 22 April 2003 12:24
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] calculate depth of an xml-tree
>
>
> hi
>
> and now my 2nd (and hopefully last) question for today ...
>
> I have to write an xsl file, which calculates the maximal depth of an
> input xml file.
>
> <abc>
> <cde>
> <efg/>
> <asd/>
> </cde>
> <aaa/>
> </abc>
>
> => maxdepth = 3 ....
>
> I think I have to use a "for each" with sorting and increment a
> variable, but I don't know how to do this (you see, I'm a big noob @
> xml/xsl :( ... )
>
> would be great if someone could help me.
>
> cya Florian Bauer
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] calculate depth of an xml, Oleg Tkachenko | Thread | [xsl] count of how many times a par, Leena Kulkarni |
| [xsl] count of how many times a par, Leena Kulkarni | Date | RE: [xsl] Passing a parameter to th, Michael Kay |
| Month |