gpt4 book ai didi

xml - XSD 验证需要它提示的元素

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

我在 SOAP 响应验证方面遇到了一个奇怪的问题。我已经将响应和 XSD 压缩到重现错误所需的最低限度。 XSD:

<?xml version="1.0"?>
<xs:schema targetNamespace="http://peoplesoft.com/rootResponse" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="ReturnID" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

SOAP 响应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<root xmlns="http://peoplesoft.com/rootResponse">
<ReturnID />
</root>
</soapenv:Body>
</soapenv:Envelope>

如果我在 soapUI 中验证原始响应,它会在元素 root@http://peoplesoft.com/中显示 Expected element 'ReturnID' 而不是 'ReturnID@http://peoplesoft.com/rootResponse' rootResponse.

当我在 Visual Studio 2012 中加载上述文件时(是的,我确实告诉 Visual Studio 使用这个 XSD 文件来验证命名空间),我得到了这个:命名空间 'http:/中的元素 'root'/peoplesoft.com/rootResponse' 在命名空间“http://peoplesoft.com/rootResponse”中具有无效的子元素“ReturnID”。预期的可能元素列表:“ReturnID”。

在这两种情况下,它都在提示 ReturnID 元素,但它说它需要 ReturnID 元素?

最佳答案

除非您正在处理非常不寻常的实例文档(实际上您不是),否则您的 xs:schema 元素应该带有属性 elementFormDefault="qualified"。如果没有这个,本地元素声明(例如 ReturnID 的声明)将引用无命名空间中的元素,而不是目标命名空间中的元素。

关于xml - XSD 验证需要它提示的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392447/

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