Ah, that makes real sense. Thanks! That last quote was a good one.
Thanks again, Rob
Dimitre Novatchev wrote:[color=blue]
> Another quote from the XPath 1.0 Spec, which describes this topic even more
> precisely:
>
> "NOTE: The ancestor, descendant, following, preceding and self axes
> partition a document (ignoring attribute and namespace nodes): they do not
> overlap and together they contain all the nodes in the document."
>
>
> Cheers,
> Dimitre Novatchev
>
>
> "Dimitre Novatchev" <x@yyy.com> wrote in message
> news:42eee2d8$0$60338$892e7fe2@authen.white.readfr eenews.net...[color=green]
> >
> > <rob.guitar.rob@gmail.com> wrote in message
> > news:1122945838.963427.304630@z14g2000cwz.googlegr oups.com...[color=darkred]
> >> Hello,
> >>
> >> My last few posts have been revolving aroung the same problem, and I
> >> still cant solve it and I would be really appreciate if anyone could
> >> spot a problem.
> >>
> >> a section of my XML goes like
> >>
> >> ....
> >> <parent>
> >> <child>
> >> <grandchild1>
> >> <grandchild2>
> >> <child>
> >> <parent>
> >>
> >> /...
> >>
> >> I need to describe a numeric link between grandchild elements and the
> >> child elements.
> >>
> >> I have been using count(preceding::*) to id the cells numerically:[/color]
> >
> > It is not possible to identify a node uniquely using only one axis.
> >[color=darkred]
> >>
> >>
> >> <xsl:template select="grandchild1|grandchild2">
> >> <MyID>
> >> Child: <xsl:value-of select="count(../preceding::*)"/>
> >> Grandchild: <xsl:value-of select="count(./preceding::*)"/>
> >> </MyID>
> >> </xsl:template>
> >>
> >>
> >> However, the first grandchild1 element that runs this has the same
> >> count as the child element. (35 and 35). The second grandchild element
> >> that runs is incremented by one as expected, 35 and 36, meaning it
> >> seems 1 too low. The obvious problem is the first counts are returned
> >> the same, negating the idea of unique numeric ID's.
> >>
> >> Are these results to be expected?[/color]
> >
> > Yes.
> >
> > The "preceding" and "ancestor" axis are non-overlapping and can be thought
> > of as the X and Y axis in a two-dimensional space (plane).
> >
> > To quote the XPath 1.0 spec:
> >
> > "the preceding axis contains all nodes in the same document as the context
> > node that are before the context node in document order, excluding any
> > ancestors and excluding attribute nodes and namespace nodes"
> >
> >
http://www.w3.org/TR/xpath#axes
> >
> >[color=darkred]
> >> I do not know why/how the ../ and ./
> >> return the same value (surely the ../preceding has come back a node in
> >> that first case and therefore should be -1 of the grandchild1?)
> >>
> >> I know a simple fix is just to add one onto all of the grandchilds
> >> (count(./preceding::*)+1) but it seems slight dodgey, i.e. a fix to a
> >> potential problem in my XSL.
> >>
> >> I would really appreciate is anyone could help me understand why this
> >> does not work, so that I can fix it properly.[/color]
> >
> > An unique ID can be constructed taking both the "ancestor" and "preceding"
> > axis into account and generating a *pair* of numbers.
> >
> > Another way is to use xsl:number
> >
> >
> > Cheers,
> > Dimitre Novatchev
> >[color=darkred]
> >>
> >> Any help will again be most appreciated.
> >>
> >> Thanks, Rob.
> >>[/color]
> >
> >[/color][/color]