=?ISO-8859-1?Q?Fabrice_Desr=E9_-_France_Telecom_R=26D/MAP?= =?ISO-8859-1?Q?S/AMS?= <[EMAIL PROTECTED]> writes:
> CAPRON Patrick wrote: >> 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 > > The second query works because 'Document' is the name if the > element... If you use local-name() instead it wont work anymore. > > You're facing a faq about XPath and default namespaces : there is no > default namespace in XPath. So if you want to select a namespaced > element, you must bind the namespace's uri to a prefix and use it in > your xpath expression. It doesn't matter if your document is using a > default namespace or a prefix. > > So try something like : xmlXPathRegisterNs(xpathCtx, BAD_CAST > "urn:ssp.pm.GetAccount$camt.003.001.02", BAD_CAST "ssp"); > and the query : /REQUEST/RequestPayload/ssp:Document > > And also, your document uses a prefix that is not declared : > t.xml:10: namespace error : Namespace prefix SwInt on RequestPayload is > not defined > <SwInt:RequestPayload> prefixes without declerations are ok though arn't they? I thought that was one of the design ideas behind namespaces; that colon separated node names are just names. Nic _______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] http://mail.gnome.org/mailman/listinfo/xml
