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

FreeBSD Manual Pages

  
 
  

home | help
SAXT(3)		      User Contributed Perl Documentation	       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::Handler::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
       Enno Dersken is the original author.

       Send bug	reports, hints,	tips, suggestions to T.J. Mather at
       <tjmather@tjmather.com>.

perl v5.24.1			  2001-08-26			       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.1-RELEASE+and+Ports>

home | help