W3C home > Mailing lists > Public > xmlschema-dev@w3.org > March 2004

RE: Problem designing complexType accepting a specified element and a llowing any others

From: Markus Seibold <markus.seibold@gmx.net>
Date: Thu, 11 Mar 2004 22:09:36 +0100
To: "'Hess Yvan'" <yvan.hess@imtf.ch>, <xmlschema-dev@w3.org>
Message-ID: <000701c407ad$2b11f3f0$46dc9b3e@laptopmarkus>

Hi Yvan,
try <all> instead of <sequence>. This element allows the elements to
appear in random order but element declarations within the all container
cannot contain maxOccurs="unbounded" but only maxOccurs="1".

Markus

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Hess Yvan
> Sent: Donnerstag, 11. März 2004 20:45
> To: 'xmlschema-dev@w3.org'
> Subject: Problem designing complexType accepting a specified 
> element and a llowing any others
> 
> 
> 
> I want to design a complexType named "metadata" that forces 
> the presence of an "identifier" element and allows any others 
> elements not predefined. Moreover the "identifier" and the 
> others elements can appear in any order into the "metadata" 
> element. Here are examples of valid xml instances:
> 
> <metadata xmlns="http://www.imtf.com/test">
>   <identifier>urn:hsc:1234</identifier>
>   <name>Hess Yvan</name>
> </metadata>
> 
> <metadata xmlns="http://www.imtf.com/test">
>   <subject>This is the subject</subject>
>   <identifier>urn:hsc:1234</identifier>
> </metadata>
> 
> I implemented the following xml schema but it doesn't work: 
> 
> <xs:element name="metadata">
>   <xs:complexType>
>     <xs:choice minOccurs="0" maxOccurs="unbounded">
>       <xs:element name="identifier" type="xs:string"/>
>       <xs:any processContents="lax" minOccurs="0" 
> maxOccurs="unbounded"/>
>     </xs:choice>
>   </xs:complexType>
> </xs:element>
> 
> 
> I get the following error with Xerces validation and a 
> similar one with XSV (I violated the "Unique Particle Attribution"). 
> 
> [Error] choice.xsd:4:23: cos-nonambig: 
> "http://www.imtf.com/test":identifier
> and
>  WC[##any] (or elements from their substitution group) 
> violate "Unique Particle Attribution". During validation 
> against this schema, ambiguity would be created for those two 
> particles.
> choice.xml: 571 ms (3 elems, 1 attrs, 0 spaces, 30 chars)
> 
> If I change my xml schema using sequence instead of choice as follow:
> 
> <xs:element name="metadata">
>   <xs:complexType>
>     <xs:sequence>
>       <xs:element name="identifier" type="xs:string"/>
>       <xs:any processContents="lax" minOccurs="0" 
> maxOccurs="unbounded"/>
>     </xs:sequence>
>   </xs:complexType>
> </xs:element>
> 
> it works but in this case the "identifier" element must be at 
> the FIRST position and I don't want that !!! 
> 
> Please can you help me to solve this problem. I have no idea 
> how to solve it !!!
> 
> Regards. Yvan Hess
> 
> --------------------------------------------------------
> XML file:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <metadata xmlns="http://www.imtf.com/test" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.imtf.com/test choice.xsd">
>    <identifier>urn:hsc:1234</identifier>
>    <name>Hess Yvan</name>
> </metadata>
> 
> --------------------------------------------------------
> XML schema file:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema targetNamespace="http://www.imtf.com/test"
> xmlns="http://www.imtf.com/test" 
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified" attributeFormDefault="unqualified">
>    <xs:element name="metadata">
>       <xs:complexType>
>          <xs:choice minOccurs="0" maxOccurs="unbounded">
>             <xs:element name="identifier" type="xs:string"/>
>             <xs:any processContents="lax" minOccurs="0" 
> maxOccurs="unbounded"/>
>          </xs:choice>
>       </xs:complexType>
>    </xs:element>
> </xs:schema>
> 
> 
> 
> 
Received on Thursday, 11 March 2004 16:33:28 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 5 February 2014 23:40:23 UTC