我把xml和xsd放在免费位置。 http://xixishuile1.kilu.de/ 并使用http://www.freeformatter.com/xml-validator-xsd.html来验证xml,它给我响应CATALOG失败。 谁可以帮助我。
答案 0 :(得分:1)
首先,欢迎来到SO。由于您正在学习XML / XSD,我建议您下载并使用一些专门的XML / XSD编辑器。我所知道的所有内容都提供免费评估,因此应该很容易上手。
这样的工具可以帮助您根据XML生成XSD,这可以让您开始了解解决问题可能需要的内容:将您发布的XSD与您拥有的XSD进行比较是一个很好的学习方法,因为它告诉你你错过了什么,最终缩小你的搜索范围:首先要学习什么。
所以这是我用XML生成的XSD:
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="CATALOG">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="CD">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TITLE" type="xsd:string" />
<xsd:element name="ARTIST" type="xsd:string" />
<xsd:element name="COUNTRY" type="xsd:string" />
<xsd:element name="COMPANY" type="xsd:string" />
<xsd:element name="PRICE" type="xsd:decimal" />
<xsd:element name="YEAR" type="xsd:unsignedShort" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
一目了然:
您的XSD有一个targetNamespace,而生成的那个没有;要修复它,您要么删除XSD中的targetNamespace,要么将默认命名空间添加到根XML中,如下所示:
&lt; CATALOG xmlns =“http://www.xixishuile1.kilu.de/”&gt;
现在为您定义了CATALOG元素。它类似于CD(它很复杂,内容模型是有序的);因为你想要多个CD元素,所以有一个显示unbounded
的maxOccurs属性(粒子出现属性)。
因此,上面告诉您,到目前为止,您需要了解如何定位XSD中的命名空间,以及如何定义复杂的内容模型。
另外,请查看How To Ask寻求一个好问题的帮助......