xsl-list
[Top] [All Lists]

[xsl] Counting indent level

2008-09-28 21:23:15
G'day all,

I've got some XML that contains a list of items and groups, and each group could contain either more items or more groups like so :

<catalog>
        <item />
        <group>
                < group >
                < item />
                < item />
                < group >
                        < group >
                                < item />
etc

So groups can contain either items or more groups or nothing. Items only exist at the root (catalog) of this part of the tree or inside groups. I'm outputting a single list of all of the items and group currently using this :

<xsl:for-each select="item|descendant::group|descendant::group/item">

The reason for that is that a item node might also contain child nodes that are also called <item> nodes that I don't want. I only want a item node that has it's immediate parent a group node. (There may be an easier way to do that...)

How do I count the "indent" level - so how many parent "groups" each item or group has, right back up to the catalog node? Eg in the example above, it would be 0 for the first item and group, 1 for the next 4 etc.

I can change the for-each that I'm using, although it has to remain in the same order, so I can't process them out of order.

Is the easiest way to count back up the tree for each one, or is there a way to build that into the for-each? If I use count, how do I count the path back up to the catalog node?

Thanks in advance,
Nick

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>