# HG changeset patch # User Franck Deroche # Date 1193061852 -7200 # Node ID 51645aad97a892944b1cc802d181ebe1ce83e6df # Parent 54b0a41e55642d03210b06b139724c66634d019f 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. diff -r 54b0a41e5564 -r 51645aad97a8 class.template.php --- 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(); } } diff -r 54b0a41e5564 -r 51645aad97a8 simple.php --- a/simple.php Mon Oct 22 10:07:42 2007 +0200 +++ b/simple.php Mon Oct 22 16:04:12 2007 +0200 @@ -8,6 +8,7 @@ 'test' => 'Ceci devrait remplacer l\'element test dans l\'espace de nom t.', 'color' => 'vert', '#attr@class' => 'test', + 'ab' => '', '#choses' => array( array('li' => 'Lorem ipsum', 'li@class' => 'test'), array('li' => 'sit dolor'), diff -r 54b0a41e5564 -r 51645aad97a8 simple.xml --- a/simple.xml Mon Oct 22 10:07:42 2007 +0200 +++ b/simple.xml Mon Oct 22 16:04:12 2007 +0200 @@ -16,6 +16,6 @@
  • Dernière chose
  • - Ceci devrait disparaitre. + Ceci devrait disparaitre.