XPath and Multiple Namespaces
[email protected] ("Daniel Pupius") Mon, 1 Dec 2003 16:46:30 -0000
| Newsgroups | php.xml.dev |
|---|---|
| Organization | act e-learning |
| Message-ID | <[email protected]> |
I'm having nightmares with xpath queries on xml documents with multiple
namespaces. For example, take the following test file:
<test xmlns="http://main.com" xmlns:sub="http://sub.com">
<item>
<subitem>
<sub:testnode>Testing 1 2 3</sub:testnode>
</subitem>
</item>
</test>
You'd expect that I could access the testnode using:
/i:test/i:item/i:subitem/sub:testnode
Where i is a reference to the default namespace specified using
xpath_register_ns() as was suggested in a post on one of the news groups.
But it seems that xpath_register_ns() overwrites previously specified
namespaces, for example:
1 $xpath = $dom->xpath_new_context();
2 xpath_register_ns($xpath,"sub", "http://sub.com");
3 xpath_register_ns($xpath,"i", "http://main.com");
4 $xnode = xpath_eval($xpath,"/i:test");
5 print_r($xnode);
Will find the root node, however swap lines 2 and 3 around and it will fail.
So my problem seems to stem from registering multiple name spaces.
Hope this makes sense and someone can help.
Regards
Dan
---------------------------------------------
act : making e-learning work
---------------------------------------------
Daniel Pupius BSc(hons) MA
Senior Lead Developer
email: [email protected]
New Oxford House
30 Barker's Pool
Sheffield S1 2HB
Tel: 0114 278 0798
Fax: 0114 249 1773
---------------------------------------------
http://www.actelearning.com/
---------------------------------------------