[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
RE: [xml] XPath evaluation
- From: "CAPRON Patrick" <capronpa e-i com>
- To: <xml gnome org>
- Cc: AUFFRAY Gilles <auffragi e-i com>
- Subject: RE: [xml] XPath evaluation
- Date: Wed, 26 Apr 2006 17:16:30 +0200
I have tried with the use of xmlXPathRegisterNs, but it doesn't work.
xmlXPathRegisterNs(xpathCtx, BAD_CAST "urn:ssp.ApplicationHeader$ahV10", BAD_CAST "")
xmlXPathRegisterNs(xpathCtx, BAD_CAST "urn:ssp.pm.GetAccount$camt.003.001.02", BAD_CAST "")
xmlXPathRegisterNs(xpathCtx, BAD_CAST "SwInt", BAD_CAST "")
It has the same behaviour...
/REQUEST/RequestPayload/Document doesn't work
/REQUEST/RequestPayload/*[name()='Document'] works fine
Patrick CAPRON
-----Message d'origine-----
De : Nic [mailto:nferrier tapsellferrier co uk]
Envoyé : mercredi 26 avril 2006 14:52
À : CAPRON Patrick
Cc : xml gnome org; AUFFRAY Gilles
Objet : Re: [xml] XPath evaluation
"CAPRON Patrick" <capronpa e-i com> writes:
> Hi,
>
> I don't understand how libxml2 is evaluating some expressions.
>
> I have an XML who looks like :
> <?xml version="1.0"?>
> <REQUEST>
> <HEADER/>
> <CODEAPPLI>TARGET2</CODEAPPLI>
> <BICCOR>CMCIFRPP</BICCOR>
> <NMSRVLOG>NMSRVLOG</NMSRVLOG>
> <NMRQTLOG>NMRQTLOG</NMRQTLOG>
> <REQUESTREF>REQUESTREF</REQUESTREF>
> <RQTSTATUS>RQTSTATUS</RQTSTATUS>
> <SwInt:RequestPayload>
> <AppHdr xmlns="urn:ssp.ApplicationHeader$ahV10">
> <From>
> <Type>NAME</Type>
> <Id>PM</Id>
> </From>
> <To>
> <Type>NAME</Type>
> <Id>PM</Id>
> </To>
> <MsgRef>ABCDEF</MsgRef>
> <CrDate>2006-04-19T12:00:00</CrDate>
> </AppHdr>
> <Document xmlns="urn:ssp.pm.GetLimit$camt.009.001.02">
> <camt.009.001.02>
> <MsgId>
> <Id>REFERENCE12345</Id>
> </MsgId>
> <LmtQryDef>
> <LmtCrit>
> <NewCrit>
> <SchCrit>
> <AcctOwnr>CMCIFRPAXXX</AcctOwnr>
> </SchCrit>
> </NewCrit>
> </LmtCrit>
> </LmtQryDef>
> </camt.009.001.02>
> </Document>
> </SwInt:RequestPayload>
> </REQUEST>
>
> I use the xmlXPathEvalExpression function.
> If I use the expression : /REQUEST/RequestPayload/Document the function returns 0 node.
> If I use the expression : /REQUEST/RequestPayload/*[name()='Document'] it returns the node I'm
> looking for.
>
> Could anybody explain me why there is a difference between this two expressions ?
> I believed that they were the same...
> Is it because of the xmlns ?
Yes, I think so.
But I don't know why the second one matches at all because
RequestPayload isn't in an empty namespace either; so I expected it to
match if you did:
/REQUEST/SwInt:RequestPayload:urn:ssp.pm.GetLimit$camt.009.001.02:Document
To get xpath to match this you could register the namespaces with tags
and then eval the expressions.
Nic Ferrier
http://www.tapsellferrier.co.uk
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]