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

Thank you for the simplification of my code. This was exactly what I needed.
 
Erwin


________________________________

	Von: Michael Kay [mailto:mike@saxonica.com] 
	Gesendet: Freitag, 13. Februar 2009 18:20
	An: Klöck, Erwin; xmlschema-dev@w3.org
	Betreff: RE: Best way to ensure one element out of a set
	
	
	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 Monday, 16 February 2009 09:35:41 UTC