OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] Quick question regarding XPath

[ 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/descentant-or-self::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()/descendant-or-self::node()/@b | a/@b

which means

a/descendant-or-self::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









 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS