That is, for every node (not an attribute or a namespace),
the following pair identifies it uniquely:
(count(ancestor::node()), count(preceding::node()))
For an attribute node or a namespace node this becomes the tripple:
(name(), count(../ancestor::node()), count(../preceding::node()))
Finding the node from its id has an efficient implementation
using keys.
Only if you ignore the cost of building the index, which is likely to be
horrendous.
I missed the beginning of this thread, why can't you use generate-id()?
Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list