Subject: Re: [xsl] XPath problem with namespace attribute From: "Matthew Hailstone" <matthew.hailstone@xxxxxxxxx> Date: Fri, 5 Sep 2008 10:58:15 -0600 |
Solved it. Looks like another option is to put the empty prefix in my XPath. /One/Two/:Three/:Four/:Five But is this dependent on a particular API? (Shouldn't be, should it?) Thanks, Matthew On Fri, Sep 5, 2008 at 10:47 AM, Matthew Hailstone <matthew.hailstone@xxxxxxxxx> wrote: > Thanks for the replies on this. Let me sum up then: > > There is no way to create an XPath query for an empty defined > namespace as in the original XML. > (The reason I'm looking for such is that I am working with a vendor > that uses the "xmlns" "attribute"(but not really attribute), but does > not specify the namespace prefix. > > So, I will need to get the vendor to: > 1. Specify a namespace prefix > 2. Change the "xmlns" ""attribute"" to something other than "xmlns" > 3. Remove the "xmlns" and value from the element altogether > > Thoughts? > > Thanks, > Matthew > > On Fri, Sep 5, 2008 at 9:58 AM, Michael Kay <mike@xxxxxxxxxxxx> wrote: >> The xmlns declaration (in XPath terms it's a namespace binding, not an >> attribute) changes the name of the elements Three, Four, and Five. That >> means you can't select them under their original names. You need to select >> them under their namespaced names, which you do by binding a prefix to the >> namespace and using that prefix in your path expression: >> >> /One/Two/n:Three/n:Four/n:Five >> >> Just as a bit of advice, you really should assume that a bug in your >> implementation is the least probable explanation when you get unexpected >> results. Google for "XPath default namespace" and you will find zillions of >> references to this usability gotcha. >> >> Michael Kay >> http://www.saxonica.com/ >> >>> -----Original Message----- >>> From: Matthew Hailstone [mailto:matthew.hailstone@xxxxxxxxx] >>> Sent: 05 September 2008 16:50 >>> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx >>> Subject: [xsl] XPath problem with namespace attribute >>> >>> All, >>> >>> I hope it is ok to post this XPath comment to this list. >>> >>> It seems there is a bug in the XPath result when an empty >>> namespace attribute is used: >>> >>> XML: >>> <?xml version="1.0" encoding="utf-8"?> >>> <One> >>> <Two> >>> <Three xmlns="http://www.hailstone.org/"> >>> <Four> >>> <Five/> >>> </Four> >>> </Three> >>> </Two> >>> </One> >>> >>> XPath: >>> /One/Two/Three/Four/Five >>> >>> Expected Result: >>> The element "Five" should be returned. >>> >>> Result: >>> Nothing is returned. >>> >>> Modifications of element "Three" that fix the problem: >>> >>> ... >>> <Three xmlns:something="http://www.hailstone.org"> >>> ... >>> >>> ... >>> <Three normalattribute="http://www.hailstone.org"> >>> ... >>> >>> Is this a bug in the XPath implementation? >>> Is there something something special about the "xmlns" >>> attribute that I don't know? >>> >>> Thoughts? >>> >>> Thanks, >>> Matthew
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath problem with namesp, Matthew Hailstone | Thread | RE: [xsl] XPath problem with namesp, Michael Kay |
Re: [xsl] XPath problem with namesp, Matthew Hailstone | Date | RE: [xsl] XPath problem with namesp, Michael Kay |
Month |