diff class.template.php @ 15:51645aad97a8

Simplification du code, impliquant un changement important de comportement. Avant, les balises dans l'espace de nom template n'apparaissant pas dans les paramètres d'applications étaient supprimés. Maintenant, leur contenu passe dans le template de base.
author Franck Deroche <webmaster@defr.org>
date Mon, 22 Oct 2007 16:04:12 +0200
parents a7ce1a423cbe
children 7a3ce31086b3
line wrap: on
line diff
--- a/class.template.php	Mon Oct 22 10:07:42 2007 +0200
+++ b/class.template.php	Mon Oct 22 16:04:12 2007 +0200
@@ -10,6 +10,7 @@
         $this->xmlDocument->validateOnParse = $shouldValidate;
         $this->xmlDocument->preserveWhiteSpace = false;
         $this->xmlDocument->loadXML(file_get_contents($fileName));
+        $this->xmlDocument->preserveWhiteSpace = false;
         $this->xmlXPath = new DOMXPath($this->xmlDocument);
         $this->xmlXPath->registerNamespace('_t', Template::NS);
     }
@@ -23,14 +24,10 @@
         else {
             foreach($rootSelector->nodes as $node) {
                 $content = $this->parseReplacement($obj); 
-                if(isset($rootSelector->attribute)) {
+                if(isset($rootSelector->attribute))
                     $node->setAttribute($rootSelector->attribute, $obj);
-                } else {
-                    if($node->namespaceURI == Template::NS)
-                        $this->replaceNode($node, $content);
-                    else
-                        $this->setNodeContent($node, $content);
-                }
+                else
+                    $this->setNodeContent($node, $content);
             }
         }
     }
@@ -49,10 +46,7 @@
                     else {
                         $content = $this->parseReplacement($test);
                         $node->insertBefore($content, $tmp->orig);
-                        if($futureNode->namespaceURI == Template::NS)
-                            $this->replaceNode($futureNode, $content);
-                        else
-                            $this->setNodeContent($futureNode, $content);
+                        $this->setNodeContent($futureNode, $content);
                     }
                 }
 	        }
@@ -131,7 +125,12 @@
         $nodes = $this->xmlXPath->query("//*[@_t:toClone]|//_t:*");
         foreach($nodes as $node) {
             if($node->parentNode) {
-                $node->parentNode->removeChild($node);
+                $parent = $node->parentNode;
+                if(!$node->hasAttributeNS(Template::NS, 'toClone')) {
+                    while($node->hasChildNodes())
+                        $parent->insertBefore($node->firstChild, $node);
+                }
+                $parent->removeChild($node);
             }
         }
     }
@@ -139,6 +138,7 @@
     function __toString() {
         $this->clean();
         $this->xmlDocument->formatOutput = true;
+        $this->xmlDocument->normalizeDocument();
         return $this->xmlDocument->saveXML();
     }
 }