我遇到了一个非常简单的问题,它与我在帖子下面看到的给定XML Schema文件有关。这是我必须在一周内完成的考试,以及关于架构格式正确的问题。
错误已经标记为黄色,我得到了关于命名空间的提示,但最后我不知道如何解决问题。我的第一个想法是类型定义Type="Book"
需要一个像Type="urn:Book"
这样的前缀,但我根本不确定。
我感谢你提供的任何建议,可以帮助我解决在这种情况下缺乏知识的问题。
答案 0 :(得分:1)
这是因为您使用Book
属性指定urn:schemaS
命名空间中的targetNamespace
。要实现此目的,您需要为urn:schemaS
定义一个名称对话前缀,并在type="nsPrefix:Book"
中对其进行限定。
答案 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">
然后你不需要做任何其他事情。