W3C home > Mailing lists > Public > xmlschema-dev@w3.org > January 2005

RE: 'all' must only appear as the content type of a complex type definition?

From: Michael Kay <mike@saxonica.com>
Date: Wed, 5 Jan 2005 10:05:29 -0000
To: "'Scott Lawrence'" <slawrence@pingtel.com>, <xmlschema-dev@w3.org>
Message-Id: <E1Cm82l-00063O-00@ukmail1.eechost.net>

Your schema is definitely invalid. Saxon gives the error message:

Error on line 23 of file:/c:/temp/either.xsd:
  A choice compositor must not contain an <xs:all> compositor
Schema processing failed: The schema is invalid

You can solve the problem by unfolding the xs:all into a choice that lists
all the possible combinations 

(A (BC? | CB?)?) | (B (AC? | CA?)?) | (C (AB? | BA?)) | D

but it's pretty unwieldy. 

Michael Kay
http://www.saxonica.com/
 

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Scott Lawrence
> Sent: 04 January 2005 19:52
> To: xmlschema-dev@w3.org
> Subject: 'all' must only appear as the content type of a 
> complex type definition?
> 
> 
> I'm trying to develop a schema for an existing XML usage (for which no
> schema or DTD was ever written before).  I've run into a case that I
> can't get Xerces-C to validate, and am not sure whether my schema
> construction or the parser validation is the problem.  I've 
> put together
> a simplified version ...
> 
> The short statement of the problem is that I have an element 'address'
> whose content may be either the single element 'url' or any 
> combination
> of the elements 'user', 'host', and 'qual'.  I tried to 
> express this as:
> 
>   <group name='parts'>
>     <all>
>       <element ref='dmp:user' minOccurs='0' maxOccurs='1'/>
>       <element ref='dmp:host' minOccurs='0' maxOccurs='1'/>
>       <element ref='dmp:qual' minOccurs='0' maxOccurs='1'/>
>     </all>
>   </group>
> 
>   <element name='address'>
>     <complexType>
>       <choice>
>         <group   ref='dmp:parts'/>
>         <element ref='dmp:url'/>
>       </choice>
>     </complexType>
>   </element>
> 
> When I try to validate a document against the above (using either
> xerces-c version 2.5 or 2.6), I get:
> 
> ======
> > DOMCount -v=always -s -f -n either.xml
> 
> Error at file file:///home/lawrence/tmp/groupall/either.xsd, line 24,
> char 35
>   Message: A group whose content is 'all' must only appear as the
> content type of a complex type definition.
> ======
> 
> Should the above work?  Is there a (better) way to accomplish what I'm
> after?  (I attached a complete version of the above schema, and what I
> think should be a valid instance)
> 
> -- 
> Scott Lawrence
> Consulting Engineer
> Pingtel Corp.
> http://www.pingtel.com/
> +1.781.938.5306 x162
> 
> 
Received on Wednesday, 5 January 2005 10:05:33 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:49 GMT