Applying DTDs to sub-documents

Anthony B. Coates (abcoates@ozemail.com.au)
Mon, 23 Nov 1998 00:20:14 AET


I'm sure this must have been dealt with some time ago, so my apologies in
advance, but has anyone been applying DTDs to sub-documents, e.g. you have an
XML document (without a DTD) like

<?xml version="1.0"?>
<document>
<head>
<title>The Title</title>
</head>
<body>
<equation dtd="equation.dtd">
<variable>a</variable>
<equals/>
<variable>b</variable>
</equation>
</body>
</document>

and you only want to apply the DTD to a particular section, in this case the
<equation> tag and its children. What I would really like is to have my XML
parser produce a tag stream, and then have the appropriate part of the tag
stream validated against the DTD. However, looking at how current parsers work,
it seems more like what I would have to do is
(i) parse the document
(ii) intercept the <equation> tag and its siblings
(iii) generate an intermediate XML document from (ii)
(iv) parse the intermediate document using the DTD
which involves an extra "tags -> XML test -> tags" round-trip that I would have
preferred to avoid.

Can anyone tell me if there is a better way than what I have described above?
I'm sure I won't be the only one wanting to do this, so some of you must already
have had much better ideas than my own. Anyway, if anyone has any hints, I
would be very grateful for them.

Cheers,
Tony.

** Anthony B. Coates
** Software Engineer (Java). This is a 100% Pure Java e-mail.
** <mailto:abcoates@ozemail.com.au>