Q:

XSD specific elements in different position

The problem I faced to is to build correct XSD schema for my XML 
I have the following XML: 
<VanToRoute>
   <VanId>1111</VanId>
   <RouteNo>1459</RouteNo>
   <RouteNo>1458</RouteNo>
   <RouteNo>2459</RouteNo>
   <RouteNo>1THU</RouteNo>
</VanToRoute>
<VanToRoute>
   <RouteNo>2458</RouteNo>
   <VanId>2222</VanId>
   <RouteNo>1457</RouteNo>
   <RouteNo>1NEW</RouteNo>
   <RouteNo>2NEW</RouteNo>
</VanToRoute>
<VanToRoute>
   <RouteNo>1215</RouteNo>
   <RouteNo>2457</RouteNo>
   <VanId>2222</VanId>
</VanToRoute>
<VanToRoute>
   <VanId>4444</VanId>    
   <RouteNo>2456</RouteNo>
   <RouteNo>1100</RouteNo>
   <RouteNo>2465</RouteNo>
</VanToRoute>

So the key point is to have required field of VanId and Unbounded number of RouteNo. 
The main challenge is to set required fields with allowed placement of XML elements. 
What I've done so far:  
 <xs:element minOccurs="1" maxOccurs="unbounded" name="VanToRoute">
      <xs:complexType>
            <xs:sequence> 
                <xs:choice> 
                     <xs:element minOccurs="1" name="VanId" type="xs:unsignedshort" /> 
                     <xs:element minOccurs="1" name="RouteNo" type="xs:string" /> 
                </xs:choice> 
                <xs:choice>
                      <xs:element minOccurs="1" name="RouteNo" type="xs:string" /> 
                      <xs:element minOccurs="1" name="VanId" type="xs:unsignedshort" /> 
                </xs:choice> 
                <xs:sequence>
                      <xs:element minOccurs="0" maxOccurs="unbounded" name="RouteNo" type="xs:string" /> 
               </xs:sequence> 
           </xs:sequence> 
      </xs:complexType>
 </xs:element>  

But this solution is not correct for several reasons: 

It's allowed to have duplicated VanId which is not correct
It's doesn't give the flexible to put VanId at the end of my list.

My question is - if that even possible to somehow imitate logic I'd like to put into?

A:

You can do this in XSD 1.1 using xs:all with minOccurs/maxOccurs on the contained element particles.
In XSD 1.0 you can define the content model as 
sequence
  RouteNo occurs 0 to many
  VanId
  RouteNo occurs 0 to many

but this allows zero RouteNo's. You can get around this with the content model
choice
  sequence
    RouteNo occurs 1 to many
    VanId
    RouteNo occurs 0 to many
or
  sequence
    RouteNo occurs 0 to many
    VanId
    RouteNo occurs 1 to many

