]> git.sesse.net Git - xml-template/commitdiff
Use "real" document fragments instead of our own hacks.
authorsgunderson@bigfoot.com <>
Mon, 21 Apr 2008 20:21:47 +0000 (22:21 +0200)
committersgunderson@bigfoot.com <>
Mon, 21 Apr 2008 20:21:47 +0000 (22:21 +0200)
php5/xml-template.php

index f69fbcaa082e7abb8234c70ce4957527332d4988..e68c2be45842a4c4da9bd389de21cee26ee1be7a 100644 (file)
@@ -78,10 +78,11 @@ function XML_Template_process($node, $obj, $clean = 1)
                }
        } else {                                                # repeat
                $doc = $node->ownerDocument;
-               $frag = $doc->createElement("temporary-fragment");    # ugh
+               $frag = $doc->createDocumentFragment();
 
                while ($node->childNodes->length > 0) {
                        $child = $node->childNodes->item(0);
+                       $node->removeChild($child);
                        $frag->appendChild($child);
                }
 
@@ -91,26 +92,12 @@ function XML_Template_process($node, $obj, $clean = 1)
                        }
 
                        $newnode = $frag->cloneNode(true);
-                       $node->appendChild($newnode);
                        XML_Template_process($newnode, $instance, $clean);
+                       $node->appendChild($newnode);
                        if ($clean) {
                                XML_Template_clean($newnode);
                        }
                }
-
-               # remove all the <fragment> tags
-               for ($i = 0; $i < $node->childNodes->length; ++$i) {
-                       $child = $node->childNodes->item($i);
-                       if ($child->localName != 'temporary-fragment') {
-                               continue;
-                       }
-                       while ($child->childNodes->length > 0) {
-                               $child2 = $child->childNodes->item(0);
-                               $node->appendChild($child2);
-                       }
-                       --$i;
-                       $node->removeChild($child);
-               }       
        }
 
        if ($clean) {