NAME

dtddiff - Compare two SGML/XML DTDs

SYNOPSIS

dtddiff [options] <parsed-dtd1.xml> <parsed-dtd2.xml>

DESCRIPTION

dtddiff compares two SGML/XML DTDs based upon the XML 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 XML 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 - (minus followed by a space) denote items removed. Lines starting with a + (plus followed by a space) denote items added. Lines starting with a ! (explanation point followed by a space) denote items changed.

OPTIONS

--attributes
--noattributes

Print, or not, element attribute differences. The default is to print differences.

--content-model-expanded
--nocontent-model-expanded

Expand, or not expand, element content models during comparison. Expanded models have all parameter entities resolved. The default is to use expanded content model.

--elements
--noelements

Print, or not, element content model differences. The default is to print differences.

--general-ents
--nogeneral-ents

Print, or not, general entity differences. The default is to not print differences.

--parameter-ents
--noparameter-ents

Print, or not, parameter entity differences. The default is to not print differences.

--dump

Do a textual dump of a DTD. When this option is specified, only a single DTD is dumped. This is mainly used for debugging purposes.

--version

Print version and synopsis.

--help

Print synopsis and options available.

--man

Print manual page.

SEE ALSO

dtdparse, dtddiff2html

See SGML::DTDParse for an overview of the DTDParse package.

PREREQUISITES

File::Basename, Getopt::Long, Xml::Parser

AVAILABILITY

<http://dtdparse.sourceforge.net/>

AUTHORS

Earl Hood, <earl@earlhood.com>

COPYRIGHT AND LICENSE

See SGML::DTDParse for copyright and license information.