X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=xml-template.php;h=8bbcd659bfe297239d3210203a5d4b86aa90dcaa;hb=21fd3e91bc09935b26a444a3c5327363fcc2f387;hp=0de8409acca8f313b49644cfcc5489ce0ece9713;hpb=507f61ecc0d89e062508f59db27412ffe930b38e;p=xml-template 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)