-1

我将 xml 和 xsd 放在空闲位置。http://xixishuile1.kilu.de/ 并使用http://www.freeformatter.com/xml-validator-xsd.html验证 xml,它给我响应 CATALOG 失败。谁能帮助我。

4

1 回答 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 回答