XPath and Multiple Namespaces
| From: | Daniel Pupius | Date: | Mon, 01 Dec 2003 16:46:30 +0000 |
| Subject: | XPath and Multiple Namespaces | ||
| Groups: | php.xml.dev | ||
| Request: | Send a blank email to php-xml-dev+get-261@lists.php.net to get a copy of this message | ||
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: daniel.pupius@actelearning.com
New Oxford House
30 Barker's Pool
Sheffield S1 2HB
Tel: 0114 278 0798
Fax: 0114 249 1773
---------------------------------------------
http://www.actelearning.com/
---------------------------------------------