---
name: "dtddiff"
section: "1p"
platform: "linux"
package: "libsgml-dtdparse-perl"
version: "2.00-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/dtddiff/1p"
---

# dtddiff(1p)

Compare two SGML/XML DTDs

## 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)](/diff/1.md).  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.
