验证 XML 和相应的 XSD 文件时出错
Getting errors while validating an XML and corresponding XSD file
我是 XML 的新手,我遇到了一个错误,
S4s-elt-invalid-content.1: The Content Of '#AnonType_queue' Is Invalid. Element 'Sequence' Is Invalid, Misplaced, Or Occurs Too Often
在尝试验证我的 xml 和 xsd 文件时,我不确定为什么..
这是 XML 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="queue.xsl"?>
<queue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="queue.xsd">
<!DOCTYPE queue SYSTEM "queue.dtd">
<queue>
<link>
<name>Alfa Romeo Giulia</name>
<uri>https://en.wikipedia.org/wiki/Alfa_Romeo_Giulia_(952)</uri>
<prodYear>2015</prodYear>
<tophp>533</tophp>
<availablecolors>
<color1>Alfa Black</color1>
<color2>Alfa White</color2>
<color3>Alfa Rosso</color3>
</availablecolors>
</link>
<link>
<name>Audi A5</name>
<uri>https://en.wikipedia.org/wiki/Audi_A5</uri>
<prodYear>2007</prodYear>
<tophp>444</tophp>
<availablecolors>
<color1>Tango red metallic</color1>
<color2>Gotland Green Metallic</color2>
<color3>Ibis White</color3>
</availablecolors>
</link>
<!--
<link>
<name></name>
<uri></uri>
<prodYear></prodYear>
<tophp></tophp>
<availablecolors>
<color1></color1>
<color2></color2>
<color3></color3>
</availablecolors>
</link>
-->
</queue>
这里是 XSD 文件:
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="queue">
<xs:complexType>
<xs:Sequence>
<xs:element name="link" />
<xs:complexType>
<xs:element name="name" type="xs:string" />
<xs:element name="uri" type="xs:string" />
<xs:element name="prodYear" type="xs:string" />
<xs:element name="availablecolors" />
<xs:complexType>
<xs:element name="color1" type="xs:string" />
<xs:element name="color2" type="xs:string" />
<xs:element name="color3" type="xs:string" />
</xs:complexType>
</xs:complexType>
</xs:Sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如有任何帮助,我们将不胜感激。
您的 XSD 和 XML 的问题和更正如下。
更正 XSD
你的 XSD 有很多问题:
- XML和XSD区分大小写,所以把
xs:Sequence
改成xs:sequence
。
<xs:element name="link"/>
在包含预期的后续 xs:complexType
定义之前关闭元素。 availablecolors
. 再次发生这种情况
- 您在
xs:complexType
下缺少 xs:sequence
个元素。
- 无法容纳多个
link
元素。
- 缺少
tophp
的声明。
<?xml version="1.0"?>
<xs:schema elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="queue">
<xs:complexType>
<xs:sequence>
<xs:element name="link" maxOccurs="unbounded" >
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="uri" type="xs:string" />
<xs:element name="prodYear" type="xs:string" />
<xs:element name="tophp" type="xs:string" />
<xs:element name="availablecolors" >
<xs:complexType>
<xs:sequence>
<xs:element name="color1" type="xs:string" />
<xs:element name="color2" type="xs:string" />
<xs:element name="color3" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
更正 XML
您的 XML 有很多问题,甚至无法 well-formed:
- doctype
<!DOCTYPE queue SYSTEM "queue.dtd">
不能出现在文档中间。
- 有一个额外的开始
queue
标签。
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="queue.xsl"?>
<queue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="queue.xsd">
<link>
<name>Alfa Romeo Giulia</name>
<uri>https://en.wikipedia.org/wiki/Alfa_Romeo_Giulia_(952)</uri>
<prodYear>2015</prodYear>
<tophp>533</tophp>
<availablecolors>
<color1>Alfa Black</color1>
<color2>Alfa White</color2>
<color3>Alfa Rosso</color3>
</availablecolors>
</link>
<link>
<name>Audi A5</name>
<uri>https://en.wikipedia.org/wiki/Audi_A5</uri>
<prodYear>2007</prodYear>
<tophp>444</tophp>
<availablecolors>
<color1>Tango red metallic</color1>
<color2>Gotland Green Metallic</color2>
<color3>Ibis White</color3>
</availablecolors>
</link>
<!--
<link>
<name></name>
<uri></uri>
<prodYear></prodYear>
<tophp></tophp>
<availablecolors>
<color1></color1>
<color2></color2>
<color3></color3>
</availablecolors>
</link>
-->
</queue>
我是 XML 的新手,我遇到了一个错误,
S4s-elt-invalid-content.1: The Content Of '#AnonType_queue' Is Invalid. Element 'Sequence' Is Invalid, Misplaced, Or Occurs Too Often
在尝试验证我的 xml 和 xsd 文件时,我不确定为什么..
这是 XML 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="queue.xsl"?>
<queue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="queue.xsd">
<!DOCTYPE queue SYSTEM "queue.dtd">
<queue>
<link>
<name>Alfa Romeo Giulia</name>
<uri>https://en.wikipedia.org/wiki/Alfa_Romeo_Giulia_(952)</uri>
<prodYear>2015</prodYear>
<tophp>533</tophp>
<availablecolors>
<color1>Alfa Black</color1>
<color2>Alfa White</color2>
<color3>Alfa Rosso</color3>
</availablecolors>
</link>
<link>
<name>Audi A5</name>
<uri>https://en.wikipedia.org/wiki/Audi_A5</uri>
<prodYear>2007</prodYear>
<tophp>444</tophp>
<availablecolors>
<color1>Tango red metallic</color1>
<color2>Gotland Green Metallic</color2>
<color3>Ibis White</color3>
</availablecolors>
</link>
<!--
<link>
<name></name>
<uri></uri>
<prodYear></prodYear>
<tophp></tophp>
<availablecolors>
<color1></color1>
<color2></color2>
<color3></color3>
</availablecolors>
</link>
-->
</queue>
这里是 XSD 文件:
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="queue">
<xs:complexType>
<xs:Sequence>
<xs:element name="link" />
<xs:complexType>
<xs:element name="name" type="xs:string" />
<xs:element name="uri" type="xs:string" />
<xs:element name="prodYear" type="xs:string" />
<xs:element name="availablecolors" />
<xs:complexType>
<xs:element name="color1" type="xs:string" />
<xs:element name="color2" type="xs:string" />
<xs:element name="color3" type="xs:string" />
</xs:complexType>
</xs:complexType>
</xs:Sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如有任何帮助,我们将不胜感激。
您的 XSD 和 XML 的问题和更正如下。
更正 XSD
你的 XSD 有很多问题:
- XML和XSD区分大小写,所以把
xs:Sequence
改成xs:sequence
。 <xs:element name="link"/>
在包含预期的后续xs:complexType
定义之前关闭元素。availablecolors
. 再次发生这种情况
- 您在
xs:complexType
下缺少xs:sequence
个元素。 - 无法容纳多个
link
元素。 - 缺少
tophp
的声明。
<?xml version="1.0"?>
<xs:schema elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="queue">
<xs:complexType>
<xs:sequence>
<xs:element name="link" maxOccurs="unbounded" >
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="uri" type="xs:string" />
<xs:element name="prodYear" type="xs:string" />
<xs:element name="tophp" type="xs:string" />
<xs:element name="availablecolors" >
<xs:complexType>
<xs:sequence>
<xs:element name="color1" type="xs:string" />
<xs:element name="color2" type="xs:string" />
<xs:element name="color3" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
更正 XML
您的 XML 有很多问题,甚至无法 well-formed:
- doctype
<!DOCTYPE queue SYSTEM "queue.dtd">
不能出现在文档中间。 - 有一个额外的开始
queue
标签。
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="queue.xsl"?>
<queue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="queue.xsd">
<link>
<name>Alfa Romeo Giulia</name>
<uri>https://en.wikipedia.org/wiki/Alfa_Romeo_Giulia_(952)</uri>
<prodYear>2015</prodYear>
<tophp>533</tophp>
<availablecolors>
<color1>Alfa Black</color1>
<color2>Alfa White</color2>
<color3>Alfa Rosso</color3>
</availablecolors>
</link>
<link>
<name>Audi A5</name>
<uri>https://en.wikipedia.org/wiki/Audi_A5</uri>
<prodYear>2007</prodYear>
<tophp>444</tophp>
<availablecolors>
<color1>Tango red metallic</color1>
<color2>Gotland Green Metallic</color2>
<color3>Ibis White</color3>
</availablecolors>
</link>
<!--
<link>
<name></name>
<uri></uri>
<prodYear></prodYear>
<tophp></tophp>
<availablecolors>
<color1></color1>
<color2></color2>
<color3></color3>
</availablecolors>
</link>
-->
</queue>