我正要拔头发,试图弄清楚为什么这不会得到验证。我一直收到错误
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(