XML::Handler::Composer - Another XML printer/writer/generator |
XML::Handler::Composer - Another XML printer/writer/generator
use XML::Handler::Composer;
my $composer = new XML::Handler::Composer ( [OPTIONS] );
XML::Handler::Composer is similar to XML::Writer, XML::Handler::XMLWriter, XML::Handler::YAWriter etc. in that it generates XML output.
This implementation may not be fast and it may not be the best solution for your particular problem, but it has some features that may be missing in the other implementations:
If undef, newlines will not be converted and XML::Handler::Composer will use ``\x0A'' when printing.
A value of ``\n'' will convert the internal newlines into the platform specific line separator.
See the PreserveWS option in the characters event (below) for finer control over when newline conversion is active.
<!ATTLIST my_elem attr1 CDATA "foo" attr2 CDATA "bar" >
xml_decl()
handler may override this setting
(if they contain an Encoding definition.)
Use \&XML::UM::encode_unmapped_hex for hexadecimal constants, like '«'
Override this method to support the different styles for printing empty elements in compressed notation, e.g. <p/>, <p></p>, <p />, <p>.
The default returns ``/>'', which results in <p/>. Use `` />'' for XHTML style elements or ``>'' for certain HTML style elements.
The $event parameter is the hash reference that was received from the
start_element()
handler.
XML::Handler::Composer relies on hints from previous SAX filters to format certain parts of the XML. These SAX filters (e.g. XML::Filter::Reindent) pass extra information by adding name/value pairs to the appropriate PerlSAX events (the events themselves are hash references.)
NOTE: This should be added to the PerlSAX interface!
<!ATTLIST my_elem attr1 CDATA "foo" attr2 CDATA "bar" attr3 CDATA "quux" >
In this example, the attlist_decl event for foo should contain (First => 1, MoreFollow => 1) and the event for bar should contain (MoreFollow => 1). The quux event should have no extra info.
'First' indicates that the event is the first of a sequence. 'MoreFollow' indicates that more events will follow in this sequence.
If neither option is set by the preceding PerlSAX filter, each attribute definition will be printed as a separate <!ATTLIST> line.
This code is highly experimental! It has not been tested well and the API may change.
Enno Derksen is the original author.
Send bug reports, hints, tips, suggestions to T.J. Mather at <tjmather@tjmather.com>.
XML::Handler::Composer - Another XML printer/writer/generator |