不知道为什么XML Schema格式不正确?

时间:2012-03-28 14:33:41

标签: xml xsd xsd-validation

我遇到了一个非常简单的问题,它与我在帖子下面看到的给定XML Schema文件有关。这是我必须在一周内完成的考试,以及关于架构格式正确的问题。

错误已经标记为黄色,我得到了关于命名空间的提示,但最后我不知道如何解决问题。我的第一个想法是类型定义Type="Book"需要一个像Type="urn:Book"这样的前缀,但我根本不确定。

我感谢你提供的任何建议,可以帮助我解决在这种情况下缺乏知识的问题。

enter image description here

2 个答案:

答案 0 :(得分:1)

这是因为您使用Book属性指定urn:schemaS命名空间中的targetNamespace。要实现此目的,您需要为urn:schemaS定义一个名称对话前缀,并在type="nsPrefix:Book"中对其进行限定。

Read this tutorial

答案 1 :(得分:0)

当您声明一个名为complexType的名称是合格的名称时,它与目标名称空间相关联 - 因此您声明的是Book名称空间中的类型urn:schema5

当您引用类型时,您必须指定其限定名称,并且架构不默认为目标命名空间,它使用常规XML命名空间声明。因为你没有,所以你试图在默认命名空间('')中使用一个不存在的类型Book

您必须添加名称空间声明:

<xs:schema  
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:schema5="urn:schema5"
  targetNamespace="urn:schema5"
  elementFormDefault="qualified">

然后使用它

    <xs:element name="book" type="schema5:Book" maxOccurs="3"/>

或(我的首选)声明您将目标命名空间作为默认名称:

<xs:schema  
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns="urn:schema5"
  targetNamespace="urn:schema5"
  elementFormDefault="qualified">

然后你不需要做任何其他事情。