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 文件中的命名空间声明,将其放入根元素中,如下所示: 。再加上将文档声明添加到您的 xml 文件的 věry 顶部。 你能给我修改吗? 真这个或类似的东西: 你也可以把这个 放到你的 xml 文件的顶部。 看看这个资源,这样你就知道你做错了什么 www.w3schools.com/xml/xml_namespaces.asp 【参考方案1】:

我在 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:元素“配置”的命名空间必须来自模式命名空间的主要内容,如果未能解决你的问题,请参考以下文章

xml的schema的错误

XSD 包含导入的 xsd 时的 Delphi XE2 XML 数据绑定向导错误

XSD 到 jaxb 注释类给出了无法解析 xml 元素错误

xml中怎么引用当前目录的xsd

XML XSD 验证中的全局声明错误

2.1 版的 faces-config.xml xsd 错误