当我尝试针对XSD验证XML时出现以下错误:
[错误] try.xsd:20:46:s4s-elt-must-match.1:'sequence'的内容 必须匹配(注释?,(元素|组|选择|序列| 任何)*)。从:complexType开始发现问题。
我的XML如下:
<?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>
架构如下:
<?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>
我做错了什么?
答案 0 :(得分:0)
您的XSD格式不正确。尽管有缩进,SelectorList
的声明是错误的:
<xsi:element name="SelectorList" minOccurs="0"/>
<xsi:complexType>
应该是
<xsi:element name="SelectorList" minOccurs="0">
<xsi:complexType>
string
也应该被允许重复(maxOccurs="unbounded"
)。
另请注意:您不应将xsi
用于http://www.w3.org/2001/XMLSchema
。按照惯例,请改用xs
或xsd
; xsi
通常用于http://www.w3.org/2001/XMLSchema-instance
。
以下是您更正的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>
它将成功验证您的XML。