XSD验证错误-在同一定义中引用了复杂类型

XSD验证错误-在同一定义中引用了复杂类型,xsd,xsd-validation,Xsd,Xsd Validation,我正在尝试写我的第一个XSD。XSD如下所示,不进行验证 <xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="Hdr"> <xsd:sequence> <xsd:element name="ID" type

我正在尝试写我的第一个XSD。XSD如下所示,不进行验证

<xsd:schema elementFormDefault="qualified" 
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">   
    <xsd:complexType name="Hdr">
        <xsd:sequence>
            <xsd:element name="ID" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>    
    <xsd:element name="Header" type="xsd:Hdr" />
</xsd:schema>

我正在使用它进行验证

我得到这个错误

无效。错误-第7行,49:org.xml.sax.SAXParseException;行号:7;栏目号:49;src resolve.4.2:解析组件“xsd:Hdr”时出错。 检测到“xsd:Hdr”位于命名空间“”中,但此命名空间中的组件不可从架构文档“null”引用。 如果名称空间不正确,则可能需要更改“xsd:Hdr”的前缀。 如果这是正确的名称空间,则应向“null”添加适当的“import”标记。 错误-第7行,49:org.xml.sax.SAXParseException;行号:7;栏目号:49;src resolve:无法将名称“xsd:Hdr”解析为(n)“类型定义”组件

我无法找出XSD中的错误。请有人给我引路。

换衣服

  <xsd:element name="Header" type="xsd:Hdr" />


如果定义了目标名称空间,您将使用其前缀来引用
Hdr
,但决不会使用
http://www.w3.org/2001/XMLSchema
namespace来进行这样的引用

  <xsd:element name="Header" type="Hdr" />