]> git.sesse.net Git - xml-template/blobdiff - xml-template.php
Fix cleaning in PHP. clone.php looks much better.
[xml-template] / xml-template.php
index 0de8409acca8f313b49644cfcc5489ce0ece9713..8bbcd659bfe297239d3210203a5d4b86aa90dcaa 100644 (file)
@@ -70,8 +70,9 @@ function XML_Template_process($node, $obj, $clean = 1)
                        $newnode = $frag->clone_node(true);
                        $node->append_child($newnode);
                        XML_Template_process($newnode, $instance, $clean);
-
-                       # FIXME: clean
+                       if ($clean) {
+                               XML_Template_clean($newnode);
+                       }
                }
 
                # remove all the <fragment> tags
@@ -89,7 +90,28 @@ function XML_Template_process($node, $obj, $clean = 1)
                return;
        }
 
-       # FIXME: clean
+       if ($clean) {
+               XML_Template_clean($node);
+       }
+}
+
+function XML_Template_clean($node)
+{
+       if ($node->node_type() == XML_ELEMENT_NODE) {
+               if ($node->namespace_uri() != 'http://template.sesse.net/') {
+                       return;
+               }
+
+               # as this is a dummy node, we want to remove it and move everything further up
+               # after we've done any required replacements
+               $doc = $node->owner_document();
+               $parent = $node->parent_node();
+               foreach ($node->child_nodes() as $child) {
+                       $node->remove_child($child);
+                       $node->insert_before($child, $node);
+               }
+               $parent->remove_child($node);
+       }
 }
 
 function is_associative_array($arr)