<br><font size=2 face="sans-serif">I did some investigation.</font>
<br>
<br><font size=2 face="sans-serif">1) xs:any wildcards are not allowed
inside xs:all groups at all. </font>
<br>
<br><font size=2 face="sans-serif">2) The schema below is valid, and admits
the instance document following it:</font>
<br>
<br><font size=2 face="sans-serif"><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"></font>
<br>
<br><font size=2 face="sans-serif"> <xsd:element name="x">
</font>
<br><font size=2 face="sans-serif"> <xsd:complexType></font>
<br><font size=2 face="sans-serif"> <xsd:sequence></font>
<br><font size=2 face="sans-serif"> <xsd:element name="name"/></font>
<br><font size=2 face="sans-serif"> <xsd:element name="address"/></font>
<br><font size=2 face="sans-serif"> <xsd:any processContents="lax"
minOccurs='0' maxOccurs='unbounded'/></font>
<br><font size=2 face="sans-serif"> </xsd:sequence></font>
<br><font size=2 face="sans-serif"></xsd:complexType></font>
<br><font size=2 face="sans-serif"></xsd:element></font>
<br>
<br><font size=2 face="sans-serif"></xsd:schema></font>
<br>
<br><font size=2 face="sans-serif">Here's the instance:</font>
<br>
<br><font size=2 face="sans-serif"><?xml version="1.0"?></font>
<br><font size=2 face="sans-serif"><x></font>
<br><font size=2 face="sans-serif"><name/></font>
<br><font size=2 face="sans-serif"><address/></font>
<br><font size=2 face="sans-serif"><foo/></font>
<br><font size=2 face="sans-serif"><bar/></font>
<br><font size=2 face="sans-serif"><quux/></font>
<br><font size=2 face="sans-serif"><frobboz/></font>
<br><font size=2 face="sans-serif"></x></font>
<br>
<br><font size=2 face="sans-serif">3) Note however, the only way to create
an XML Schema which will validate both the instance above and the one below
where the order is all scrambled, is an array-of-choice schema:</font>
<br>
<br><font size=2 face="sans-serif"><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"></font>
<br>
<br><font size=2 face="sans-serif"> <xsd:element name="x">
</font>
<br><font size=2 face="sans-serif"> <xsd:complexType></font>
<br><font size=2 face="sans-serif"> <xsd:choice maxOccurs='unbounded'>
<!-- array of choice --></font>
<br><font size=2 face="sans-serif"> <xsd:element name="name"/></font>
<br><font size=2 face="sans-serif"> <xsd:element name="address"/></font>
<br><font size=2 face="sans-serif"> <xsd:any processContents="lax"/></font>
<br><font size=2 face="sans-serif"> </xsd:choice></font>
<br><font size=2 face="sans-serif"></xsd:complexType></font>
<br><font size=2 face="sans-serif"></xsd:element></font>
<br>
<br><font size=2 face="sans-serif"></xsd:schema></font>
<br>
<br><font size=2 face="sans-serif">This array-of-choice schema will accept
this instance document also:</font>
<br>
<br><font size=2 face="sans-serif"><?xml version="1.0"?></font>
<br><font size=2 face="sans-serif"><x></font>
<br><font size=2 face="sans-serif"><foo/></font>
<br><font size=2 face="sans-serif"><address/></font>
<br><font size=2 face="sans-serif"><bar/></font>
<br><font size=2 face="sans-serif"><name/></font>
<br><font size=2 face="sans-serif"><quux/></font>
<br><font size=2 face="sans-serif"><frobboz/></font>
<br><font size=2 face="sans-serif"></x></font>
<br>
<br><font size=2 face="sans-serif">The above array-of-choice schema obviously
will also accept things where there are multiple name and address entries,
which is undesirable, but the XPath expressions x/name and x/address will
still work. </font>
<br>
<br><font size=2 face="sans-serif"><?xml version="1.0"?></font>
<br><font size=2 face="sans-serif"><x></font>
<br><font size=2 face="sans-serif"><address/></font>
<br><font size=2 face="sans-serif"><address/></font>
<br><font size=2 face="sans-serif"><foobar/></font>
<br><font size=2 face="sans-serif"></x></font>
<br>
<br><font size=2 face="sans-serif">Implications for DFDL: I suggest we
should allow dimension on any wildcards because this unordered sequence
DFDL fragment:</font>
<br>
<br><font size=2 face="sans-serif"><xsd:sequence dfdl:ordered="false"></font>
<br><font size=2 face="sans-serif"> <xsd:element name="name"/></font>
<br><font size=2 face="sans-serif"> <xsd:element name="address"/></font>
<br><font size=2 face="sans-serif"> <xsd:any id="unknown"
processContents="lax" minOccurs='0' maxOccurs='unbounded'/></font>
<br><font size=2 face="sans-serif"> </xsd:sequence></font>
<br>
<br><font size=2 face="sans-serif">describes something quite useful which
otherwise requires an array of choice to model. </font>
<br>
<br><font size=2 face="sans-serif">Array-of-choice is generally undesirable
as a model because it loses the cardinality information that says that
name is required and address is required and there can be exactly 1 instance
of each. </font>
<br>
<br><font size=2 face="sans-serif">...mikeb</font>
<br>
<br><font size=2 face="sans-serif">Mike Beckerle<br>
STSM, Architect, Scalable Computing<br>
IBM Software Group<br>
Information Platform and Solutions<br>
Westborough, MA 01581<br>
direct: voice and FAX 508-599-7148<br>
assistant: Pam Riordan <br>
priordan@us.ibm.com
<br>
508-599-7046<br>
<br>
</font>