Parse an sgml or xml dtd
use SGML::DTDParse; print "This is DTDParse v$SGML::DTDParse::VERSION\n";
The DTDParse collection is a set of Perl modules and scripts for manipulating \s-1SGML\s0 an \s-1XML\s0 Document Type Definitions (DTDs). DTDParse is designed primarily to aid in the understanding and documentation of DTDs.
Typical usage of this package is as follows:
Parse the \s-1DTD\s0 with dtdparse. This produces an \s-1XML\s0 representation of the \s-1DTD\s0. This representation exposes both the logical structure of the \s-1DTD\s0 (the actual meta-structure of its grove) and the organizational structure of the \s-1DTD\s0 (the declarations and parameter entities) that comprise its textual form.
Manipulate the \s-1XML\s0 document produced by dtdparse to do whatever you want. DTDParse is shipped with several programs that demonstrate various capabilities, including dtdformat which can produce \s-1HTML\s0 or DocBook http://www.oasis-open.org/docbook/ <http://www.oasis-open.org/docbook/> RefEntry pages for each element and parameter entity in the \s-1DTD\s0.
The following is the \s-1XML\s0 \s-1DTD\s0 for \s-1XML\s0 documents created with dtdparse (the \s-1DTD\s0 is also provided in the file \*(C`etc/dtd.dtd\*(C' of the DTDParse distribution):
<!-- This is the DTD for the documents produced by DTDParse. The public identifier for this DTD is:
"-//Norman Walsh//DTD DTDParse V2.0//EN"
-->
<!ELEMENT dtd (notation|entity|element|attlist)+> <!ATTLIST dtd version CDATA #REQUIRED unexpanded CDATA #IMPLIED title CDATA #IMPLIED namecase-general CDATA #IMPLIED namecase-entity CDATA #IMPLIED xml CDATA #IMPLIED system-id CDATA #IMPLIED public-id CDATA #IMPLIED declaration CDATA #IMPLIED created-by CDATA #IMPLIED created-on CDATA #IMPLIED >
<!ELEMENT notation EMPTY> <!ATTLIST notation name CDATA #REQUIRED public CDATA #IMPLIED system CDATA #IMPLIED >
<!ELEMENT entity (text-expanded?, text?)> <!ATTLIST entity name CDATA #REQUIRED type CDATA #REQUIRED notation CDATA #IMPLIED public CDATA #IMPLIED system CDATA #IMPLIED >
<!ELEMENT text (#PCDATA)*> <!ELEMENT text-expanded (#PCDATA)*>
<!ELEMENT element (content-model-expanded, content-model?, inclusions?, exclusions?)> <!ATTLIST element name CDATA #REQUIRED stagm CDATA #IMPLIED etagm CDATA #IMPLIED content-type (element|mixed|cdata|empty|rcdata) #IMPLIED >
<!ENTITY % cm.mix "sequence-group|or-group|and-group |element-name|parament-name |pcdata|cdata|rcdata|empty">
<!ELEMENT content-model-expanded (%cm.mix;)> <!ELEMENT content-model (%cm.mix;)> <!ELEMENT inclusions (%cm.mix;)> <!ELEMENT exclusions (%cm.mix;)>
<!ELEMENT sequence-group (%cm.mix;)*> <!ATTLIST sequence-group occurrence CDATA #IMPLIED >
<!ELEMENT or-group (%cm.mix;)*> <!ATTLIST or-group occurrence CDATA #IMPLIED >
<!ELEMENT and-group (%cm.mix;)*> <!ATTLIST and-group occurrence CDATA #IMPLIED >
<!ELEMENT element-name EMPTY> <!ATTLIST element-name name CDATA #REQUIRED occurrence CDATA #IMPLIED >
<!ELEMENT parament-name EMPTY> <!ATTLIST parament-name name CDATA #REQUIRED >
<!ELEMENT empty EMPTY> <!ELEMENT pcdata EMPTY> <!ELEMENT cdata EMPTY> <!ELEMENT rcdata EMPTY>
<!ELEMENT attlist (attdecl, attribute+)> <!ATTLIST attlist name CDATA #REQUIRED >
<!ELEMENT attdecl (#PCDATA)>
<!ELEMENT attribute EMPTY> <!ATTLIST attribute name CDATA #REQUIRED type CDATA #REQUIRED enumeration (yes|no|notation) #IMPLIED value CDATA #REQUIRED default CDATA #REQUIRED >
dtdparse, dtdformat, dtddiff, dtdflatten, SGML::DTDParse::DTD
The prerequisites listed are for all modules and scripts:
Getopt::Long, Text::DelimMatch, XML::Parser, \s-1XML::DOM\s0
For prerequisites that apply for a specific script or module, see the individual scripts' and modules' reference pages.
<http://dtdparse.sourceforge.net/>
DTDParse package originally developed by Norman Walsh, <[email protected]>.
Earl Hood, <[email protected]>, picked up support and maintenance.
Copyright (C) 1999-2001, 2003 Norman Walsh Copyright (C) 2005, Earl Hood
DTDParse may be copied only under the terms of either the Artistic License or the \s-1GNU\s0 General Public License, which may be found in the DTDParse distribution.