我正在尝试使用xsd验证一个非常简单的xml,但是由于某种原因,我收到了此错误。
如果有人能解释我的原因,我将不胜感激。

XML文件

<?xml version="1.0" encoding="utf-8"?>
<MyElement>A</MyElement>

XSD文件
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.example.org/Test"
        xmlns:tns="http://www.example.org/Test"
        elementFormDefault="qualified">

    <simpleType name="MyType">
        <restriction base="string"></restriction>
    </simpleType>

    <element name="MyElement" type="tns:MyType"></element>
</schema>

最佳答案

您的架构用于其目标 namespace http://www.example.org/Test,因此它在该目标 namespace MyElement中定义了一个名称为http://www.example.org/Test的元素。但是,您的实例文档在中有一个名称为MyElement的元素,没有 namespace 。这就是为什么验证解析器会告诉您找不到该元素的声明的原因,没有为没有 namespace 的元素提供架构。

您或者需要更改架构以完全不使用目标 namespace ,或者需要更改实例以使用例如<MyElement xmlns="http://www.example.org/Test">A</MyElement>

关于xsd - cvc-elt.1:找不到元素 'MyElement'的声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13310637/

10-10 20:29