aboutsummaryrefslogtreecommitdiff
path: root/boom/test.pl
blob: c3ecb4230c3f2bcb0dde9c9afaed1dfebf084fd8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl 
use strict;
use warnings;
use XML::LibXML;
use XML::LibXSLT;
use open ':std',':locale';
 
my $tmpdoc=XML::LibXML->createDocument();
{my $el=$tmpdoc->createElement('doc');
$tmpdoc->setDocumentElement($el);
my $e1=$tmpdoc->createElement('test');
$e1->appendTextNode('blah balh');
$el->appendChild($e1);
}
my $doc_mem=XML::LibXML->createDocument();
{my $el=$doc_mem->createElement('test');
$doc_mem->setDocumentElement($el);
my $e1=$doc_mem->createElement('some');
$el->appendChild($e1);
}
 
my $NS='urn:test';
{
my $p=XML::LibXML->new();
my $t=XML::LibXSLT->new();
 
$t->register_function($NS,'doc',\&test_doc);
$t->register_function($NS,'str',\&test_str);
$t->debug_callback(sub{print@_});
 
my $doc=$p->parse_file('test.xml');
my $st=$t->parse_stylesheet_file('test.xsl');
 
my $out=$st->transform($doc);
print $st->output_as_chars($out);
$out=$st->transform($doc_mem);
print $st->output_as_chars($out);
}
 
sub test_doc {
    my $odoc=XML::LibXML::Document->new();
    my $el=$odoc->createElementNS($NS,'doc');
    $odoc->setDocumentElement($el);
    $el->appendTextNode('a test');
    $el->appendChild($odoc->importNode(
        ($tmpdoc->findnodes('/doc/test'))[0]));
    $el->appendChild($odoc->importNode(
        ($doc_mem->findnodes('/test'))[0]));
    warn('returning from test_doc');
    return $odoc;
}
 
sub test_str {
    return 'a string';
}