[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Basic question about Namespace handling in XPath 1
See the method setNamespaceContext() method on the interface javax.xml.xpath.XPath. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Prakash [mailto:prakash.subramaniam@xxxxxxxxxx] > Sent: 28 September 2005 15:12 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: Basic question about Namespace handling in > XPath 1.0 (not necessarily related to XSLT) > > Thanks Geert. > > My question is not in relation to XSLT. I was talking about the > namespace prefix resolution in general for XPath. For > example, in Java, > JAXP 1.3 has some APIs to process XPath given a context ( > likewise DOM > Level 3 has some APIs). These APIs are application > independent. I guess, > the namespace mappings available in scope to the context node will be > the deciding factor, right?. Pls, correct me if I am wrong. > > Thanks, > Prakash > > Geert Josten wrote: > > > Hi, > > > > The answer should be pretty clear, it all depends on how > you declare > > the namespaces in your XSL stylesheet... :) > > > >> 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. > > > > > > <xsl:value-of select="//sup:name" > xmlns:sup="http://www.suppliers.com" > > /> will result in the first one. > > > > <xsl:value-of select="//sup:name" > > xmlns:sup="http://www.anothersuppliers.com" /> will result in the > > second one. > > > > You will probably choose to assing prefix sup1 to the first > namespace > > and sup2 to the second. If you want both, you can then > simply specify > > //sup1:name|//sup2:name (or //*:name in XSLT 2.0 altogether) > > > >> 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) > > > > > > Likewise. I expect that //order results in the first when you don't > > specify a default namespace, and in the second if you use > > xmlns="http://www.customers.com". > > > > It is adviced not to use default namespaces in XSL > stylesheets, though. > > > > Cheers, > > Geert
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|