W3C home > Mailing lists > Public > xmlschema-dev@w3.org > February 2009

Re: Best way to ensure one element out of a set

From: George Cristian Bina <george@oxygenxml.com>
Date: Fri, 13 Feb 2009 21:03:46 +0200
Message-ID: <4995C412.3070306@oxygenxml.com>
To: Michael Kay <mike@saxonica.com>
Cc: Erwin' <Erwin.Kloeck@bayernlb.de>, xmlschema-dev@w3.org

 >     I want to make sure that at least one of the primitive_condition
 >     elements ist used, but I don't care which one.

For that you need to set minOccurs="1" on the choice from Mike's example 
or in the group reference in your example.

Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


Michael Kay wrote:
> You don't need the named group, you could do the following which is 
> equivalent:
>  
>     <xs:complexType name="conditions" >
>         <xs:sequence>  
>             <xs:choice minOccurs="0" maxOccurs="unbounded">
>                <xs:element name="primitive_condition_0" />
>                <xs:element name="primitive_condition_1" />
>                <xs:element name="primitive_condition_2" />
>             </xs:choice> 
> 
>             <xs:element name="complex_condition" 
> type="complex_condition" minOccurs="0" maxOccurs="unbounded" />
>         </xs:sequence>
>     </xs:complexType> 
>    
> Michael Kay
> http://www.saxonica.com/
> 
>     ------------------------------------------------------------------------
>     *From:* xmlschema-dev-request@w3.org
>     [mailto:xmlschema-dev-request@w3.org] *On Behalf Of *Klöck, Erwin
>     *Sent:* 13 February 2009 15:41
>     *To:* xmlschema-dev@w3.org
>     *Subject:* Best way to ensure one element out of a set
> 
> 
>     Hi,
> 
>     is this the best way to ensure that one element out of a set is used?
>     I have the following xml:
> 
>     --- test.xml begin ---
>     <?xml version="1.0" encoding="ISO-8859-1"?>
>     <top xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>          xsi:noNamespaceSchemaLocation="test.xsd">
>         
>          <conditions>
> 
>              <primitive_condition_0 />
>              <primitive_condition_1 />
>              <primitive_condition_2 />   
> 
>              <complex_condition />
>          </conditions>
>     </top>
>     --- test.xml end ---
> 
>     I want to make sure that at least one of the primitive_condition
>     elements ist used, but I don't care which one.
>     I have come up with the following solution (which works) but are now
>     wondering if this is the best way to do this.
>     My qestion is: Is there a more straight forward way to do this than
>     to have a group of choices?
> 
>     --- test.xsd begin ---
>     <?xml version="1.0" encoding="UTF-8"?>
>     <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>         <xs:element name="top" >
>             <xs:complexType>
>                 <xs:sequence>
>                     <xs:element name="conditions" type="conditions" />
>                 </xs:sequence>
>             </xs:complexType>
>         </xs:element>
>        
>         <xs:complexType name="conditions" >
>             <xs:sequence>
>                 <xs:group ref="primitive_conditon" minOccurs="0"
>     maxOccurs="unbounded" />
>                 <xs:element name="complex_condition"
>     type="complex_condition" minOccurs="0" maxOccurs="unbounded" />
>             </xs:sequence>
>         </xs:complexType>
>        
>         <xs:group name="primitive_conditon" >
>             <xs:choice>
>                 <xs:element name="primitive_condition_0" />
>                 <xs:element name="primitive_condition_1" />
>                 <xs:element name="primitive_condition_2" />
>             </xs:choice>
>         </xs:group>
>        
>         <xs:complexType name="complex_condition" />
>     </xs:schema>
>     --- test.xsd end ---
> 
>     Thanks for taking an interest.
> 
>     Erwin
> 
Received on Friday, 13 February 2009 19:04:26 GMT

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