gpt4 book ai didi

xml - 为什么这个 XML 对这个 XSD 有效?

转载 作者:行者123 更新时间:2023-12-04 10:04:50 24 4
gpt4 key购买 nike

我是 XML 的新手,现在正在解析 XML 文件。在验证 XML 文件时,我们收到一个错误:

Invalid content was found starting with element 'nxce:element'. No child element is expected at this point.



XSD 使用带有 4 个元素的选择指示器。 XML 文件包含所有 4 个元素的条目,因此我们认为错误是由于错误使用选择指示符而发生的。实际的 XML 非常复杂,因此为了检查选择指标的工作情况并使用更简单的文件重现相同的错误,我开发了一个 XML 文件和一个 XSD 文件。我在验证 XML 文件时预期会出错,但验证 XML 文件时没有任何错误。

XML文件
<?xml version="1.0" encoding="UTF-8"?>
<employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="file:///EmployeeSchema.xsd">
<emp>
<empid>3</empid>
<name>Name</name>
<address>
<building>Building</building>
<pincode>Pincode</pincode>
<street>Street</street>
<area>Area</area>
</address>
</emp>
</employee>

XSD 文件
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="emp">
<xs:complexType>
<xs:sequence>
<xs:element name="empid" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="street" type="xs:string" />
<xs:element name="area" type="xs:string" />
</xs:sequence>
<xs:sequence>
<xs:element name="building" type="xs:string" />
<xs:element name="pincode" type="xs:string" />
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

choice指标指定可以出现一个或另一个子元素,我期望得到错误,如 address标签,我使用了所有 4 个元素。但是在 Eclipse 中验证 XML 没有任何错误。
您能否告诉我,为什么我在验证 XML 时没有收到错误消息?

最佳答案

您认为 XML 对 XSD 无效的期望是正确的。

您的 XML 甚至可能没有根据您预期的 XSD 进行验证,因为您的 XML 指定

xsi:schemaLocation="file:///EmployeeSchema.xsd"

它应该在哪里指定:
xsi:noNamespaceSchemaLocation="file:///EmployeeSchema.xsd"

请注意 xsi:schemaLocation采用命名空间-URL ,而不仅仅是 XSD 的 URL,用于在每个命名空间的基础上定位 XSD。由于您的 XML 不使用命名空间,请使用 xsi:noNamespaceSchemaLocation如上图所示,而不是 xsi:schemaLocation .

也可以看看
  • How to link XML to XSD using schemaLocation or noNamespaceSchemaLocation?
  • How to reference a local XML Schema file correctly?
  • 关于xml - 为什么这个 XML 对这个 XSD 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61638460/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com