From 21fd3e91bc09935b26a444a3c5327363fcc2f387 Mon Sep 17 00:00:00 2001 From: "sgunderson@bigfoot.com" <> Date: Sat, 12 Aug 2006 01:45:41 +0200 Subject: [PATCH] Fix cleaning in PHP. clone.php looks much better. --- xml-template.php | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/xml-template.php b/xml-template.php index 0de8409..8bbcd65 100644 --- a/xml-template.php +++ b/xml-template.php @@ -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 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) -- 2.39.2