[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Nested DTDs

  • From: "James Tauber" <jtauber@j...>
  • To: "Mallikarjuna Sangappa" <malliks@r...>, <xml-dev@i...>
  • Date: Fri, 18 Jun 1999 14:34:37 +0800

nested dtds
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@i...
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@i... the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo@i... the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@i...)



PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.