XML-LibXML
view release on metacpan or search on metacpan
my $xml1 = <<EOX;
<n0:local xmlns:n0="http://something.org" xmlns:n3="ftp://example.org">
<n1:elem2 xmlns:n1="http://example.net" xml:lang="en">
<n3:stuff xmlns:n3="ftp://example.org"/>
</n1:elem2>
</n0:local>
EOX
my $xml2 = <<EOX;
<n2:pdu xmlns:n1="http://example.com"
xmlns:n2="http://foo.example"
xml:lang="fr"
xml:space="preserve">
<n1:elem2 xmlns:n1="http://example.net" xml:lang="en">
<n3:stuff xmlns:n3="ftp://example.org"/>
</n1:elem2>
</n2:pdu>
EOX
my $xpath = "(//. | //@* | //namespace::*)[ancestor-or-self::*[name()='n1:elem2']]";
my $result = qq(<n1:elem2 xmlns:n1="http://example.net" xml:lang="en">\n <n3:stuff xmlns:n3="ftp://example.org"></n3:stuff>\n </n1:elem2>);
my $result_n0n2 = qq(<n1:elem2 xmlns:n1="http://example.net" xmlns:n2="http://foo.example" xml:lang="en">\n <n3:stuff xmlns:n3="ftp://example.org"></n3:stuff>\n </n1:elem2>);
my $doc1 = $parser->parse_string( $xml1 );
my $doc2 = $parser->parse_string( $xml2 );
{
my $c14n_res = $doc1->toStringEC14N(0, $xpath);
# TEST
is( $c14n_res, $result, ' TODO : Add test name');
}
{
my $c14n_res = $doc2->toStringEC14N(0, $xpath);
# TEST
is( $c14n_res, $result, ' TODO : Add test name');
}
{
my $c14n_res = $doc1->toStringEC14N(0, $xpath,[]);
# TEST
is( $c14n_res, $result, ' TODO : Add test name');
}
{
my $c14n_res = $doc2->toStringEC14N(0, $xpath,[]);
# TEST
is( $c14n_res, $result, ' TODO : Add test name');
}
{
my $c14n_res = $doc2->toStringEC14N(0, $xpath,['n1','n3']);
# TEST
is( $c14n_res, $result, ' TODO : Add test name');
}
{
my $c14n_res = $doc2->toStringEC14N(0, $xpath,['n0','n2']);
# TEST
is( $c14n_res, $result_n0n2, ' TODO : Add test name');
}
}
{
my $xml = <<'EOF';
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmln...
EOF
my $xpath = q{(//. | //@* | //namespace::*)[ancestor-or-self::x:MessageID]};
my $xpath2 = q{(//. | //@* | //namespace::*)[ancestor-or-self::*[local-name()='MessageID' and namespace-uri()='http://www.w3.org/2005/08/addressing']]};
my $doc = XML::LibXML->load_xml(string=>$xml);
my $xpc = XML::LibXML::XPathContext->new($doc);
$xpc->registerNs(x => "http://www.w3.org/2005/08/addressing");
my $expect = '<wsa:MessageID xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="MessageID">urn:www...
# TEST
is( $doc->toStringEC14N( 0, $xpath2, [qw(soap)] ), $expect, ' TODO : Add test name' );
# TEST
is( $doc->toStringEC14N( 0, $xpath, $xpc, [qw(soap)] ), $expect, ' TODO : Add test name' );
# TEST
is( $doc->toStringEC14N( 0, $xpath2, $xpc, [qw(soap)] ), $expect, ' TODO : Add test name' );
}
( run in 0.560 second using v1.01-cache-2.11-cpan-71847e10f99 )