DTD inheritance?

Lars Marius Garshol larsga at ifi.uio.no
Wed Nov 11 22:53:54 GMT 1998


* Don Kackman
| 
| I've got two document types with associated DTDs. The first is a subset
| of the second. I don't want to merge these two DTDs into one file but
| also don't want to maintain both files seperately.
| 
| Is it possible to include one DTD in another through an external entity
| reference? If so how?

In file sub-dtd.dtd:

[...lots of declarations...]

<!ENTITY % base-dtd SYSTEM "base-dtd.dtd">
%base-dtd;

where the file base-dtd.dtd contains the declarations common to both
DTDs.

You will probably have some problems with content models when you try
this if sub-dtd.dtd contains element declarations. If so, it may be
helpful for you to know that section 4.2 of the spec says: "If the
same entity is declared more than once, the first declaration
encountered is binding; at user option, an XML processor may issue a
warning if entities are declared multiple times."
 
This can be used to make 'hooks' in content models where sub-DTDs can
insert the new elements they introduce.

| Also if so, can I declare additional attributes in the second DTD
| for elements originally declared in the first?

Yes, the XML spec explicitly provides for this. In section 3.3 it
says: "When more than one AttlistDecl is provided for a given element
type, the contents of all those provided are merged."

--Lars M.


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




More information about the Xml-dev mailing list