Nested DTDs
Richard L. Goerwitz
richard at goon.stg.brown.edu
Fri Jun 18 16:31:01 BST 1999
James Tauber wrote:
> 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)>
Just for the record, this isn't entirely okay. You're violating a few
"for interoperability" constraints.
First off, the empty parameter entity replacement text is no good in a
content model. Secondly, even if you replace it with something like
<!ENTITY % paragraph.ext "stuff |">, that's not strictly okay either,
unless you are tricky and cut and paste tokens by defining them all
inside an internal parameter entity.
This ugly mess will actually pass muster:
<!ELEMENT report (title,paragraph+)>
<!ELEMENT title (#PCDATA)>
<!ENTITY % para.ext "stuff |">
<!ENTITY % paradecl "<!ELEMENT paragraph (#PCDATA| %para.ext; emph)*>">
%paradecl;
<!ELEMENT emph (#PCDATA)>
<!ELEMENT stuff (#PCDATA)>
I'm always wondering why all this "for interoperability" language is
in the spec. It's hard to know what weight to assign something that's
neither legal nor illegal - or something that's technically valid, but
discouraged in some usage contexts that aren't very clearly defined in
the spec.
--
Richard Goerwitz
PGP key fingerprint: C1 3E F4 23 7C 33 51 8D 3B 88 53 57 56 0D 38 A0
For more info (mail, phone, fax no.): finger richard at goon.stg.brown.edu
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/ and on CD-ROM/ISBN 981-02-3594-1
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