[Home] [By Thread] [By Date] [Recent Entries]

  • To: <xml-dev@l...>
  • Subject: Re: Newbie question:DTD problem(#PCDATA)
  • From: "Rick Jelliffe" <ricko@a...>
  • Date: Fri, 1 Nov 2002 17:57:51 +1100
  • References: <000901c2811a$bb450270$1401a8c0@d...>

From: "Allen Chu" <achu@d...>

> Thanks for your responses. Allow me to go back to my original
> thought. What I present in element bio is more than one #PCDATA or
> footnote. Changing to from "+" to "*" makes bio contain zero or more
> #PCDATA/footnote. In this case, neither #PCDAT nor footnote is required
> for bio. And that violates my original design. Therefore, I don't think
> "*" will make them equvalent from my understanding. So, what I actualy
> try to achieve is to let bio at least have one element:#PCDATA or
> footnote.
 
You cannot use DTDs for this.

The new generation of schema langages allow this. In Schematron, for example,
you can specify something like this

 <rule context="bio">
    <assert test="count(*) = count(footnote)">
        The only element type allowed in a "bio" is "footnote"
    </assert>
    <assert test="string-length(normalize-space()) &gt; 1 and count(bio)=0">
        If a "bio" element has text, it cannot have a "footnote" element
    <assert>
 </rule>

Cheers
Rick Jelliffe

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member