]> git.sesse.net Git - xml-template/commitdiff
Yet more clone fixes for PHP.
authorsgunderson@bigfoot.com <>
Sat, 12 Aug 2006 22:08:36 +0000 (00:08 +0200)
committersgunderson@bigfoot.com <>
Sat, 12 Aug 2006 22:08:36 +0000 (00:08 +0200)
php/xml-template.php

index 4f22d6e483974b93db700192daad2a0064dc312e..51f86a56fa1a02cdc90b0cb3220f069b9f92eb89 100644 (file)
@@ -148,17 +148,19 @@ function own_clone_node($node, $doc)
 {
        // we only need these two
        if ($node->node_type() == XML_ELEMENT_NODE) {
-               $newnode = $doc->create_element_ns($node->namespace_uri(), $node->node_name(), $node->prefix());
+               $nsuri = $node->namespace_uri();
+               if (isset($nsuri)) {
+                       $newnode = $doc->create_element_ns($node->namespace_uri(), $node->node_name(), $node->prefix());
+               } else {
+                       $newnode = $doc->create_element($node->node_name());
+               }
+               
                $attrs = $node->attributes();
                if (isset($attrs)) {
                        foreach ($node->attributes() as $attr) {
-                               // set_attribute_node() does not exist...
-                               $prefix = $attr->prefix();
-                               if (isset($prefix)) {
-                                       $newnode->set_attribute($prefix . ":" . $attr->name(), $attr->value());
-                               } else {
-                                       $newnode->set_attribute($attr->name(), $attr->value());
-                               }
+                               $attr2 = $doc->create_attribute($attr->name(), $attr->value());
+                               $attr2->set_namespace($attr->namespace_uri(), $attr->prefix());
+                               $newnode->append_child($attr2);
                        }
                }
                foreach ($node->child_nodes() as $child) {