[xsl] Basic question about Namespace handling in XPath 1.0 (not necessarily related to XSLT)

Subject: [xsl] Basic question about Namespace handling in XPath 1.0 (not necessarily related to XSLT)
From: Prakash <prakash.subramaniam@xxxxxxxxxx>
Date: Wed, 28 Sep 2005 19:17:09 +0530
Hi All,

While going thro' the XPath 1.0 spec's LocationPath, I was wondering how the node selection is handled when the nodes are in their own namespaces. To explain in detail,

Let us take the following Xml example:

<?xml version="1.0">
<customers *xmlns*="http://www.customers.com";>
  <customer *xmlns:sup*="http://www.suppliers.com";>
      <*sup:name>*sgd</sup:name>
      <*sup:*pwd>hello</sup:pwd>
      <*sup:*details>
          *<order xmlns:sup*="http://www.anothersupplier.com"; *xmlns=""*>
               <*sup:name>*sr</sup:name>
          </order>
      </sup:details>
      <customerName>pr</customerName>
      *<order/>*
  </customer>
</customers>

So, two questions in this:

1. If we have a XPath like "//sup:name", how will the XPath processor know which "sup:name" will have to be returned? (considering that there are two sup:name elements that are in two different namespaces.
2. Similarly, if we have a XPath such as "//order", which "order" will be considered considering that there are two order elements both in default namespace (first order element is actually in null namespace whereas the second one in default namespace declared in the root element)


Thanks,
Prakash

Current Thread