[
Lists Home 
Date Index 
Thread Index
]
#
# is it possible to say in XPath
#
# a//@b
#
# is the above equivalent to:
#
# (a/@b  a//*/@b)
#
Yes. I think the easiest proof of this (using constructs that are allowed in
XPath 2.0 along the way) is
a//@b
means
a/descentantorself::node()/@b
which means
a/(descendant::node  self::node())/@b
which means
a/descendant::node()/@b  a/self::node()/@b
which means
a/child::node()/descendantorself::node()/@b  a/@b
which means
a/descendantorself::node()/child::node()/@b  a/@b
which means (given that nodes other than elements have no attributes)
a//*/@b  a/@b
Of course this assumes some equivalences which I haven't tried to prove
formally, for example that "" distributes over "/".
Michael Kay
