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;