Ik ben bezig met een parser te schrijven voor XML Schema's in PHP met de DOM XML extensie. Het eerste probleem wat ik tegenkwam (en ook het eerste wat ik probeerde te doen
) waren namespaces. Alleen is nergens te vinden hoe ik dat moet doen in PHP met DOM XML
PHP heeft wel DomNode->prefix(), maar die geeft de prefix van de namespace terug. Dat is niet zo erg, maar het moet wel gemappet kunnen worden naar een URI, omdat elke prefix goed is zolang de URI maar klopt. Ik kwam drie constants tegen in de PHP Manual: XML_GLOBAL_NAMESPACE, XML_LOCAL_NAMESPACE en XML_NAMESPACE_DECL_NODE. De eerste is niet gedefined en bij de laatste twee krijg ik geen reactie als ik een if() doe op alle elememten in het document, zo iets dus:
Dit geeft dus niks terug. Mijn vraag: Is er een manier om namespaces correct (dus op URI en niet op prefix) te handelen in PHP met DOM XML?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php $dom = domxml_open_mem( '...' ); $root = $dom->document_element(); foreach( $root as $child ) { if( $child->type == XML_LOCAL_NAMESPACE || $child->type == XML_NAMESPACE_DECL_NODE ) { echo( 'Gevonden' ); } } ?> |
Dit geeft dus niks terug. Mijn vraag: Is er een manier om namespaces correct (dus op URI en niet op prefix) te handelen in PHP met DOM XML?
[ Voor 3% gewijzigd door Verwijderd op 01-01-2003 16:27 . Reden: Foutje in code ]