在验证器站点上上传时,会显示以下错误: 1) s4s-elt-must-match.1: 'pizza' 的内容必须匹配 (annotation?, (simpleType | complexType)?, (unique | key | keyref)*))。发现问题始于:complexType。 2)cvc-complex-type.2.4.a:发现以元素“name”开头的无效内容。预计将提供“{pizza}”之一。
代码如下: XML:
<?xml version="1.0"?>
<pizzamenu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="schemasnippet.xsd">
<pizza id = "0011"/>
<name> Tal Fenek </name>
<price> 9.95 </price>
<description>The application of Web protocols to Biology</description>
</pizzamenu>
架构:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="pizzamenu">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="pizza">
<xs:complexType>
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
<xs:complexType>
<xs:sequence>
<xs:element name="name">
</xs:element> <!-- name -->
<xs:element name="price">
</xs:element> <!-- price -->
<xs:element name="description">
</xs:element> <!-- description -->
</xs:sequence>
</xs:complexType>
</xs:element> <!-- pizza -->
</xs:sequence>
</xs:complexType>
</xs:element> <!-- pizzamenu -->
</xs:schema>
请帮忙
最佳答案
您的架构和 xml 似乎都有问题。
您的架构似乎试图指定名称、价格和描述标签必须包含在披萨标签内。在您的 xml 中,它们不是。
很可能 xml 应该更像是:
<?xml version="1.0"?>
<pizzamenu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="schemasnippet.xsd">
<pizza id = "0011">
<name> Tal Fenek </name>
<price> 9.95 </price>
<description>The application of Web protocols to Biology</description>
</pizza>
</pizzamenu>
但是您的架构正在使用两个 <xs:complexType>
标签来定义单一类型,这是行不通的。单<xs:complexType>
可用于定义 <pizza>
的属性和内容标签,只要属性放在最后即可。这意味着您的架构应如下所示:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="pizzamenu">
<xs:complexType >
<xs:sequence maxOccurs="unbounded">
<xs:element name="pizza">
<xs:complexType>
<xs:sequence>
<xs:element name="name">
</xs:element> <!-- name -->
<xs:element name="price">
</xs:element> <!-- price -->
<xs:element name="description">
</xs:element> <!-- description -->
</xs:sequence>
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
</xs:element> <!-- pizza -->
</xs:sequence>
</xs:complexType>
</xs:element> <!-- pizzamenu -->
</xs:schema>
关于XML 和 XML 模式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16780703/