Pascal,

here is an example,

suppose that you want to locate the element "b" which is a child of element
"a", the xpath expression should be written as follows:

//*[local-name()="a"]/*[local-name()="b"]


Regards,

John


On Mon, February 25, 2008 12:43, Pascal Maugeri wrote:
> Hi John
>
>
> I see what you mean but could give me an example of a query with
> local-name() ? Thank you it is very interesting.
>
>
> Regards,
> Pascal
>
>
> On Sat, Feb 23, 2008 at 11:21 AM, Psoroulas John
> <[EMAIL PROTECTED]>
> wrote:
>
>
>> 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]
>>
>>
>>
>



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

Reply via email to