XML-Handler-Dtd2Html
view release on metacpan or search on metacpan
dtd2html.pl view on Meta::CPAN
if (exists $opts{d}) {
if (exists $opts{o}) {
my $outfile = $opts{o};
open STDOUT, '>', $outfile
or die "can't open $outfile ($!).\n";
}
my $handler = XML::SAX::Writer->new(Writer => 'DtdWriter', Output => \*STDOUT);
my $parser = XML::SAX::Expat->new(Handler => $handler);
$parser->set_feature('http://xml.org/sax/features/external-general-entities', 1);
$parser->parse(Source => {ByteStream => $io});
} else {
my $handler = XML::Handler::Dtd2Html->new();
my $parser = XML::SAX::Expat->new(Handler => $handler);
$parser->set_feature('http://xml.org/sax/features/external-general-entities', 1);
my $doc = $parser->parse(Source => {ByteStream => $io});
my $outfile;
if (exists $opts{o}) {
$outfile = $opts{o};
} else {
my $root = $doc->{root_name};
$root =~ s/[:\.\-]/_/g;
$outfile = 'dtd_' . $root;
}
my @examples = ();
@examples = split /\s+/, $opts{x} if (exists $opts{x});
if ($opts{b}) {
bless($doc, 'XML::Handler::Dtd2Html::DocumentBook');
} elsif ($opts{f}) {
bless($doc, 'XML::Handler::Dtd2Html::DocumentFrame');
}
$doc->GenerateHTML(
outfile => $outfile,
title => $opts{t},
css => $opts{s},
examples => \@examples,
flag_comment => !exists($opts{C}),
flag_date => !exists($opts{D}),
flag_href => exists($opts{H}),
flag_multi => exists($opts{M}),
flag_zombi => exists($opts{Z}),
language => $opts{l},
path_tmpl => $opts{p}
);
}
package DtdWriter;
use base qw(XML::SAX::Writer::XML);
sub start_element {}
sub end_element {}
sub characters {}
sub processing_instruction {}
sub ignorable_whitespace {}
sub comment {}
sub start_cdata {}
sub end_cdata {}
sub start_entity {}
sub end_entity {}
sub xml_decl {}
sub start_dtd {
my $self = shift;
$self->{BufferDTD} = '';
return;
}
sub end_dtd {
my $self = shift;
my $dtd = $self->{BufferDTD};
$dtd = $self->{Encoder}->convert($dtd);
$self->{Consumer}->output($dtd);
$self->{BufferDTD} = '';
return;
}
__END__
=head1 NAME
dtd2html - Generate a HTML documentation from a DTD
=head1 SYNOPSIS
dtd2html [B<-b> | B<-f> | B<-d>] [B<-C> | B<-M>] [B<-HZ>] [B<-o> I<filename>] [B<-s> I<style>] [B<-t> I<title>] [B<-x> 'I<example1.xml> I<example2.xml> ...'] [B<-l> I<language> | B<-p> I<path>] I<file.xml>
=head1 OPTIONS
=over 8
=item -b
Enable the book mode generation.
=item -C
Suppress all comments.
=item -D
Suppress date generation.
=item -d
Generate a clean DTD (without comment).
=item -f
Enable the frame mode generation.
=item -H
Disable generation of href's in comments.
=item -h
( run in 3.023 seconds using v1.01-cache-2.11-cpan-df04353d9ac )