BEGIN { plan
tests
=> 1 }
my
$handler
= TestH->new();
my
$parser
= XML::SAX::ExpatXS->new(
Handler
=>
$handler
);
my
$xml
=
<<_xml_;
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
<!ENTITY external PUBLIC "extPubID" "t/external.xml">
]>
<root>
&external;
</root>
_xml_
$parser
->parse_string(
$xml
);
ok(
$handler
->{data} eq
'_sD_sDtd_eDec(external,extPubID,t/external.xml)_eDtd_sE(root)_sEnt(external)_sE(boo)_eE_eEnt(external)_eE_eD'
);
sub
new {
bless
{
data
=>
''
},
shift
}
sub
start_document {
my
(
$self
,
$doc
) =
@_
;
$self
->{data} .=
'_sD'
;
}
sub
end_document {
my
(
$self
,
$doc
) =
@_
;
$self
->{data} .=
'_eD'
;
}
sub
start_element {
my
(
$self
,
$el
) =
@_
;
$self
->{data} .=
"_sE($el->{Name})"
;
}
sub
end_element {
my
(
$self
,
$el
) =
@_
;
$self
->{data} .=
'_eE'
;
}
sub
start_dtd {
my
(
$self
,
$dtd
) =
@_
;
$self
->{data} .=
'_sDtd'
;
}
sub
end_dtd {
my
(
$self
,
$dtd
) =
@_
;
$self
->{data} .=
'_eDtd'
;
}
sub
external_entity_decl {
my
(
$self
,
$ent
) =
@_
;
$self
->{data} .=
"_eDec($ent->{Name},$ent->{PublicId},$ent->{SystemId})"
;
}
sub
start_entity {
my
(
$self
,
$ent
) =
@_
;
$self
->{data} .=
"_sEnt($ent->{Name})"
;
}
sub
end_entity {
my
(
$self
,
$ent
) =
@_
;
$self
->{data} .=
"_eEnt($ent->{Name})"
;
}