0

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>
  • 1
    XSD 1.0: No. XSD 1.1: Yes. Can you use XSD 1.1? If not, just drop the index attribute; it's calculable without explicit representation anyway. Even if you can use XSD 1.1, I'd consider letting index be implicit. – kjhughes Jul 14 '15 at 15:22
  • Could you elaborate a little on this? – Nick Butta Jul 14 '15 at 19:39

0 Answers0