XML::DOM::ValParser - an XML::DOM::Parser that validates at parse time

# NAME

XML::DOM::ValParser - an XML::DOM::Parser that validates at parse time

# SYNOPSIS

     use XML::DOM::ValParser;

     my %expat_options = (KeepCDATA => 1,
    		      Handlers => [ Unparsed => \&my_Unparsed_handler ]);
     my $parser = new XML::DOM::ValParser (%expat_options);

     eval {
         local $XML::Checker::FAIL = \&my_fail;
         my $doc = $parser->parsefile ("fail.xml");
         ... XML::DOM::Document was created sucessfully ...
     };
     if ($@) {
         # Either XML::Parser (expat) threw an exception or my_fail() died.
         ... your error handling code here ...
         # Note that the XML::DOM::Document is automatically disposed off and
         # will be garbage collected
     }

     # Throws an exception (with die) when an error is encountered, this
     # will stop the parsing process.
     # Don't die if a warning or info message is encountered, just print a message.
     sub my_fail {
         my $code = shift;
         die XML::Checker::error_string ($code, @_) if $code < 200;
         XML::Checker::print_error ($code, @_);
     }

# DESCRIPTION

Use XML::DOM::ValParser wherever you would use XML::DOM::Parser and your XML will be checked using XML::Checker at parse time.

See XML::DOM for details on XML::DOM::Parser options. See XML::Checker for details on setting the fail handler (my_fail.)

The following handlers are currently supported, just like XML::DOM::Parser: Init, Final, Char, Start, End, Default, Doctype, CdataStart, CdataEnd, XMLDecl, Entity, Notation, Proc, Default, Comment, Attlist, Element, Unparsed.

# XML::DOM::ValParser

XML::DOM::ValParser extends from XML::Checker::Parser. It creates an XML::Checker object and routes all event handlers through the checker, before processing the events to create the XML::DOM::Document.

Just like XML::Checker::Parser, the checker object can be retrieved with the getChecker() method and can be reused later on (provided that the DOCTYPE section of the XML::DOM::Document did not change in the mean time.)

You can control which errors are fatal (and therefore should stop creation of the XML::DOM::Document) by filtering the appropriate error codes in the global $XML::Checker::FAIL handler (see XML::Checker/ERROR_HANDLING) and calling die or croak appropriately.

Just like XML::Checker::Parser, XML::DOM::ValParser supports the SkipExternalDTD and SkipInsignifWS options. See XML::Checker::Parser for details.

# AUTHOR

Send bug reports, hints, tips, suggestions to Enno Derksen at <enno@att.com>.

# SEE ALSO

XML::DOM, XML::Checker (XML::Checker/SEE_ALSO)

Last updated: Fri Oct 22 18:47:32 1999