You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ja...@apache.org on 2003/12/09 04:16:16 UTC
svn commit: rev 1393 - xml/xerces-p/trunk/samples
Author: jasons
Date: Mon Dec 8 19:16:16 2003
New Revision: 1393
Added:
xml/xerces-p/trunk/samples/validator.pl
Log:
new
Added: xml/xerces-p/trunk/samples/validator.pl
==============================================================================
--- (empty file)
+++ xml/xerces-p/trunk/samples/validator.pl Mon Dec 8 19:16:16 2003
@@ -0,0 +1,119 @@
+#!/usr/bin/perl -w
+
+package MyErrorHandler;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(XML::Xerces::PerlErrorHandler);
+sub warning {
+ my $line = $_[1]->getLineNumber;
+ my $column = $_[1]->getColumnNumber;
+ my $message = $_[1]->getMessage;
+ printf STDERR "%s:[%s]:%d:%d:%s:%s\n",
+ $main::PROGRAM,$main::FILE,$line, $column, 'W', $message;
+}
+
+sub error {
+ my $line = $_[1]->getLineNumber;
+ my $column = $_[1]->getColumnNumber;
+ my $message = $_[1]->getMessage;
+ printf STDERR "%s:[%s]:%d:%d:%s:%s\n",
+ $main::PROGRAM,$main::FILE,$line, $column, 'E', $message;
+}
+
+sub fatal_error {
+ my $line = $_[1]->getLineNumber;
+ my $column = $_[1]->getColumnNumber;
+ my $message = $_[1]->getMessage;
+ printf STDERR "%s:[%s]:%d:%d:%s:%s\n",
+ $main::PROGRAM,$main::FILE,$line, $column, 'F', $message;
+}
+1;
+
+package main;
+use strict;
+# use blib;
+use XML::Xerces;
+use IO::Handle;
+use Getopt::Long;
+
+my %OPTIONS;
+$OPTIONS{count} = 1000;
+$OPTIONS{dom} = 1;
+my $rc = GetOptions(\%OPTIONS,
+ 'file=s',
+ 'help',
+ 'schema',
+ 'full_schema',
+ 'namespace',
+ );
+my $USAGE = <<"EOU";
+usage: $0 [required flags]
+ required flags:
+ --file=file_name : the XML file to parse
+
+ optional parameters:
+ --namespace : enable namespace checking
+ --schema : parse a W3C XML Schema file (forces --namespace)
+ --full_schema : do full schema checking (forces --namespace and --schema)
+ --help : print this message
+EOU
+
+die "$rc\n$USAGE" unless $rc;
+die $USAGE if exists $OPTIONS{help};
+
+die "Must specify --file\n$USAGE"
+ unless exists $OPTIONS{file};
+
+# handle the optional command-line params
+my $namespace = 0;
+my $schema = 0;
+my $full_schema = 0;
+if (exists $OPTIONS{namespace}) {
+ $namespace = 1;
+} elsif (exists $OPTIONS{schema}) {
+ $namespace = 1;
+ $schema = 1;
+} elsif (exists $OPTIONS{full_schema}) {
+ $namespace = 1;
+ $schema = 1;
+ $full_schema = 1;
+}
+
+# set globals used by the error handler
+$main::FILE = $OPTIONS{file};
+$main::PROGRAM = $0;
+$main::PROGRAM =~ s|.*/(\w+)|$1|;
+
+my $parser = XML::Xerces::XMLReaderFactory::createXMLReader();
+$parser->setErrorHandler(MyErrorHandler->new);
+
+# print as we parse
+STDERR->autoflush();
+
+# my $contentHandler = new XML::Xerces::PerlContentHandler() ;
+# $parser->setContentHandler($contentHandler) ;
+
+# handle the optional features
+eval {
+ $parser->setFeature("$XML::Xerces::XMLUni::fgSAX2CoreNameSpaces", $namespace);
+ $parser->setFeature("$XML::Xerces::XMLUni::fgXercesSchema", $schema);
+ $parser->setFeature("$XML::Xerces::XMLUni::fgXercesSchemaFullChecking", $full_schema);
+};
+XML::Xerces::error($@) if $@;
+
+# and the required features
+eval {
+ $parser->setFeature("$XML::Xerces::XMLUni::fgXercesContinueAfterFatalError", 1);
+ $parser->setFeature("$XML::Xerces::XMLUni::fgXercesValidationErrorAsFatal", 0);
+ $parser->setFeature("$XML::Xerces::XMLUni::fgSAX2CoreValidation", 1);
+ $parser->setFeature("$XML::Xerces::XMLUni::fgXercesDynamic", 1);
+};
+XML::Xerces::error($@) if $@;
+
+eval {
+ my $is = XML::Xerces::LocalFileInputSource->new($OPTIONS{file});
+ $parser->parse($is) ;
+} ;
+XML::Xerces::error($@) if $@;
+exit(0);
+
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org