Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XML::Filter::SAXT(3)  User Contributed Perl Documentation XML::Filter::SAXT(3)

NAME
       XML::Filter::SAXT - Replicates SAX events to several SAX	event handlers

SYNOPSIS
	$saxt =	new XML::Filter::SAXT (	{ Handler => $out1 },
					{ DocumentHandler => $out2 },
					{ DTDHandler =>	$out3,
					  Handler => $out4
					}
				      );

	$perlsax = new XML::Parser::PerlSAX ( Handler => $saxt );
	$perlsax->parse	( [OPTIONS] );

DESCRIPTION
       SAXT is like the	Unix 'tee' command in that it multiplexes the input
       stream to several output	streams. In this case, the input stream	is a
       PerlSAX event producer (like XML::Parser::PerlSAX) and the output
       streams are PerlSAX handlers or filters.

       The SAXT	constructor takes a list of hash references. Each hash
       specifies an output handler. The	hash keys can be: DocumentHandler,
       DTDHandler, EntityResolver or Handler, where Handler is a combination
       of the previous three and acts as the default handler.  E.g. if
       DocumentHandler is not specified, it will try to	use Handler.

   EXAMPLE
       In this example we use XML::Parser::PerlSAX to parse an XML file	and to
       invoke the PerlSAX callbacks of our SAXT	object.	The SAXT object	then
       forwards	the callbacks to XML::Checker, which will 'die'	if it
       encounters an error, and	to XML::Hqandler::BuildDOM, which will store
       the XML in an XML::DOM::Document.

	use XML::Parser::PerlSAX;
	use XML::Filter::SAXT;
	use XML::Handler::BuildDOM;
	use XML::Checker;

	my $checker = new XML::Checker;
	my $builder = new XML::Handler::BuildDOM (KeepCDATA => 1);
	my $tee	= new XML::Filter::SAXT	( { Handler => $checker	},
					  { Handler => $builder	} );

	my $parser = new XML::Parser::PerlSAX (Handler => $tee);
	eval
	{
	   # This is how you set the error handler for XML::Checker
	   local $XML::Checker::FAIL = \&my_fail;

	   my $dom_document = $parser->parsefile ("file.xml");
	   ... your code here ...
	};
	if ($@)
	{
	   # Either XML::Parser::PerlSAX threw an exception (bad XML)
	   # or	XML::Checker found an error and	my_fail	died.
	   ... your error handling code	here ...
	}

	# XML::Checker error handler
	sub my_fail
	{
	  my $code = shift;
	  die XML::Checker::error_string ($code, @_)
	       if $code	< 200;	 # warnings and	info messages are >= 200
	}

CAVEATS
       This is still alpha software.  Package names and	interfaces are subject
       to change.

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

perl v5.32.0			  2000-02-11		  XML::Filter::SAXT(3)

NAME | SYNOPSIS | DESCRIPTION | CAVEATS | AUTHOR

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=XML::Filter::SAXT&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help