[
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)
|