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;