我将 xml 和 xsd 放在空闲位置。http://xixishuile1.kilu.de/ 并使用http://www.freeformatter.com/xml-validator-xsd.html验证 xml,它给我响应 CATALOG 失败。谁能帮助我。
问问题
87 次
1 回答
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,如下所示:
<目录 xmlns="http://www.xixishuile1.kilu.de/">
现在为您定义了 CATALOG 元素。它类似于CD(它很复杂,内容模型是有序的);由于您需要多个 CD 元素,因此有一个 maxOccurs 属性(粒子出现属性)显示
unbounded
.
因此,以上内容告诉您,到目前为止,您需要了解如何在 XSD 中定位命名空间,以及如何定义复杂的内容模型。
另外,请查看如何询问有关提出好问题的帮助...
于 2013-04-26T11:21:02.993 回答