$VERSION
=
'0.10'
;
my
%versions
=
(
'1.0'
=> {}
,
'1.1'
=> {}
);
my
@prefixes
= (
c14n
=> C14N_EXC_NS);
sub
new(@) {
my
$class
=
shift
; (
bless
{},
$class
)->init( {
@_
} ) }
sub
init($)
{
my
(
$self
,
$args
) =
@_
;
my
$version
=
$args
->{version} ||
'1.1'
;
trace
"initializing v14n $version"
;
$versions
{
$version
}
or error __x
"unknown c14n version {v}, pick from {vs}"
,
v
=>
$version
,
vs
=> [
keys
%versions
];
$self
->{XCC_version} =
$version
;
$self
->loadSchemas(
$args
->{schema})
if
$args
->{schema};
$self
;
}
sub
version() {
shift
->{XCC_version}}
sub
schema() {
shift
->{XCC_schema}}
sub
loadSchemas($)
{
my
(
$self
,
$schema
) =
@_
;
$schema
->isa(
'XML::Compile::Cache'
)
or error __x
"loadSchemas() requires a XML::Compile::Cache object"
;
$self
->{XCC_schema} =
$schema
;
my
$version
=
$self
->version;
my
$def
=
$versions
{
$version
};
$schema
->prefixes(
@prefixes
);
{
local
$" =
','
;
$schema
->addKeyRewrite(
"PREFIXED(@prefixes)"
);
}
(
my
$xsd
= __FILE__) =~ s! \.pm$ !/exc-c14n.xsd!x;
trace
"loading c14n for $version"
;
$schema
->importDefinitions(
$xsd
);
$self
;
}
1;