I am trying to deserialise the following XML:
<queries>
<query name='abc'>
<statement>SELECT * FROM table1</statement>
<label row='1' name='id'/>
<label row='2' name='name'/>
</query>
<query name='another'>
<statement>SELECT * FROM table2</statement>
<label row='1' name='myTabID'/>
<label row='2' name='myTabName'/>
</query>
</queries>
To validate the schema I am using:
<xs:complexType name="Queries">
<xs:sequence>
<xs:element name="query" type="Query"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Query">
<xs:sequence>
<xs:element name="statement" minOccurs="1" maxOccurs="1"/>
<xs:element name="label">
<xs:complexType>
<xs:attribute name="row" type="xs:int" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
Validation is failing with the message:
Not valid. Error - Line 7, 48: org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 48; cvc-complex-type.2.4.d: Invalid content was found starting with element 'label'. No child element is expected at this point. Error - Line 9, 31: org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 31; cvc-complex-type.2.4.d: Invalid content was found starting with element 'query'. No child element is expected at this point.
What am I missing please? Do I need to specify a different tag than sequence? I want to enforce at least one query existing.
Thank you in advanced :)