Compare two sgml/xml dtds
dtddiff [options] <parsed-dtd1.xml> <parsed-dtd2.xml>
dtddiff compares two \s-1SGML/XML\s0 DTDs based upon the \s-1XML\s0 dumps generated by dtdparse. The following summarizes the typically usage of dtddiff:
dtdparse --outfile parsed-dtd1.xml dtd1.dtd dtdparse --outfile parsed-dtd2.xml dtd2.dtd dtddiff parsed-dtd1.xml parsed-dtd2.xml > dtd.diff
Since dtddiff processes the \s-1XML\s0 dumps from dtdparse, a full reparse of the DTDs is avoided.
dtddiff does a structural-based comparision. Therefore, the order of declarations in the DTDs does not affect the comparison.
The output generated by dtddiff is similiar in style to a context-based diff done by the program diff\|(1). The following is an example of the type of output generated:
*** DocBook 4.1 DTD --- DocBook 4.2 DTD *************** Elements Added --- DocBook 4.2 DTD ---- + bibliocoverage + biblioid + bibliorelation + bibliosource + blockinfo + citebiblioid + coref + errortext + personblurb + personname + refsection + refsectioninfo + textdata *************** Elements Changed ... [snip] ...
*** DocBook 4.1 DTD ****
! entrytbl ::= (colspec*, spanspec*, thead?, tbody) -(entrytbl)
entrytbl Attributes: ! charoff NUTOKEN #IMPLIED ! colname NMTOKEN #IMPLIED ! cols NUMBER #REQUIRED ! colsep NUMBER #IMPLIED ! nameend NMTOKEN #IMPLIED ! namest NMTOKEN #IMPLIED ! rowsep NUMBER #IMPLIED ! spanname NMTOKEN #IMPLIED ! tgroupstyle NMTOKEN #IMPLIED
--- DocBook 4.2 DTD ----
! entrytbl ::= (colspec*, spanspec*, thead?, tbody)
entrytbl Attributes: ! charoff CDATA #IMPLIED ! colname CDATA #IMPLIED ! cols CDATA #REQUIRED ! colsep CDATA #IMPLIED ! nameend CDATA #IMPLIED ! namest CDATA #IMPLIED ! rowsep CDATA #IMPLIED ! spanname CDATA #IMPLIED ! tgroupstyle CDATA #IMPLIED
... [snip] ...
*** DocBook 4.1 DTD ****
graphic Attributes: ! depth NUTOKEN #IMPLIED ! format [Enumeration] #IMPLIED ! BMP, CGM-CHAR, CGM- ! BINARY, CGM-CLEAR, ! DITROFF, DVI, EPS, EQN, ! FAX, GIF, GIF87a, GIF89a, ! JPG, JPEG, IGES, PCX, ! PIC, PNG, PS, SGML, TBL, ! TEX, TIFF, WMF, WPG, ! linespecific ! scale NUMBER #IMPLIED ! scalefit NUMBER #IMPLIED ! width NUTOKEN #IMPLIED
--- DocBook 4.2 DTD ----
graphic Attributes: + contentdepth CDATA #IMPLIED + contentwidth CDATA #IMPLIED + valign [Enumeration] #IMPLIED + top, middle, bottom ! depth CDATA #IMPLIED ! format [Enumeration] #IMPLIED ! BMP, CGM-CHAR, CGM- ! BINARY, CGM-CLEAR, ! DITROFF, DVI, EPS, EQN, ! FAX, GIF, GIF87a, GIF89a, ! JPG, JPEG, IGES, PCX, ! PIC, PNG, PS, SGML, TBL, ! TEX, TIFF, WMF, WPG, SVG, ! linespecific ! scale CDATA #IMPLIED ! scalefit CDATA #IMPLIED ! width CDATA #IMPLIED
... [snip] ...
Lines starting with a \*(C`- \*(C' (minus followed by a space) denote items removed. Lines starting with a \*(C`+ \*(C' (plus followed by a space) denote items added. Lines starting with a \*(C`! \*(C' (explanation point followed by a space) denote items changed.
Print, or not, element attribute differences. The default is to print differences.
Expand, or not expand, element content models during comparison. Expanded models have all parameter entities resolved. The default is to use expanded content model.
Print, or not, element content model differences. The default is to print differences.
Print, or not, general entity differences. The default is to not print differences.
Print, or not, parameter entity differences. The default is to not print differences.
Do a textual dump of a \s-1DTD\s0. When this option is specified, only a single \s-1DTD\s0 is dumped. This is mainly used for debugging purposes.
Print version and synopsis.
Print synopsis and options available.
Print manual page.
dtdparse, dtddiff2html
See SGML::DTDParse for an overview of the DTDParse package.
File::Basename, Getopt::Long, Xml::Parser
<http://dtdparse.sourceforge.net/>
Earl Hood, <[email protected]>
See SGML::DTDParse for copyright and license information.