dtddiff

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


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

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 program is part of the perlSGML package; see <URL:http://www.oac.uci.edu/indiv/ehood/perlSGML.html>


Author

Earl Hood <ehood@medusa.acs.uci.edu>