我正在尝试使用给定的架构验证我的XML,但不断收到此错误。
S4s-elt-invalid-content.1:'coreTextType'的内容无效。 元素'元素'无效,错位或太频繁发生。
这是我的XML
<?xml version="1.0" encoding="UTF-8"?>
<authors>
<coretext>
<author id="VH">
<name>Victor Hugo</name>
<nationality>French</nationality>
<rating>4.00</rating>
</author>
<author period="classical">
<name>Sophocles</name>
<nationality>Greek</nationality>
<rating>15.00</rating>
</author>
<author>
<name>Nikolai Gogol</name>
<nationality>Russian</nationality>
<rating>11.00</rating>
</author>
</coretext>
<author>
<name>Leo Tolstoy</name>
<nationality>Russian</nationality>
<rating>12.00</rating>
</author>
<author id ="AR">
<name>Alexander Pushkin</name>
<nationality>Russian</nationality>
<rating>13.88</rating>
</author>
<author period="classical">
<name>Plato</name>
<nationality>Greek</nationality>
<rating>20.15</rating>
</author>
</authors>
这是我的架构
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="authors">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="coretext" type="coreTextType" />
<xs:element name="author" type="authorType" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="coreTextType">
<xs:element name="author" type="authorType" maxOccurs="unbounded"/>
</xs:complexType>
<xs:complexType name="authorType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="nationality" type="xs:string" />
<xs:element name="rating" type="xs:integer" />
<xs:attribute name="id" type="xsd:string" />
<xs:attribute name="binding" type="xsd:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
请有人指出我正确的方向。?
答案 0 :(得分:1)
您的XML很好,但您的XSD有很多错误:
xs:complexType
作为孩子不能直接xs:element
;包裹
它首先出现在xs:sequence
中。 (这是与您当前的错误消息相关的错误。)xs:attribute
无法显示xs:sequence
;将它们移到外面但仍在xs:complexType
内。xsd:
未定义;你的意思是xs:
。rating
的类型应为xs:decimal
,而不是xs:integer
@binding
应为@period
以匹配您的XML。这是您的XSD将修复所有错误:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="authors">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="coretext" type="coreTextType" />
<xs:element name="author" type="authorType" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="coreTextType">
<xs:sequence>
<xs:element name="author" type="authorType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="authorType">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="nationality" type="xs:string" />
<xs:element name="rating" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="period" type="xs:string" />
</xs:complexType>
</xs:schema>
现在它将成功验证您的XML。