xml::doctype(3)

NAME

XML::Doctype - A DTD object class

SYNOPSIS

# To parse an external DTD at compile time, useful when
# using XML::ValidWriter
use   XML::Doctype   NAME   =>  'FooML',  SYSTEM_ID  =>
'FooML.dtd' ;
use XML::Doctype NAME => 'FooML', DTD_TEXT  => $dtd ;
# Parsing at run-time
$doctype =  XML::Doctype->new(  'FooML',  SYSTEM_ID  =>
'FooML.dtd' ) ;
# or
$doctype = XML::Doctype->new() ;
$doctype->parse( 'FooML', 'FooML.dtd' ) ;
# Saving the parsed object
open( PM, ">FooML/DTD/v1_000.pm" ) or die $! ;
print PM $doctype->as_pm( 'FooML::DTD::v1_000' ) ;
# Using a saved parsed DTD
use FooML::DTD::v1_000 ;
$doctype = FooML::DTD::v1_000->new() ;

DESCRIPTION

This module parses DTDs and allows them to be saved as .pm
files and reloaded. The ability to save and reload is
intended to aid in packaging parsed DTDs with XML tools so
that XML::Parser need not be installed.

STATUS

This module is alpha code. It's developed enough to sup
port XML::ValidWriter, but need a lot of work. Some big
things that are lacking are:

· methods or objects to build / traverse the DTD

· XML::Doctype::ELEMENT

· XML::Doctype::ATTLIST

· XML::Doctype::ENITITY

METHODS

$doctype = XML::Doctype->new() ;
$doctype = XML::Doctype->new( 'FooML', DTD_TEXT => $doc
type_text ) ;
$doctype = XML::Doctype->new( 'FooML', SYSTEM_ID =>
'FooML.dtd' ) ;
name
$name = $doctype->name() ;
Sets/gets the name.
parse_dtd
$doctype->parse_dtd( $name, $doctype_text ) ;
$doctype->parse_dtd( $name, $doctype_text, 'internal' ) ;
Parses the text of a DTD from a scalar. $name is used to indi
cate the name of the DOCTYPE, and thus the root node.
The DTD is considered to be external unless the third parameter
is TRUE.
parse_dtd_file
$doctype->parse_dtd_file( $name, $system_id [, $public_id] ) ;
$doctype->parse_dtd_file( $name, $system_id [, $public_id],
'internal' ) ;
Parses a DTD from a file. Eventually will support full URL syn
tax.
$public_id is ignored for now, and $system_id is used to locate
the DTD.
This routine requires XML::Parser. XML::Parser is not loaded at
any other time and is not needed to use the resulting DTD object.
The DTD is considered to be external unless the fourth parameter
is TRUE.
$doctype->parse_dtd_file( $name, $system_id, $p_id, 'internal'
) ;
$doctype->parse_dtd_file( $name, $system_id, undef, 'internal'
) ;
system_id
$system_id = $doctype->system_id() ;
Sets/gets the system ID.
public_id
$public_id = $doctype->public_id() ;
Sets/gets the public_id.
element_decl
$elt_decl = $doctype->element_decl( $name ) ;
Returns the XML::Doctype:Element object associated with $name.
These can be defined by <!ELEMENT> tags or undefined, which can
happen if they were just referred-to by <!ELEMENT> or <!ATTLIST>
tags.
element_names Returns an unsorted list of element names. This
list includes names that are declared and undeclared (but re
ferred to in ele ment declarations or attribute definitions).
as_pm
open( PM, "FooML/DTD/v1_001.pm" ) or die $! ;
print PM $doctype->as_pm( 'FooML::DTD::v1_001' ) or die $! ;
close PM or die $! ;
Then, later:
use FooML::DTD::v1_001 ; # Do *not* use () as a parameter
list!
Returns string containing the DTD as an independant module, al
lowing the DTD to be parsed in the development environment and
shipped as Perl code, so that the target environment need not
have XML::Parser installed.
This is useful for XML creation-only tools and as an efficiency
tuning measure if you will be rereading the same set of DTDs over
and over again.
import use
use XML::Doctype NAME => 'FooML', SYSTEM_ID =>
'dtds/FooML.dtd' ;
import() constructs a default DTD object for the calling package
so that XML::ValidWriter's functional interface can use it.
If XML::Doctype is subclassed, the subclasses' constructor is
called with all parameters.

SUBCLASSING

This object uses the fields pragma, so you should use base
and fields for any subclasses.

AUTHOR

Barrie Slaymaker <barries@slaysys.com>

COPYRIGHT

This module is Copyright 2000, Barrie Slaymaker. All
rights reserved.

This module is licensed under the GPL, version 2. Please
contact me if this does not suit your needs.
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout