DTD Question - PCDATA followed by an optional element

Rick Jelliffe ricko at allette.com.au
Thu Nov 18 02:27:34 GMT 1999

From: Richard Tobin <richard at cogsci.ed.ac.uk>

>> I have a large number of fields that normally hold simple textual
data, but
>> might also include a comment.
>You can't constrain the content in that way with a DTD.  The best you
>do is
>    <!ELEMENT rho0 (#PCDATA|comment)*>
>which allows any mixture of comments and text.

To get strong typing you either must

1)explicitly label the text section:
    <!ELEMENT rho0 (text, comment?)>
    <!ELEMENT text (#PCDATA)>

2) use some other schema language to validate: use a DTD with Richard's
    <!ELEMENT rho0 (#PCDATA|comment)*>

Then the following Schematron schema to check that only one comment is
used (I think this is correct, I haven't run it):
<schema><title>Norman's Schema</title>
    <pattern name="Rho0 Pattern">
        <rule context="rho0">
            <assert text="count(comment) &lt;= 1"
            >An rh0 element should have only one comment</assert>

You can download schematron-report, which is an error browser generating
HTML pages, from

Rick Jelliffe

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 unsubscribe, mailto:majordomo at ic.ac.uk the following message;
unsubscribe 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