Parser question... (DTD pre-parsng)

Michael Kay M.H.Kay at
Wed Jul 15 12:00:04 BST 1998

Kim Covil <kimc at> wrote
>...I have been wondering whether there are any
>tools out there that will 'cache' the parsing of a DTD...
As all
>our resources use the same DTD, each time a view is created
>xml file is parsed... the DTD is referenced... the DTD is
>and then the xml is validated...
A very interesting question. I had the same thought about a
related problem: the cost of repeated parsing and validation
of the same XML document instance.  I did a few experiments
to try and devise a format for "pre-parsed XML" that would
be faster to read than the original. My experiments failed,
mainly I think because most of the formats I tried used a
greater number of bytes than the original, and the parsing
cost is dominated by the "read next byte" cost.

For reference, the three formats I played with were:
- a file representing a sequence of SAX events
- a Java serialisation of this sequence
- a variant of James Clark's "canonical XML" (with tricks
such as minimized end tags)

I came to the conclusion that the last of these could give a
slight saving but the gain isn't worth the pain.

The only practical way I found of cutting out repeated work
was to remove the DTD reference once I know the document is
valid. With very few exceptions (e.g. white space handling,
attribute defaults) the presence of a DTD makes no
difference to the processing of a valid document, other than
to add to its cost. And if these features (white space,
default attributes) are important, you can apply them to the
instance in a preprocessing stage.

Mike Kay

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at
Archived as:
To (un)subscribe, mailto:majordomo at the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at

More information about the Xml-dev mailing list