【发布时间】:2010-12-01 20:37:03
【问题描述】:
XML 有时会让我感到困惑,但我正试图弄清楚这一点。供应商告诉我的没有意义,但是 XML 和我相处不来 :)
我有一些 XML 发送到供应商的 Web 服务,这给了我随机故障:
<root>
<Request>
<Driver id="1" VehId="1">...</Driver>
<Driver id="2" VehId="1">...</Driver>
<Driver id="3" VehId="2">...</Driver>
<Vehicle id="1">...</Vehicle>
<Vehicle id="2">...</Vehicle>
<Driver id="4" VehId="2">...</Driver>
</Request>
</root>
没有可比较的 XSLT 或 XSD 来查看我的 XML 是否有效。
供应商声明 XML 无效,因为驱动程序 #4 位于错误区域。 Driver 的 XPath 应该是 root/Request/Driver,Vehicle 是 root/Request/Vehicle。
XML 解析器强制元素顺序是否很常见,尤其是在没有 XSD 可与 XML 进行比较的情况下?供应商的支持回复我的速度很慢,所以我想知道什么是好的常见做法。
跟进
我向我们的客户代表抱怨了很多关于无法对此进行测试(并且听起来他们只是想获得支持资金),事实证明开发人员有 XSD,但支持没有。所以我一直在与错误的组*facepalm*交谈
我得到了 XSD,它确实强制执行特定的元素顺序。
现在就他们自己的示例 XML 与他们抗争不遵循架构,但至少现在我有一些东西可以测试。
【问题讨论】:
-
供应商应提供 XSD 或支持文档,详细说明软件对 XML 格式所做的假设,包括元素顺序。否则你必须猜测。读取 XML 文档的软件不应强制执行命令(如果可能),但这种情况并不少见。 XSD is 文档明确定义了交换格式规则。另请参阅kettle.pentaho.com。