XSD指定目标命名空间但XML不能 - 我可以避免编辑吗?

时间:2017-01-10 16:30:23

标签: xml xsd

第三方接口提供的XML没有<xml>标记且没有名称空间引用。关联的XSD文件在xmlns上指定了targetNamespaceschema,这显然不在XML中。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="cheese"
    targetNamespace="cheese"    
    elementFormDefault="qualified">
<xsd:element name = "Something>
...
</xsd:element>
</xsd:schema>

<Something>
 ...
</Something>

我无法更改XML,但我可以破解我的XSD本地副本。是最好的&#39;选项只是为了删除问题属性还是有更简洁的解决方案?

1 个答案:

答案 0 :(得分:1)

修改标准模式的本地副本的能力确实是部分XSD设计的激励因素之一。

但是如果我理解正确的话,你就会消耗由XML提供的XML,这个XML为XML提供XSD架构,但是发布不符合架构的XML,可能只是因为提供了一个微不足道的错误。 XML中的默认名称空间声明。在其他条件相同的情况下,我认为从长远来看,最好的解决方案是告知XML这一差异的来源。如果他们足够关心文档来提供模式,那么组织中可能还有人也看到了验证点。当然,没有任何保证,但你要做的就是让世界变得更美好。

与此同时:是的,模式的本地修改副本,或者使用预处理器将XML包装在表单的虚拟包装元素中

<dummy xmlns="cheese">
  ... existing XML goes here, minus XML declaration if any ...
</dummy>