Pascal,

the xpath function "local-name()" is may the proper one for your purposes,
take a look.

Regards,

John



On Fri, February 22, 2008 21:14, Wing Yew Poon wrote:
> Sorry, typo - the query should have been "declare default element
> namespace 'mynamespace'; /a/b".
>
> ________________________________
>
>
> From: Wing Yew Poon [mailto:[EMAIL PROTECTED]
> Sent: Friday, February 22, 2008 11:11 AM
> To: [email protected]
> Subject: RE: Applying XPath to an XML with or without namespace
>
>
>
> Pascal,
> in <a xmlns="mynamespace">
> <b/>
> </a>
> what you have is every element within and including a being qualified as
> having the namespace "mynamespace". Thus, the XPath must qualify the
> elements too. This is only logical. There are a couple of ways you can
> qualify the elements in the XPath. You can use the prolog you have in
> "declare namespace xs='mynamespace';/xs:a/xs:b"; you can also use
> "declare default namespace 'mynamespace; /a/b".
> The bottom line is that the path must follow the structure of the
> document. If elements/attributes are namespace-qualified in the document,
> then they must be too in the path. - Wing Yew
>
>
>
> ________________________________
>
>
> From: Pascal Maugeri [mailto:[EMAIL PROTECTED]
> Sent: Friday, February 22, 2008 8:40 AM
> To: [email protected]
> Subject: Applying XPath to an XML with or without namespace
>
>
>
> Hi
>
>
> I would like to have some clarifications on how to apply XPath query on
> a XML document depending if it comes with or without a namespace
> definition.
>
> When I run the following code executing the XPath query /a/b on a
> document with no namespace:
>
> String doc = "<a><b/></a>";
> String query = "/a/b";
> XmlObject xml = XmlObject.Factory.parse(doc);
> XmlCursor cursor = xml.newCursor();
> cursor.push(); cursor.selectPath(query);
>
> it gives me the correct result (<c/>).
>
> But if if the document comes with a namespace, for instance:
>
>
> <a xmlns="mynamespace">
> <b/>
> </a>
>
>
> the same code does not give me any result.
>
> After investigating I found that a working code could be:
>
>
> String doc = "<a xmlns="mynamespace"><b/></a>";
> String query = "declare namespace xs='mynamespace';/xs:a/xs:b";
> XmlObject xml = XmlObject.Factory.parse(doc);
> XmlCursor cursor = xml.newCursor();
> cursor.push(); cursor.selectPath(query);
>
> Is there a better way to do this without having to set the prefix "xs:"
> in the Xpath query for each level ? I would like to find a generic way to
> handle XML documents with or without namespace.
>
> Regards,
> Pascal
>
>
> Notice: This email message, together with any attachments, may contain
> information of BEA Systems, Inc., its subsidiaries and affiliated entities,
> that may be confidential, proprietary, copyrighted and/or legally
> privileged, and is intended solely for the use of the individual or entity
> named in this message. If you are not the intended recipient, and have
> received this message in error, please immediately return this by email
> and then delete it.
>
> Notice:  This email message, together with any attachments, may contain
> information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
> entities,  that may be confidential,  proprietary,  copyrighted  and/or
> legally privileged, and is intended solely for the use of the individual
> or entity named in this message. If you are not the intended recipient,
> and have received this message in error, please immediately return this
> by email and then delete it.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to