Hi,

> -position() doesn't work for me (it always returns '1' for 
> the first child
> of a node but i've to know the absolute position inside the 
> whole xml tree)

It only does this if the context nodeset is the set of siblings. You can
have the context node set be other stuff.

> -preceding-sibling::*/@* looks better i'll try it out

Well, that is for literal attributes, rather than child nodes (which is what
you seem to mean when you say attribute).

To clarify, "name" would be an attribute of "node" in this...
<node name="doddery"/>

> I start with the root node (naturally), list all Attributes 
> of the current
> selected node by recursive call, then list all childs also by 
> recursive call
> and so on.

You can match all the nodes of the entire xml tree with //* - this means
that if your XML is like this...

<root>
  <node>
    <subnode/>
    <subnode/>
  </node>
  <node>
    <subnode/>
  </node>
</root>

then if you have a template (the [..] is to make sure that the root node
isn't matched by the template, which would result in an infinite loop)...

<xsl:template match="/">
  <xsl:apply-templates select="//*[..]"/>
</xsl:template>

<xsl:template match="*">
  <xsl:text>For </xsl:text>
  <xsl:value-of select="name()"/>
  <xsl:text> the position is </xsl:text>
  <xsl:value-of select="position()"/>
  <xsl:text>
</xsl:text>
</xsl:template>

... your output will be

For root the position is 1
For node the position is 2
For subnode the position is 3
For subnode the position is 4
For node the position is 5
For subnode the position is 6

> ps>I've attached the xsl. If anyone has time to look in it....
> ...any comments/proposals etc. are very welcome

Hope this helps. And if there are any follow-up questions, please look into
the xsl list at the URL I gave you earlier.

Cheers,
Dave.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to