1: #!/usr/bin/perl -w
2: package SGML::ElementMap::Example::Identity;
3: use strict;
5: use XML::Grove::Builder;
6: use XML::Parser::PerlSAX;
7: use XML::ESISParser;
8: use Getopt::Long;
10: use SGML::ElementMap;
11: use Hash::Layered;
13: BEGIN { require "identity.pm"; }
15: my $mode;
16: {
17: my ($is_xml,$is_sgml,$help) = (0,0,0);
18: my $s = GetOptions('trace!'=>\$trace, 'sgml'=>\$is_sgml, 'xml'=>\$is_xml);
19: die "Error reading command line\n" unless $s;
20: if ($is_sgml) {
21: $mode = 'sgml';
22: } else {
23: $mode = 'xml';
24: }
25: }
26: #$XML::ESISParser::NSGMLS_sgml = 'onsgmls'; $XML::ESISParser::NSGMLS_FLAGS_sgml = "-oentity -oempty -onotation-sysid -oincluded -oline -ocomment -oomitted"; $XML::ESISParser::NSGMLS_FILTER = "";
27: # set up
28: my $engine = new SGML::ElementMap;
29: my $grove_builder = XML::Grove::Builder->new;
30: my $esisparser = XML::ESISParser->new ( Handler => $grove_builder,
31: IsSGML=>($mode eq 'sgml'),
32: UseAttributeOrder => 1,
33: NSGMLSCommand => 'onsgmls',
34: NSGMLSFlags => '-oomitted -ocomment',
35: NSGMLSFilter => '');
36: my $xmlparser = XML::Parser::PerlSAX->new ( Handler => $grove_builder )
37: if $mode eq 'xml';
39: # initialize
40: SGML::ElementMap::Example::Identity::is_sgml = $mode eq 'sgml';
41: Initialize($engine);
43: # go
44: foreach my $f (@ARGV) {
45: my $document;
46: warn ">>>>>>>>>>ESISParser<<<<<<<<<<\n" if $trace;
47: $document = $esisparser->parse ( Source => { SystemId => $f });
48: $engine->process_grove($document);
49: if ($mode eq 'xml') {
50: warn ">>>>>>>>>>PerlSAX<<<<<<<<<<\n" if $trace;
51: $document = $xmlparser->parse ( Source => { SystemId => $f });
52: $engine->process_grove($document);
53: }
54: }
56: exit 0;