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

FreeBSD Manual Pages

  
 
  

home | help
XML::SAX::Pipeline(3) User Contributed Perl DocumentationXML::SAX::Pipeline(3)

NAME
       XML::SAX::Pipeline - Manage a linear pipeline of	SAX processors

VERSION
       version 0.46

SYNOPSIS
	   use XML::SAX::Machines qw( Pipeline );   ## Most common way
	   use XML::Fitler::Foo;

	   my $m = Pipeline(
	       XML::Filter::Foo->new,  ## Create it manually
	       "XML::Filter::Bar",     ## Or let Pipeline load & create	it
	       "XML::Filter::Baz",
	       {
		   ## Normal options
		   Handler => $h,
	       }
	   );

	   ## To choose	the default parser automatically if XML::Filter::Foo
	   ## does not implement a parse_file method, just pretend the Pipeline
	   ## is a parser:
	   $m->parse_file( "blah" );

	   ## To feed the pipeline from	an upstream processor, treat it	like
	   ## any other	SAX filter:
	   my $p = Some::SAX::Generator->new( Handler => $m );

	   ## To read a	file or	the output from	a subprocess:
	   my $m = Pipeline( "<infile.txt" );
	   my $m = Pipeline( "spew_xml |" );

	   ## To send output to	a file handle, file, or	process:
	   my $m = Pipeline( ...,  \*STDOUT );
	   my $m = Pipeline( ..., ">outfile.txt" );
	   my $m = Pipeline( ..., "| xmllint --format -" );

DESCRIPTION
       An XML::SAX::Pipeline is	a linear sequence SAX processors.  Events
       passed to the pipeline are received by the "Intake" end of the pipeline
       and the last filter to process events in	the pipeline passes the	events
       out the "Exhaust" to the	filter set as the pipeline's handler:

	  +-----------------------------------------------------------+
	  |		    An XML:SAX::Pipeline		      |
	  |    Intake						      |
	  |   +---------+    +---------+	 +---------+  Exhaust |
	--+-->|	Stage_0	|--->| Stage_1 |-->...-->| Stage_N |----------+----->
	  |   +---------+    +---------+	 +---------+	      |
	  +-----------------------------------------------------------+

       As with all SAX machines, a pipeline can	also create an ad hoc parser
       (using XML::SAX::ParserFactory) if you ask it to	parse something	and
       the first SAX processer in the pipeline can't handle a parse request:

	  +-------------------------------------------------------+
	  |		    An XML:SAX::Pipeline		  |
	  |		    Intake				  |
	  | +--------+	 +---------+	     +---------+  Exhaust |
	  | | Parser |-->| Stage_0 |-->...-->| Stage_N |----------+----->
	  | +--------+	 +---------+	     +---------+	  |
	  +-------------------------------------------------------+

       or if you specify an input file like so:

	  my $m	= Pipeline(qw(
	      <input_file.xml
	      XML::Filter::Bar
	      XML::Filter::Baz
	  ));

       Pipelines (and machines)	can also create	ad hoc XML::SAX::Writer
       instances when you specify an output file handle	(as shown in the
       SYNOPSIS) or an output file:

	  my $m	= Pipeline(qw(
	      XML::Filter::Bar
	      XML::Filter::Baz
	      >output_file.xml
	  ));

       And, thanks to Perl's magic open	(see perlopentut), you can read	and
       write from processes:

	  my $m	= Pipeline(
	      "gen_xml.pl |",
	      "XML::Filter::Bar",
	      "XML::Filter::Baz",
	      "| consume_xml.pl",
	  );

       This can	be used	with an	XML::SAX::Tap to place a handy debugging tap
       in a pipeline (or other machine):

	  my $m	= Pipeline(
	      "<input_file.xml"
	      "XML::Filter::Bar",
	      Tap( "| xmllint --format -" ),
	      "XML::Filter::Baz",
	      ">output_file.xml",
	  );

NAME
       XML::SAX::Pipeline - Manage a linear pipeline of	SAX processors

METHODS
       See XML::SAX::Machine for most of the methods.

       new
	       my $pipeline = XML::SAX::Pipeline->new( @processors, \%options );

	   Creates a pipeline and links	all of the given processors together.
	   Longhand for	Pipeline().

AUTHOR
	   Barrie Slaymaker <barries@slaysys.com>

COPYRIGHT
	   Copyright 2002, Barrie Slaymaker, All Rights	Reserved.

       You may use this	module under the terms of the Artistic,	GNU Public, or
       BSD licenses, your choice.

AUTHORS
       o   Barry Slaymaker

       o   Chris Prather <chris@prather.org>

COPYRIGHT AND LICENSE
       This software is	copyright (c) 2013 by Barry Slaymaker.

       This is free software; you can redistribute it and/or modify it under
       the same	terms as the Perl 5 programming	language system	itself.

perl v5.32.0			  2013-08-19		 XML::SAX::Pipeline(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | NAME | METHODS | AUTHOR | COPYRIGHT | AUTHORS | COPYRIGHT AND LICENSE

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

home | help