OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: Nested DTDs

[ Lists Home | Date Index | Thread Index ]
  • From: "James Tauber" <jtauber@jtauber.com>
  • To: "Mallikarjuna Sangappa" <malliks@rocketmail.com>, <xml-dev@ic.ac.uk>
  • Date: Fri, 18 Jun 1999 14:34:37 +0800

By "nested DTDs" I assume you mean making use of one DTD's vocabulary with a
document that makes use of another DTD's vocabulary. It is possible if the
DTDs are so designed.

Imagine that you have a "report" DTD in the file report.dtd:

<!ELEMENT report (title,paragraph+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT paragraph (#PCDATA|emph)*>
<!ELEMENT emph (#PCDATA)>

And you also have a "person" DTD in the file person.dtd:

<!ELEMENT person (firstname, lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>

It is easy to make a new DTD that combined the vocabularies in the file
combined.dtd:

<!ENTITY % report "report.dtd">
<!ENTITY % person "person.dtd">
%report;
%person;

Ah, you say, but how do I actually use both of these together? How do I
allow, for example, a person to be marked up in a paragraph? You can't
override the content specification for paragraph so that combined.dtd reads:

<!ENTITY % report "report.dtd">
<!ENTITY % person "person.dtd">
<!ELEMENT paragraph (#PCDATA|person|emph)*>
%report; <!-- this is an error -->
%person;

What you *can* do, or rather what the designer of the report DTD can do, is
write report.dtd as:

<!ELEMENT report (title,paragraph+)>
<!ELEMENT title (#PCDATA)>
<!ENTITY % paragraph.ext "">
<!ELEMENT paragraph (#PCDATA| %para.ext; emph)*>
<!ELEMENT emph (#PCDATA)>

This makes the content model of the paragraph element type extensible.

Because entity declarations can be overridden (by declaring a new literal
value earlier) you can have a combined.dtd:

<!ENTITY % report "report.dtd">
<!ENTITY % person "person.dtd">
<!ENTITY % paragraph.ext "person |">
%report;
%person;

I hope this helps.

James



xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo@ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo@ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@ic.ac.uk)



  • Follow-Ups:



 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS