gpt4 book ai didi

针对 XSD : The element xxx has invalid child element yyy in namespace zzz 的 XML 验证

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:37 24 4
gpt4 key购买 nike

XSD:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:DataBodyTemperature="Docobo.DataBodyTemperature" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="tDataBodyTemperature">
<xs:sequence>
<xs:element name="Answer" type="xs:double" />
<xs:element minOccurs="0" maxOccurs="1" name="AmbientTemperature" type="xs:double" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="tDataItem">
<xs:choice>
<xs:element name="DataBodyTemperature" type="tDataBodyTemperature" />
</xs:choice>
</xs:complexType>
<xs:element name="DataItem">
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="tDataItem">
<xs:attribute fixed="1" name="SchemaVersion" type="xs:integer" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>

XML:

<DataItem>
<DataBodyTemperature xmlns:DataBodyTemperature="Docobo.DataBodyTemperature">
<DataBodyTemperature:Answer>37.8</DataBodyTemperature:Answer>
<DataBodyTemperature:AmbientTemperature>28.5</DataBodyTemperature:AmbientTemperature>
</DataBodyTemperature >
</DataItem>

我收到验证错误:Xml 架构验证失败:元素“DataBodyTemperature”在命名空间“Docobo.DataBodyTemperature”中具有无效的子元素“Answer”。预期的可能元素列表:'Answer'

最佳答案

您的问题是您的架构未指定目标命名空间 - 因此所有类型都与 null 命名空间相关联。

你的错误是因为模式指定 DataBodyTemperature 元素(在 null 命名空间中)应该只包含 AnswerAmbientTemperature元素(它们都在 null 命名空间中声明),但是在您的文档中,这些元素实际上位于 Docobo.DataBodyTemperature 命名空间中,本质上使它们成为完全不同的元素。

符合您给定模式的 xml 示例是:

<DataItem SchemaVersion="1">
<DataBodyTemperature>
<Answer>1</Answer>
<AmbientTemperature>1</AmbientTemperature>
</DataBodyTemperature>
</DataItem>

请注意,没有 namespace 声明 - 所有元素都在默认 namespace 中。我怀疑您真正想要的是修改您的 xsd,以便它指定一个目标命名空间。

<xs:schema targetNamespace="Docobo.DataBodyTemperature" xmlns:dbt="Docobo.DataBodyTemperature" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="tDataBodyTemperature">
<xs:sequence>
<xs:element name="Answer" type="xs:double" />
<xs:element minOccurs="0" maxOccurs="1" name="AmbientTemperature" type="xs:double" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="tDataItem">
<xs:choice>
<xs:element name="DataBodyTemperature" type="dbt:tDataBodyTemperature" />
</xs:choice>
</xs:complexType>
<xs:element name="DataItem">
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="dbt:tDataItem">
<xs:attribute fixed="1" name="SchemaVersion" type="xs:integer" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>

请注意,您现在还需要限定 tDataItemtDataBodyTemperature 类型,因为它们不再在 null 命名空间中声明。

另请注意,在您的相同 XML 中,DataItemDataBodyTemperature 元素不在“Docobo.DataBodyTemperature”命名空间中,因此现在不会针对以上模式。

您可能还会发现获取架构的示例 xml 文档很有帮助 - 您可以在 Visual Studio 2008 或更高版本中使用 XML 架构资源管理器执行此操作,请参阅 How to generate sample XML documents from their DTD or XSD? .

关于针对 XSD : The element xxx has invalid child element yyy in namespace zzz 的 XML 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7497952/

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