File: 000xml_sax.t

package info (click to toggle)
libhttp-oai-perl 4.13-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 436 kB
  • sloc: perl: 2,599; xml: 224; makefile: 15
file content (94 lines) | stat: -rw-r--r-- 1,719 bytes parent folder | download | duplicates (7)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
use Test::More tests => 12;

BEGIN { use_ok( "XML::SAX" ) }
BEGIN { use_ok( "XML::SAX::ParserFactory" ) }
BEGIN { use_ok( "XML::SAX::Base" ) }

use Data::Dumper;

use strict;

my %EXPECTED = (
	root_name => 0,
	root_ns => 0,
	element_name => 0,
	element_ns => 0,
	element_local_name => 0,
	element_prefix => 0,
	ns_name => 0,
	ns_prefix => 0,
);

{
package MyHandler;

our @ISA = qw( XML::SAX::Base );

sub start_element
{
	my( $self, $hash ) = @_;

#	print STDERR Data::Dumper::Dumper( $self, $hash );

	if( $hash->{Name} eq "root" )
	{
		$EXPECTED{"root_name"} = 1;
		if( $hash->{NamespaceURI} eq "NAMESPACE1" )
		{
			$EXPECTED{"root_ns"} = 1;
		}
	}
	if( $hash->{Name} eq "x:element" )
	{
		$EXPECTED{"element_name"} = 1;
		if( $hash->{LocalName} eq "element" )
		{
			$EXPECTED{"element_local_name"} = 1;
		}
		if( $hash->{NamespaceURI} eq "NAMESPACE2" )
		{
			$EXPECTED{"element_ns"} = 1;
		}
		if( $hash->{Prefix} eq "x" )
		{
			$EXPECTED{"element_prefix"} = 1;
		}
		my $namespace_attr = $hash->{"Attributes"}->{"{http://www.w3.org/2000/xmlns/}x"};
		if( defined $namespace_attr )
		{
			if( $namespace_attr->{Name} eq "xmlns:x" )
			{
				$EXPECTED{"ns_name"} = 1;
			}
			if( $namespace_attr->{Prefix} eq "xmlns" )
			{
				$EXPECTED{"ns_prefix"} = 1;
			}
			if( $namespace_attr->{Value} eq "NAMESPACE2" )
			{
				$EXPECTED{"ns_value"} = 1;
			}
		}
	}
}
}

my $handler = MyHandler->new;
my $parser = XML::SAX::ParserFactory->parser(
	Handler => $handler
	);

$parser->parse_string( join "", <DATA> );

foreach my $test (sort keys %EXPECTED)
{
	ok($EXPECTED{$test}, "parsed $test");
}

__DATA__
<?xml version="1.0"?>
<root xmlns="NAMESPACE1">
<x:element xmlns:x="NAMESPACE2">
content
</x:element>
</root>