Hello,
checking out the behavior of Namespaces & Prefixes of the new dom
implementation of PHP5 I got some (for me!) unexpected results.
look at the following source code: (plz copy&paste it to your editor ;)
<pre>
<?php
// PHP5: ext/dom: Namespace Tests
function printRootNS($xmlCode) {
$doc = new DomDocument();
$doc->loadXML($xmlCode);
$root = $doc->documentElement;
print(trim(htmlspecialchars($doc->saveXML())) . "\n\t => Namespace of
root-Element: <b>" . $root->namespaceURI . "</b>\n\n");
}
function printRootNSNewPrefix($xmlCode, $newPrefix) {
$doc = new DomDocument();
$doc->loadXML($xmlCode);
$root = $doc->documentElement;
$root->prefix = $newPrefix;
print(trim(htmlspecialchars($doc->saveXML())) . "\n\t => Namespace of
root-Element: <b>" . $root->namespaceURI . "</b>\n\n");
}
printRootNS('<prefix:root xmlns:prefix="somedomain.name"
xmlns:anotherprefix="anotherdomain.name"/>');
print("\nI'm going to change prefix with \"\$root->prefix =
'anotherprefix';\" now... \n\n\n");
printRootNSNewPrefix('<prefix:root xmlns:prefix="somedomain.name"
xmlns:anotherprefix="anotherdomain.name"/>', "anotherprefix");
?>
</pre>
This is the corresponding output:
<?xml version="1.0"?>
<prefix:root xmlns:prefix="somedomain.name"
xmlns:anotherprefix="anotherdomain.name"/>
=> Namespace of root-Element: somedomain.name
I'm going to change prefix with "$root->prefix = 'anotherprefix';" now...
<?xml version="1.0"?>
<xml:root xmlns:prefix="somedomain.name"
xmlns:anotherprefix="anotherdomain.name"/>
=> Namespace of root-Element: http://www.w3.org/XML/1998/namespace
I thought that setting $root->prefix will set the prefix and the
namespaceUri to the other domain... but it seems to me that the parser
doesn't see the "xmlns:anotherprefix" as a prefix-declaration?
maybe i just misunderstood something, so please correct me if so.
I know, namespaces are quite difficult to implement - it isn't my goal to
annoye you with it!
Best regards,
vivian
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php