From 0940c294d02b0750e03ec551273de1d874fdf09b Mon Sep 17 00:00:00 2001 From: Gianni Ceccarelli Date: Fri, 27 Mar 2009 15:55:27 +0100 Subject: testing engine_factory and XML namespace support --- lib/Tree/Transform/XSLTish.pm | 2 +- t/06-libxml.t | 51 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/lib/Tree/Transform/XSLTish.pm b/lib/Tree/Transform/XSLTish.pm index 97a6f1f..e754cd0 100644 --- a/lib/Tree/Transform/XSLTish.pm +++ b/lib/Tree/Transform/XSLTish.pm @@ -67,7 +67,7 @@ sub engine_class { return; } -sub engine_factory { +sub engine_factory(&) { my ($new_factory)=@_; my $factory=Tree::Transform::XSLTish::Utils::_engine_factory(scalar caller); diff --git a/t/06-libxml.t b/t/06-libxml.t index f496301..94f1ae8 100644 --- a/t/06-libxml.t +++ b/t/06-libxml.t @@ -1,4 +1,11 @@ #!perl +package main; +use Test::Most 'die'; +BEGIN { + eval 'use XML::LibXML;use XML::LibXML::XPathContext;'; + plan skip_all => 'XML::LibXML and XML::LibXML::XPathContext needed for this test' if $@; +} + package XmlTransform;{ use Tree::Transform::XSLTish ':engine'; use strict; @@ -14,14 +21,32 @@ package XmlTransform;{ } +package NSXmlTransform;{ + use Tree::Transform::XSLTish ':engine'; + use XML::LibXML::XPathContext; + use strict; + use warnings; + + engine_factory { + my $e=XML::LibXML::XPathContext->new(); + $e->registerNs('t','http://test/'); + return $e; + }; + + default_rules; + + tree_rule match => 't:img[@alt="pick"]', action => sub { + return $_[0]->it->findvalue('@src'); + }; + +} + package main; -use Test::Most 'die'; use strict; use warnings; -eval 'use XML::LibXML;use XML::LibXML::XPathContext;'; -plan skip_all => 'XML::LibXML and XML::LibXML::XPathContext needed for this test' if $@; -plan tests=>1; +plan tests=>2; +{ my $tree=XML::LibXML->new->parse_string(<<'XML'); @@ -32,8 +57,24 @@ my $tree=XML::LibXML->new->parse_string(<<'XML'); XML -{ my $trans=XmlTransform->new(); my @results=$trans->transform($tree); is_deeply \@results,['this one'],'XML example'; } + +{ +my $tree=XML::LibXML->new->parse_string(<<'XML'); + + +

test

+ + pick + + + +XML + +my $trans=NSXmlTransform->new(); +my @results=$trans->transform($tree); +is_deeply \@results,['this one'],'XML namespaces'; +} -- cgit v1.2.3