XSD命名空间向后兼容

时间:2010-07-22 19:29:07

标签: xsd namespaces compatibility

我们正在努力解决一些命名空间兼容性问题。目前,我们将一些外部数据存储在我们的数据库中作为XML文件,其命名空间为 xmlns =“http://xyz.com/prodresponse/v2”,最近供应商已将名称空间更改为 xmlns = “http://xyz.com/prodresponse/v4”即可。

问题是我们需要无缝地处理旧的和新的命名空间数据以用于我们的内部应用程序目的。我确实在momemnt只看到一个选项:

  1. 运行SQL脚本以将现有xml数据从版本v2转换为v4。
  2. 还有其他选择吗?

    非常感谢提前

2 个答案:

答案 0 :(得分:2)

命名空间更改的原因可能是因为格式已更改。因此,命名空间对您来说是非常有价值的信息,因为它准确地告诉您期望和期望的元素(当与相应的XSD架构结合时)。如果将命名空间更新为新版本,则根据模式,旧XML数据可能不正确。

所以不,我认为您不应该更改现有的XML数据。保留它,并确保您的解析器知道如何处理这两个命名空间。

答案 1 :(得分:0)

我不明白为什么要运行SQL脚本来转换XML文件...... XML转换(XSLT)在这方面做得很好!

FunkyPeople写了一篇关于在Java中处理版本化XML文件的有趣文章。他们提出了几种方法,并为这一方法做好准备:

  • 应用连续的XSLT样式表将输入XML转换为最后的架构版本。为什么要多次转换?因为如果您只应用一个转换,则必须在更新的架构版本进入时进行维护。并且您必须维护所有转换(v1到vN,v2到vN,v3)到vN,...)。如果逐个应用增量转换(v1到v2,然后v2到v3,再到v3到v4),则每次发布新模式时,只需添加一个转换。
  • 仅对最后一个架构版本的数据执行处理。
  • 如果数据已更改,请应用反向转换以返回文件的原始版本。

您可以找到论文herehere