XML::Dumper, XML::Writer, XML::Writer::Simple ...
# example using XML::Dumper
use XML::Dumper;
my $dump = new XML::Dumper;
my $perl = (
# some perl data structure
);
$dump->dtd( $file, $url );
my $xml_with_link_to_dtd = $dump->pl2xml( $perl );
# example using XML::Writer::Simple
use XML::Writer::Simple dtd => "file.dtd";
print para("foo",b("bar"),"zbr");
# Asuming para. etc are defined in the DTD
XML::Dumper has the advantage of providing both read and write interfaces ...
The intelligent reader will judge for himself. Without examining the facts fully and fairly, there is no way of knowing whether vox populi is really vox dei, or merely vox asinorum. — Cyrus H. Gordon