[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Elements order:
- From: Joe English <jenglish@flightlab.com>
- To: xml-dev@lists.xml.org
- Date: Thu, 23 Aug 2001 10:07:16 -0700
Christopher R. Maden wrote:
> Yes. SGML had an "and" connector:
> <!ELEMENT data - - (name & surname & age & gender)>
> would require exactly one each of name, surname, age, and gender, in any orde
> r.
>
> However, there were concerns that the way SGML mandated the interpretation
> of this content model was not easily implemented. This capability, without
> SGML's restrictions, is back in Schemas.
AIUI, W3C XML Schema places even *more* restrictions on 'all'
groups than SGML does for '&' groups. If I'm interpreting the Rec
correctly, it doesn't allow <xsd:all> groups to be used inside
other model groups, and the members of an <xsd:all> group
are limited to single elements (optionally optional).
The main trouble with '&' groups in SGML is that they aren't
*quite* what's needed in the case of repeatable subelements.
For example, in SGML:
<!ELEMENT HEAD - - (TITLE & BASE? & LINK* & META*) >
allows the sequences 'TITLE,LINK,LINK,META' and
'TITLE,META,LINK,LINK', but not 'TITLE,LINK,META,LINK'.
Specifying the desired content model is rather tricky
even with '&' groups.
TREX (and RELAX-NG?) have a more powerful (and simpler!)
'interleave' operator which does the right thing for this
sort of case.
It's not hard to express in Schematron either. I don't
think this construct is even possible to specify with
W3C XML Schemas (though I may be mistaken).
--Joe English
jenglish@flightlab.com