I have an XML file in which I mock up something similar to an array, with the array name being Application, and each element being ApplicationString, each containing an "index" attribute:
<con:Config>
<con:Application con:index="0">
<con:ApplicationString>GC1</con:ApplicationString>
</con:Application>
<con:Application con:index="1">
<con:ApplicationString>GC2</con:ApplicationString>
</con:Application>
<con:Application con:index="2">
<con:ApplicationString>GC3</con:ApplicationString>
</con:Application>
<con:Application con:index="3">
<con:ApplicationString>GC5</con:ApplicationString>
</con:Application>
</con:Config>
I wish to write a XML schema that will verify that my "index" attributes are indeed valid indexes ranging from 0-N and including no duplicates or missing indexes. Is there any known way to enforce this? This is the schema I have so far.
<xs:element name="Config">
<xs:complexType>
<xs:sequence>
<xs:element ref="Application" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attribute name="index" type="xs:nonNegativeInteger">
</xs:attribute>
<xs:element name="Application">
<xs:complexType>
<xs:sequence>
<xs:element ref="ApplicationString" maxOccurs="1"/>
</xs:sequence>
<xs:attribute ref="index" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ApplicationString" type="xs:string">
</xs:element>