]> git.sesse.net Git - xml-template/blobdiff - php/xml-template.php
Don't clean attributes in PHP anymore -- it's too broken.
[xml-template] / php / xml-template.php
index b5f70965ac18afb9264d63faa4dc4e923cee5232..cc98edc02bbc33a5144b6083e32146ee2cf04913 100644 (file)
@@ -20,6 +20,10 @@ function XML_Template_process($node, $obj, $clean = 1)
 
                $newobj = $obj->clone_node(true);
                $node->append_child($newobj);
+
+               if ($clean) {
+                       clean($newobj);
+               }
        } else if (!is_array($obj)) {                         # overwrite
                foreach ($node->child_nodes() as $child) {
                        $node->remove_child($child);
@@ -33,12 +37,13 @@ function XML_Template_process($node, $obj, $clean = 1)
                        if ($child->node_type() == XML_ELEMENT_NODE) {
                                $tag = $child->node_name();
                                $attrs = $child->attributes();
-                               if ($attrs != null) {
+                               if (isset($attrs)) {
                                        foreach ($child->attributes() as $attr) {
                                                if ($attr->namespace_uri() == 'http://template.sesse.net/' && $attr->name() == 'id') {
                                                        $id = $attr->value();
                                                        if ($clean) {
-                                                               $child->remove_attribute($attr->name());
+                                                               // FIXME: this won't work since we're not in the right namespace
+                                                               // $child->remove_attribute($attr->name());
                                                        }
                                                }
                                        }
@@ -49,14 +54,14 @@ function XML_Template_process($node, $obj, $clean = 1)
                                foreach (array_keys($obj) as $key) {
                                        # FIXME: we would want something like \Q and \E here...
                                        if (preg_match('/^' . $tag . '\/(.*)$/', $key, $matches) ||
-                                           ($id != null && preg_match('/^#' . $id . '\/(.*)$/', $key, $matches))) {
+                                           (isset($id) && preg_match('/^#' . $id . '\/(.*)$/', $key, $matches))) {
                                                $child->set_attribute($matches[1], $obj[$key]);
                                        }
 
                                        if ($processed) {
                                                continue;
                                        }
-                                       if ($key == $tag || ($id != null && $key == ('#'.$id))) {
+                                       if ($key == $tag || (isset($id) && $key == ('#'.$id))) {
                                                XML_Template_process($child, $obj[$key], $clean);
                                                $processed = true;
                                        }