[
Lists Home |
Date Index |
Thread Index
]
- To: <xml-dev@lists.xml.org>
- Subject: Re: [xml-dev] Newbie question:DTD problem(#PCDATA)
- From: "Rick Jelliffe" <ricko@allette.com.au>
- Date: Fri, 1 Nov 2002 17:57:51 +1100
- References: <000901c2811a$bb450270$1401a8c0@dscs.com>
From: "Allen Chu" <achu@dscs.com>
> 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()) > 1 and count(bio)=0">
If a "bio" element has text, it cannot have a "footnote" element
<assert>
</rule>
Cheers
Rick Jelliffe
|