- From: Orion Adrian <oadrian@hotmail.com>
- Date: Tue, 23 Mar 2004 18:03:22 -0500
- To: www-xml-schema-comments@w3.org
I have to agree with the previous posters comments on bag elements. While
this construct is possible to accomplish with existing constructs, they are
essentially unusable for such a common construct.
The following accomplishes what a bag element would accomplish for the head
element in XHTML 1.0, though I find this very unwieldy.
<xs:group name="head.misc">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="script"/>
<xs:element ref="style"/>
<xs:element ref="meta"/>
<xs:element ref="link"/>
<xs:element ref="object"/>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:element name="head">
<xs:annotation>
<xs:documentation>
content model is "head.misc" combined with a single
title and an optional base element in any order
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group ref="head.misc"/>
<xs:choice>
<xs:sequence>
<xs:element ref="title"/>
<xs:group ref="head.misc"/>
<xs:sequence minOccurs="0">
<xs:element ref="base"/>
<xs:group ref="head.misc"/>
</xs:sequence>
</xs:sequence>
<xs:sequence>
<xs:element ref="base"/>
<xs:group ref="head.misc"/>
<xs:element ref="title"/>
<xs:group ref="head.misc"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="i18n"/>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="profile" type="URI"/>
</xs:complexType>
</xs:element>
Something better would be:
<xs:element name="head">
<xs:annotation>
<xs:documentation>
content model is "head.misc" combined with a single
title and an optional base element in any order
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:bag>
<xs:element ref="title"/>
<xs:element ref="base" minOccurs="0"/>
<xs:element ref="script" minOccurs="0" maxOccurs="unbouned"/>
<xs:element ref="style" minOccurs="0" maxOccurs="unbouned"/>
<xs:element ref="meta" minOccurs="0" maxOccurs="unbouned"/>
<xs:element ref="link" minOccurs="0" maxOccurs="unbouned"/>
<xs:element ref="object" minOccurs="0" maxOccurs="unbouned"/>
</xs:bag>
<xs:attributeGroup ref="i18n"/>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="profile" type="URI"/>
</xs:complexType>
</xs:element>
A couple of positive points of the bag construct (though I might rename it).
1) Increased readability and ease of authoring.
2) No longer requires tricks and can be contained in a single xs:element
element.
Increased readability and usability should be enough to introduce this
construct, but even if it isn't then two is a nice addition.
Orion Adrian
_________________________________________________________________
Get tax tips, tools and access to IRS forms – all in one place at MSN Money!
http://moneycentral.msn.com/tax/home.asp
Received on Tuesday, 23 March 2004 18:04:49 UTC