summaryrefslogtreecommitdiff
path: root/lib/Tree/Template/Declare/LibXML.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Tree/Template/Declare/LibXML.pm')
-rw-r--r--lib/Tree/Template/Declare/LibXML.pm21
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/Tree/Template/Declare/LibXML.pm b/lib/Tree/Template/Declare/LibXML.pm
index bc1fdef..626df32 100644
--- a/lib/Tree/Template/Declare/LibXML.pm
+++ b/lib/Tree/Template/Declare/LibXML.pm
@@ -4,6 +4,8 @@ use warnings;
use Carp;
use XML::LibXML;
+our $VERSION='0.1';
+
sub new {
my ($class)=@_;
@@ -13,8 +15,8 @@ sub new {
sub _munge_exports {
my ($self,$exports,$current_node_aref)=@_;
- return {
- %$exports,
+ my %all_exports=(
+ %{$exports},
xmlns => sub($$) {
$self->{ns}->{$_[0]}=$_[1];
return;
@@ -24,7 +26,9 @@ sub _munge_exports {
$current_node_aref->[0]->appendTextNode($_[0]);
}
},
- };
+ );
+
+ return \%all_exports;
}
sub new_tree {
@@ -44,7 +48,7 @@ sub _get_ns {
my ($prefix)=($name=~m{\A (.*?) : }smx);
- if (!defined($prefix) or length($prefix)==0) {
+ if (!defined($prefix) || length($prefix)==0) {
return '',$self->{ns}->{':default'};
}
@@ -64,7 +68,9 @@ sub add_child_node {
my ($self,$parent,$child)=@_;
my $doc=$parent->ownerDocument;
- $child=$doc->adoptNode($child) if $doc;
+ if ($doc) {
+ $child=$doc->adoptNode($child);
+ }
if ($parent->isa('XML::LibXML::Document')) {
$parent->setDocumentElement($child);
@@ -83,12 +89,14 @@ sub set_node_name {
if ($uri) {
$node->setNamespace($uri,$prefix,1);
}
+
+ return;
}
sub set_node_attributes {
my ($self,$node,$attrs)=@_;
- while (my ($name,$val)=each %$attrs) {
+ while (my ($name,$val)=each %{$attrs}) {
my ($prefix,$uri)=$self->_get_ns($name);
if ($prefix and $uri) {
$node->setAttributeNS($uri, $name, $val);
@@ -97,6 +105,7 @@ sub set_node_attributes {
$node->setAttribute($name, $val);
}
}
+
return;
}