Hi all,

I am currently working on an XPath engine written in C++.

Consider the following XML fragment:

Code:
<node>
  <item id="1">Hello World!</item>
  <node>
    <item id="2">Hello Mars!</item>
  </node>
</node>
And consider the following XPath query:

Code:
//node//item
It is clear from the XML fragment that this query could, logically, operate in one of two ways.

Firstly, it could return one copy of item 1 and two copies of item 2, because item 2 is reachable in two ways using the xpath query given.

Secondly, it could return one copy of item 1 and one copy of item 2 because the two paths to item 2 both terminate at the same XML object.

It is easy for me to implement either behaviour in the C++, and both behaviours are logically correct, but the question is, which behaviour is generally considered to be "preferentially" correct?

TIA,

Mike.