我正在尝试编写我的第一个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>
我正在使用http://www.utilities-online.info/xsdvalidation/进行验证
我收到此错误
无效。错误 - 第7,49行:org.xml.sax.SAXParseException; lineNumber:7; columnNumber:49; src-resolve.4.2:解析组件'xsd:Hdr'时出错。 检测到'xsd:Hdr'位于命名空间“http://www.w3.org/2001/XMLSchema”中,但此命名空间中的组件无法从架构文档“null”引用。 如果这是不正确的命名空间,则可能需要更改'xsd:Hdr'的前缀。 如果这是正确的命名空间,则应将适当的“import”标记添加到“null”。 错误 - 第7,49行:org.xml.sax.SAXParseException; lineNumber:7; columnNumber:49; src-resolve:无法将名称'xsd:Hdr'解析为(n)'类型定义'组件。
我无法弄清楚我的XSD出了什么问题。有人可以指导。
答案 0 :(得分:2)
更改
<xsd:element name="Header" type="xsd:Hdr" />
到
<xsd:element name="Header" type="Hdr" />
如果定义了目标命名空间,您可以使用其前缀来引用Hdr
,但是您永远不会使用http://www.w3.org/2001/XMLSchema
命名空间来进行此类引用。