Elements cannot be described more than once in DTD, right ?

Rick Jelliffe ricko at allette.com.au
Wed Sep 22 06:36:19 BST 1999


From: Sebastien Sahuc <ssahuc at imediation.com

>Hello,
>
>I have an element (<operations>) than can have different set of sub
>element. How can I describe it in DTD ?
>
>For example :
><affiliate>
>  <operations>
>    <get/>
>    <set/>
>  </operations>
></affiliate>
>
>and :
>
><merchant>
>  <operations>
>    <signup/>
>  </operations>
></merchant>
>
>How can I express in DTD that affiliate operations in 'set' and 'get',
>and that merchant has only the 'signup' ?

XML DTDs do not allow parents to influence and element type's content
models.
(You could do this in SGML DTDs to an extent, by using "exclusions".)

So your choices are:
    1) Check that you really need to have a generic "operations" element
type.
You can transfer the info that it is an "operation" to an attribute:
<!ELEMENT  affiliate ( a_operations, ...)>
<!ELEMENT mechant (m_operations, ...)>
<!ELEMENT a_operations (get, set)>
<!ELEMENT m_operations ( signup )>
<!ATTLIST a_operations type CDATA #FIXED "operations">
<!ATTLIST m_operations type CDATA #FIXED "operations">
This has all the same information, just in different markup positions.

   2) Use
<!ELEMENT  affiliate ( operations, ...)>
<!ELEMENT mechant ( operations, ...)>
<!ELEMENT operations (signup | (get, set))>
and then use XSL or DOM or Perl/Python/OmniMark to validate
your extra constraints.

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