CHANGES file for XML::ValidWriter and XML::AutoWriter
0.39 Tue Dec 12 09:26:11 EST 2005
- Relicensed to user's choice of GPL, Artistic, or BSD license
0.38 Tue Mar 9 01:55:33 EST 2004
- phashes removed
0.36 Mon Dec 18 07:21:10 EST 2000
- Fixed bug where ']' or ']]' at the end of CDATA would not be emitted
before a start or empty tag (ie in mixed content).
0.33-v.035 Fri Dec 15 07:02:36 EST 2000
- XML::ValidWriter and XML::AutoWriter now croak if any control codes
other than TAB, CR, or newline (9, 10, 13) are passed.
- Fixed a bug that kicked out of PCDATA escape mode in to CDATA too easily.
0.32 Fri Dec 15 07:02:36 EST 2000
- Reduced number of times '>' is escaped in PCDATA. It still gets
turned into '>' gratuitously occasionally, but that's a really
minor nit, IMHO.
0.3 Wed Aug 9 11:53:59 EDT 2000
- Fixed a bug in escaping of CDATA end tags that are split across
multiple parameters to or calls to characters(). This will use
a lot of memory if passing big sets of parameters to characters(),
which actually is what you're supposed to do to allow the CDATA
escape guesser to guess more accurately. If this is a problem,
we'll fix it.
- Added ability to pass OUTPUT => 'filename.ml' to XML::ValidWriter
and subclasses, and have it opened and closed.
- Fixed some typos in documentation
- Allowed XML::Doctype's import() function to call constructors for
subclasses of XML::Doctype
- Fixed a bug that prevented PCDATA sections from finding an
appropriate path.
- Removed assumption that undeclared elements can contain ANY.
- Added check to make sure the root node is at least referred-to.
0.2 Fri Aug 4 13:49:19 EDT 2000
- fixes a few bugs
- adds more validity checks
- renames XML::DTD to be XML::Doctype,
- provides setDataMode which will insert newlines around tags, but never
in PCDATA content that is not mixed with elements. An example is below.
- optimizes '<foo></foo>' to be '<foo />' on output
- autodetects whether or not to use <![CDATA[...]]> escaping for element
PCDATA
- alters the exported element-name functions so that, if a tag 'foo' is
referenced in the DTD, doing a C<use XML::ValidWriter qw( :dtd_tags )>,
you get:
start_foo( [attr => 'val', ...] ) ;
end_foo() ;
empty_foo( [attr => 'var', ...] ) ;
foo( $content[, attr=> 'val', ...] ) ;
You can C<use> subclasses of XML::ValidWriter in this way, too.
- AUTOLOADs methods corresponding to the above exported functions. This
is done on a per-instance basis, so as to handle both intermediate
subclasses, where the class namespace should not be corrupted, and
final subclasses, where you this functionality is actually used).
Here's a real piece of code as an example, given that the
tags <date>, <repository_type>, <name>, <type>, <p4_info> etc. are all
mentioned in the DTD:, and that $w ISA XML::AutoWriter (which ISA
XML::ValidWriter):
if ( $self->none_seen ) {
$w->setDataMode( 1 ) ;
$w->xmlDecl ;
$w->date( _ISO8601 ) ;
$w->repository_type( $self->header->{rep_type} ) ;
$w->repository_description( $self->header->{rep_desc} ) ;
}
my $saw = $self->seen( $r ) ;
my $fn = $r->{filename} ;
$w->start_rev ;
$w->name( $fn ) ;
$w->type( $r->{type} ) ;
$w->p4_info() ;
The AUTOLOAD idea stolen from XML::Generator.
- provides setDataMode which will insert newlines around tags, except for
elements that contain only PCDATA. The XML generated by the
above code in DATAMODE is:
<?xml version="1.0"?>
<revml version="1.22">
<date>2000-08-04 17:35:57Z</date>
<repository_type>p4</repository_type>
<repository_description>User name: barries
Client name: barries
Client root: /home/barries/src/
Current directory: /home/barries/src/foo
Client address: 127.0.0.1:1687
Server address: localhost:1666
Server root: .
Server version: P4D/LINUX52X86/99.2/14042 (2000/01/28)
Server license: none
</repository_description>
<rev>
<name>revengine/Makefile.PL</name>
<type>text</type>
<p4_info />