diff options
Diffstat (limited to 'scripts/xml-parse-test.pl')
-rwxr-xr-x | scripts/xml-parse-test.pl | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/scripts/xml-parse-test.pl b/scripts/xml-parse-test.pl index 4811177a..0a7256b0 100755 --- a/scripts/xml-parse-test.pl +++ b/scripts/xml-parse-test.pl @@ -9,6 +9,25 @@ use strict; use XML::Simple; use Data::Dumper; use IPC::Open2; +use Getopt::Long; + +my %opt; + +if (0) { + my $usage = "Use The Source, Luke"; + die($usage) + unless GetOptions(\%opt, qw(encode! decode! schema=s key=s cert=s dir=s)) + and $opt{encode} + $opt{decode} == 1; + die($usage) + if $opt{encode} and !$opt{cert} || !$opt{key}; + die($usage) + if $opt{decode} and !$opt{schema} || !$opt{dir}; +} else { + $opt{dir} = "biz-certs"; + $opt{cert} = "biz-certs/Alice-EE.cer"; + $opt{key} = "biz-certs/Alice-EE.key"; + $opt{schema} = "up-down-schema.rng"; +} sub run2 { my $arg = shift; @@ -46,6 +65,13 @@ sub decode { return join('', @res); } +sub relaxng { + my $xml = shift; + my $schema = shift; + my @res = run2($xml, qw(xmllint --relaxng), $schema, q(-)); + return join('', @res); +} + my $xs = XML::Simple->new(KeepRoot => 1, ForceArray => [qw(list_class)], KeyAttr => [qw(header)], @@ -131,11 +157,12 @@ my @xml = (' for my $xml (@xml) { print("1: ", $xml, "\n"); print("2: ", Dumper($xs->XMLin($xml)), "\n"); - my $cms = encode($xml, "biz-certs/Alice-EE.cer", "biz-certs/Alice-EE.key"); + my $cms = encode($xml, $opt{cert}, $opt{key}); print("3: ", $cms, "\n"); - $xml = decode($cms, "biz-certs"); + $xml = decode($cms, $opt{dir}); print("4: ", $xml, "\n"); print("5: ", Dumper($xs->XMLin($xml)), "\n"); + print("6: ", relaxng($xml, $opt{schema}), "\n"); # my $x = $xs->XMLin($xml); # my $t = $xs->XMLout($x); |