Re: Ignore Order while validating XSD

Hi Ram,

You can relax the content model to a choice with maxOccurs-"unbounded" 
of your possible elements and then embed a couple of Schematron rules to 
check that the number of occurrences for each element. For instance if 
you want an element test to contain a,b,c and one or more x elements in 
any order then the schema looks like below:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:sch="http://www.ascc.net/xml/schematron">
   <xs:element name="test">
     <xs:annotation>
       <xs:appinfo>
         <sch:pattern name="Check the number of occurences.">
           <sch:rule context="test">
             <sch:assert test="count(a)=1">Element a should appear 
once.</sch:assert>
             <sch:assert test="count(b)=1">Element b should appear 
once.</sch:assert>
             <sch:assert test="count(c)=1">Element c should appear 
once.</sch:assert>
             <sch:assert test="count(x)>=1">Element a should appear al 
least once.</sch:assert>
           </sch:rule>
         </sch:pattern>
       </xs:appinfo>
     </xs:annotation>
     <xs:complexType>
       <xs:choice maxOccurs="unbounded">
         <xs:element name="a"/>
         <xs:element name="b"/>
         <xs:element name="c"/>
         <xs:element name="x"/>
       </xs:choice>
     </xs:complexType>
   </xs:element>
</xs:schema>

This scales well with the number of elements.

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


Ramkumar Menon wrote:
> Hi,
>  
> is it possible to ignore the document order while using schema validator 
> to validate an XSD ?
> If not, is there an alternative to the following issue ?
> I have an element that has a set of elements witihn it, one of them 
> being maxOccurs="unbounded". Since I wanted to use the "xsd:all" group 
> so that I can assume unordered child nodes, the node with 
> maxOccurs="unbounded" prevents me from making such a definition.
>  
> Any help will be appreciated.
> pls reply direcly to my email id, since I am not on this mailing list.
>  
> rgds,
> Ram
> 
> -- 
> Shift to the left, shift to the right!
> Pop up, push down, byte, byte, byte!
> 
> -Ramkumar Menon
> A typical Macroprocessor

Received on Monday, 20 February 2006 09:09:40 UTC