dtddiff 1.2.1

# dtddiff

`dtddiff` list the changes that have occured in a DTD. `dtddiff` will output the following information:

- New elements and attributes
- Old/removed elements and attributes
- Content rule changes

## Usage

`dtddiff` is invoked from the Unix shell as follows:

`% dtddiff` [options]`` olddtd newdtd

The following are the list of options available:

`-catalog` filename

  Use filename as the file for mapping public identifiers and external entities to system files. If `-catalog` is not specified, "`catalog`" is used as the default filename. See Resolving External Entities for more information.

`-compact`

  Generate a compact listing.

`-help`

  Print a brief usage description. No other action is performed.

`-nocompact`

  Generate a long listing.

## dtddiff Example Output

Here is an example output generated by `dtddiff`:

        ----------------------------------------------------------------------
                    New Elements/Attributes (sgm/html2.0/html.dtd)
        ----------------------------------------------------------------------
            <a sdapref>                      <address sdaform>
            <address sdapref>                <b sdaform>
            <blockquote sdaform>             <br>
            <br sdapref>                     <cite sdaform>
            <code sdaform>                   <dd sdaform>
            <dir sdaform>                    <dir sdapref>
            <dl compact>                     <dl sdaform>
            <dl sdapref>                     <dt sdaform>
            <em sdaform>                     <form>
    ...

        ----------------------------------------------------------------------
                    Old/removed Elements/Attributes (sgm/html.dtd)
        ----------------------------------------------------------------------
            <dfn>                            <key>
            <link name>                      <u>
        ----------------------------------------------------------------------
                               Content Rule Differences
        ----------------------------------------------------------------------
             ------------------------------------------------------------
                                          <A>

      << old content rule <<
      (#PCDATA|img|em|tt|strong|b|i|U|code|samp|kbd|KEY|var|DFN|cite)

      >> new content rule >>
      (h1|h2|h3|h4|h5|h6|#PCDATA|a|img|br|em|strong|code|samp|kbd|var|cite|tt|
       b|i)*
      -(a)

             ------------------------------------------------------------
                                       <ADDRESS>

      << old content rule <<
      (a|#PCDATA|img|em|tt|strong|b|i|U|code|samp|kbd|KEY|var|DFN|cite|p)+

      >> new content rule >>
      (#PCDATA|a|img|br|em|strong|code|samp|kbd|var|cite|tt|b|i|p)*

    ...

The "..." represents text that has been deleted in order to save space.

If the `-nocompact` option is specified, then each listing in the New Elements/Attributes and Old/removed Elements/Attributes is on its own line.

## Resolving External Entities

Defining the mapping between external entities to system files may be done via the `-catalog` command-line option. The catalog provides you with the capability of mapping public identifiers to system identifiers (files) or to map entity names to system identifiers.

Catalog Syntax

The syntax of a catalog is a subset of SGML catalogs (as defined in SGML Open Draft Technical Resolution 9401:1994).

A catalog contains a sequence of the following types of entries:

`PUBLIC` public_id system_id

  This maps public_id to system_id.

`ENTITY` name system_id

  This maps a general entity whose name is name to system_id.

`ENTITY %`name system_id

  This maps a parameter entity whose name is name to system_id.

Syntax Notes

- A system_id string cannot contain any spaces. The system_id is treated as pathname of file.

- Any line in a catalog file that does not follow the previously mentioned entries is ignored.

- In case of duplicate entries, the first entry defined is used.

Example catalog file:

            -- ISO public identifiers --
    PUBLIC "ISO 8879-1986//ENTITIES General Technical//EN"            iso-tech.ent
    PUBLIC "ISO 8879-1986//ENTITIES Publishing//EN"                   iso-pub.ent
    PUBLIC "ISO 8879-1986//ENTITIES Numeric and Special Graphic//EN"  iso-num.ent
    PUBLIC "ISO 8879-1986//ENTITIES Greek Letters//EN"                iso-grk1.ent
    PUBLIC "ISO 8879-1986//ENTITIES Diacritical Marks//EN"            iso-dia.ent
    PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN"                iso-lat1.ent
    PUBLIC "ISO 8879-1986//ENTITIES Greek Symbols//EN"                iso-grk3.ent
    PUBLIC "ISO 8879-1986//ENTITIES Added Latin 2//EN"                ISOlat2
    PUBLIC "ISO 8879-1986//ENTITIES Added Math Symbols: Ordinary//EN" ISOamso

            -- HTML public identifiers and entities --
    PUBLIC "-//IETF//DTD HTML//EN"                                    html.dtd
    PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML"          ISOlat1.ent
    ENTITY "%html-0"                                                  html-0.dtd
    ENTITY "%html-1"                                                  html-1.dtd

Environment Variables

The following envariables (ie. environment variables) are supported:

P_SGML_PATH

  This is a colon (semi-colon for MSDOS users) separated list of paths for finding catalog files or system identifiers. For example, if a system identifier is not an absolute pathname, then the paths listed in P_SGML_PATH are used to find the file.

SGML_CATALOG_FILES

  This envariable is a colon (semi-colon for MSDOS users) separated list of catalog files to read. If a file in the list is not an absolute path, then file is searched in the paths listed in the P_SGML_PATH and SGML_SEARCH_PATH.

SGML_SEARCH_PATH

  This is a colon (semi-colon for MSDOS users) separated list of paths for finding catalog files or system identifiers. This envariable serves the same function as P_SGML_PATH. If both are defined, paths listed in P_SGML_PATH are searched first before any paths in SGML_SEARCH_PATH.

The use of P_SGML_PATH is for compatibility with earlier versions. SGML_CATALOG_FILES and SGML_SEARCH_PATH are supported for compatibility with James Clark's `nsgmls(1)`.

Note
  When searching for a file via the P_SGML_PATH and/or SGML_SEARCH_PATH, if the file is not found in any of the paths, then the current working directory is searched.

Note

  The file specified by `-catalog` is read first before any files specified by SGML_CATALOG_FILES.

## Availability

This software is part of the perlSGML package; see (http://www.oac.uci.edu/indiv/ehood/perlSGML.html)

## Author