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

or
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>
        </rule>
    </pattern>
</schema>

You can download schematron-report, which is an error browser generating
HTML pages, from
http://www.ascc.net/xml/resource/schematron/schematron.html

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