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

标签 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:string" />
        </xsd:sequence>
    </xsd:complexType>    
    <xsd:element name="Header" type="xsd:Hdr" />
</xsd:schema>

我正在使用http://www.utilities-online.info/xsdvalidation/用于验证

我收到此错误

Not valid.Error - Line 7, 49: org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 49; src-resolve.4.2: Error resolving component 'xsd:Hdr'. It was detected that 'xsd:Hdr' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'null'. If this is the incorrect namespace, perhaps the prefix of 'xsd:Hdr' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'null'. Error - Line 7, 49: org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 49; src-resolve: Cannot resolve the name 'xsd:Hdr' to a(n) 'type definition' component.

我无法弄清楚我的 XSD 出了什么问题。有人可以指导一下吗?

最佳答案

改变

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

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

如果定义了目标命名空间,您将使用其前缀来引用 Hdr,但您永远不会使用 http://www.w3.org/2001/XMLSchema 命名空间来进行此类引用。

关于XSD 验证错误 - 同一定义中引用的复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27876771/

相关文章:

xml - 是否可以仅在一个 XSD 文件中展平 XML 模式包?

java - 如何使用xslt将父节点 namespace 复制到子元素?

c++ - Libxml2 xmlSchemaParse 失败

xml - 错误 : S4s-elt-character: Non-whitespace Characters Are Not Allowed In Schema Elements Other Than 'xs:appinfo' And 'xs:documentation'

xml - 如何从 XML 文件引用本地 XSD?

java - 使用 schemaLocation 引用位于 jar 中的 XSD?

jaxb - 无法将名称 '<sometype>'解析为一个(n) 'type definition'组件

iphone - 在 xcode 4.2 中找不到“libxml/xmlversion.h”文件?

c# - .NET 中的 XML 验证和命名空间

java - 如何在 Web 应用程序中加载多个 XSD?