XML 无法验证,命名空间出现问题



我正要拔头发,试图弄清楚为什么这不会得到验证。我一直收到错误

cvc-elt.1:找不到元素"ret"的声明。[13]

在我收到schemaLocation的错误之前,它告诉我URI需要相同的长度或其他什么,但我通过使schemaLocation、target和targetNamespace相同来解决这个问题。

但它仍然找不到我的"ret"元素声明,我也找不到原因。现在我不太擅长名称空间,我对它们和其他东西都不太了解。

如果能提供任何帮助来解决这个错误,我们将不胜感激。

哦,我的.xsd文件名为"ret",我的第一个元素也是如此。我不认为这会引起问题,但不会让任何人感到困惑。这只是我的要求。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:My.Namespace"
xmlns:target="urn:My.Namespace ret.xsd"
elementFormDefault="qualified"
>
<xs:element name="ret">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="feed" />
<xs:element ref="doc-copyright" />
</xs:sequence>
<xs:attribute fixed="1.0" name="version" type="xs:string" />
<xs:attribute name="date" type="xs:string" use="required" />
</xs:complexType>
</xs:element>

这是我.xsd文件的一部分

<?xml version="1.0" encoding="UTF-8"?>
<ret 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.w3schools.com"
xsi:schemaLocation="urn:My.Namespace ret.xsd">
</ret>

这是xml文件中无法验证的部分。如果我需要发布更多,我可以。虽然很长。我想知道这个错误是否是因为My.Namespace不是有效的命名空间?我就是不明白。

在您的模式中,您说过当您有@targetNamespace="urn:My.Namespace"时,您的元素将绑定到urn:My.Namespace

但是您的实例XML文档有一个绑定到http://www.w3schools.com命名空间的"ret"元素。

为了使其模式有效,必须将其绑定到urn:Ny.Namespace命名空间。

更改为:

<ret 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:My.Namespace"
xsi:schemaLocation="urn:My.Namespace ret.xsd">
</ret>

然后处理其他验证问题(无提要、文档版权、@version或@date(

最新更新