XML XSD 错误:org.xml.sax.SAXParseException:s4s-elt-schema-ns:元素“配置”的命名空间必须来自模式命名空间
Posted
技术标签:
【中文标题】XML XSD 错误:org.xml.sax.SAXParseException:s4s-elt-schema-ns:元素“配置”的命名空间必须来自模式命名空间【英文标题】:XML XSD Error : org.xml.sax.SAXParseException: s4s-elt-schema-ns: The namespace of element 'Config' must be from the schema namespace 【发布时间】:2014-02-15 04:40:38 【问题描述】:我有一个非常简单的 XML & XSD,它在解析过程中抛出以下错误。
org.xml.sax.SAXParseException: s4s-elt-schema-ns: 的命名空间 元素“配置”必须来自模式命名空间, 'http://www.w3.org/2001/XMLSchema'。
XML 在这里:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Config>
<Test Script="final.sh" />
</Config>
XSD 在这里:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Config">
<xs:complexType>
<xs:all>
<xs:element name="Test" minOccurs="0">
<xs:complexType>
<xs:attribute name="Script" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
【问题讨论】:
使用氧气等软件来帮助您发现错误。我认为您错过了 xml 文件中的命名空间声明,将其放入根元素中,如下所示:我在 Oxygen 中试用过,文件有效。
这是我使用的两个文件:
xsd 文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='schema.xsd'>
<Test Script="final.sh" />
</Config>
xml 文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Config">
<xs:complexType>
<xs:all>
<xs:element name="Test" minOccurs="0">
<xs:complexType>
<xs:attribute name="Script" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
确保您将 xsd 架构正确附加到 xml 文件,然后就可以了。
【讨论】:
【参考方案2】:提供的实例文档对提供的架构有效,所以这里发生了一些奇怪的事情。
错误消息似乎表明您实际验证的架构说
targetNamespace="http://www.w3.org/2001/XMLSchema"
这会是一件相当奇怪的事情。
恐怕您在其他问题的回答中得到了很多非常糟糕的建议。
【讨论】:
感谢您的回答。那么我应该删除 targetNamespace 吗? 如果您的架构中有一个 targetNamespace(您向我们展示的架构中没有)那么它不应该存在,因为文档实例不在命名空间中。 如果您删除了 targetNamespace,那么您向我们展示的代码不是失败的代码。如果您的代码与您向我们展示的代码不同,您不能指望我们帮助您调试代码。 我正在尝试解决问题,为什么会这样? 我不知道为什么会这样。在您提供有关问题的可靠信息之前,我无法帮助您解决问题。【参考方案3】:缺少根命名空间,将其添加到其中
【讨论】:
这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。 @Robert:你能帮我解答吗?以上是关于XML XSD 错误:org.xml.sax.SAXParseException:s4s-elt-schema-ns:元素“配置”的命名空间必须来自模式命名空间的主要内容,如果未能解决你的问题,请参考以下文章
XSD 包含导入的 xsd 时的 Delphi XE2 XML 数据绑定向导错误