NORMDTD - DTD Normalizer

From @UTARLVM1.UTA.EDU:owner-tei-l@UICVM.CC.UIC.EDU Thu May 23 07:25:52 1996
Date:       Thu, 23 May 1996 05:28:29 CDT
Reply-To:   Lou Burnard <>
Sender:     "TEI (Text Encoding Initiative) public discussion list"
From:       Lou Burnard <>
Subject:    names, dates, normalizing


[. . . ]

Wendy's note also reminded me that I had still not sufficiently
publicized the availability of rather a useful tool for those who want
to customize the TEI dtd for a particular application area (i.e. just
about anyone using the TEI).  It's not the first tool of this kind to be
mentioned here, but I think it's one of the best. It's called NORMDTD
and you can get it for free from:

(Use binary ftp to get this file, which is a DOS self-extracting archive)

Here's what its author says:

NORMDTD is a DOS (yes!) program that reads a valid SGML DTD, even a
TEI-like one that uses marked sections and multiple input files, and
generates a single file containing a normalized version of that DTD.
The element content models in this normalized DTD will not contain any
references to elements that are not declared, and so it can be used by
highly-strung SGML packages such as RulesBuilder that refuse to process
TEI applications (in particular) for this reason.  In fact, having a
normalized DTD in a single file can be helpful for a number of reasons,
to a variety of SGML applications.

The command syntax is:

     NORMDTD DTD-file [output-DTD-file]

If you don't specify the output-DTD-file, NORMDTD will create a file for
you with the same name as the source DTD but suffix .DTN.  If that file
already exists it will refuse to run.

Having run NORMDTD, you should run a parser past the resulting DTD to
check for 'hanging' separators and ambiguous context models I wasn't
clever enough to strip out.  A small number of hand-edits will be
required for a typical TEI application.

The software has been known to hang my PC when presented with an invalid
DTD: it's wise to parse your TEI application and check it's clean before
trying to normalize the DTD.

I don't want any money for this software, and on the other hand I don't
take any responsibility for anything it might do to machines, data,
pets, etc.  It has worked on all the valid DTDs I have tested it on, but
I make no claim for 100% SGML-conformance.  If you do have problems, let
me know via email ( - I'll help if I can.

Richard Light