Mercurial > defr > templates
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(); } }