Mercurial > defr > templates
changeset 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 | 54b0a41e5564 |
children | 7a3ce31086b3 |
files | class.template.php simple.php simple.xml |
diffstat | 3 files changed, 14 insertions(+), 13 deletions(-) [+] |
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(); } }
--- 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'),