Reputation: 21
I am getting the following error when I try to validate my XML against my XSD:
[Error] try.xsd:20:46: s4s-elt-must-match.1: The content of 'sequence' must match (annotation?, (element | group | choice | sequence | any)*). A problem was found starting at: complexType.
My XML is as follows:
<?xml version="1.0"?>
<ArrayOfAccountParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AccountParameterInfo>
<Name>System Name</Name>
<Identifier>1</Identifier>
<Type>8</Type>
<Length>20</Length>
<Order>1</Order>
<MinValue />
<MaxValue />
<Default />
<CodePage>1252</CodePage>
<Section>-1</Section>
<Tab>-1</Tab>
<Row>-1</Row>
<Column>-1</Column>
</AccountParameterInfo>
<AccountParameterInfo>
<Name>Siren Arming Indication</Name>
<Identifier>2</Identifier>
<Type>7</Type>
<Length>1</Length>
<Order>1</Order>
<MinValue />
<MaxValue />
<Default />
<CodePage>1252</CodePage>
<SelectorList>
<string>None</string>
<string>AllCases</string>
<string>KeyAndKeyfob</string>
</SelectorList>
<Section>-1</Section>
<Tab>-1</Tab>
<Row>-1</Row>
<Column>-1</Column>
</AccountParameterInfo>
</ArrayOfAccountParameterInfo>
The schema is as follows:
<?xml version="1.0"?>
<xsi:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified" elementFormDefault="unqualified">
<xsi:element name="ArrayOfAccountParameterInfo">
<xsi:complexType>
<xsi:sequence>
<xsi:element name="AccountParameterInfo" maxOccurs="unbounded">
<xsi:complexType>
<xsi:sequence>
<xsi:element name="Name" type="xsi:string"/>
<xsi:element name="Identifier" type="xsi:integer"/>
<xsi:element name="Type" type="xsi:integer"/>
<xsi:element name="Length" type="xsi:integer"/>
<xsi:element name="Order" type="xsi:integer"/>
<xsi:element name="MinValue" type="xsi:string"/>
<xsi:element name="MaxValue" type="xsi:string"/>
<xsi:element name="Default" type="xsi:string"/>
<xsi:element name="CodePage" type="xsi:string"/>
<xsi:element name="SelectorList" minOccurs="0"/>
<xsi:complexType>
<xsi:sequence>
<xsi:element name="string" type="xsi:string"/>
</xsi:sequence>
</xsi:complexType>
<xsi:element name="Section" type="xsi:integer"/>
<xsi:element name="Tab" type="xsi:integer"/>
<xsi:element name="Row" type="xsi:integer"/>
<xsi:element name="Column" type="xsi:integer"/>
</xsi:sequence>
</xsi:complexType>
</xsi:element>
</xsi:sequence>
</xsi:complexType>
</xsi:element>
</xsi:schema>
What am I doing wrong?
Upvotes: 1
Views: 9170
Reputation: 111620
Your XSD is malformed. The declaration for SelectorList
, despite indentation, is wrong:
<xsi:element name="SelectorList" minOccurs="0"/>
<xsi:complexType>
should be
<xsi:element name="SelectorList" minOccurs="0">
<xsi:complexType>
string
should also be allowed to repeat (maxOccurs="unbounded"
).
Note also: You shouldn't use xsi
for http://www.w3.org/2001/XMLSchema
. By convention, use xs
or xsd
instead; xsi
is typically used for http://www.w3.org/2001/XMLSchema-instance
.
Here is your corrected XSD:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified" elementFormDefault="unqualified">
<xs:element name="ArrayOfAccountParameterInfo">
<xs:complexType>
<xs:sequence>
<xs:element name="AccountParameterInfo" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Identifier" type="xs:integer"/>
<xs:element name="Type" type="xs:integer"/>
<xs:element name="Length" type="xs:integer"/>
<xs:element name="Order" type="xs:integer"/>
<xs:element name="MinValue" type="xs:string"/>
<xs:element name="MaxValue" type="xs:string"/>
<xs:element name="Default" type="xs:string"/>
<xs:element name="CodePage" type="xs:string"/>
<xs:element name="SelectorList" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="string" maxOccurs="unbounded"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Section" type="xs:integer"/>
<xs:element name="Tab" type="xs:integer"/>
<xs:element name="Row" type="xs:integer"/>
<xs:element name="Column" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
It will validate your XML successfully.
Upvotes: 1