我正在做一个项目,我们需要用XML格式保存数据。问题是,随着时间的推移,我们期望数据的格式/模式发生变化。我们想要做的是生成脚本,以便在不同的模式版本之间迁移数据。我们将产品分发给成千上万的客户,因此我们需要能够在客户站点上运行/应用这些脚本(因此我们不能仅仅通过手工进行转换)。我认为我们正在寻找的是某种XML数据迁移工具。在我看来,理想的工具可以:
因此,我想我正在寻找一种XML差异和补丁工具,它也可以应用转换函数。我正在寻找的一个工具是阿尔托瓦氏MapForce。我相信这里的其他人必须处理XML数据格式的迁移。你是怎么处理的?
编辑:有一点需要澄清。我计划做的"diff“是关于模式或.xsd文件的。将对遵循给定架构的特定数据集进行实际更改。这些数据集将是.xml文件。因此,这是模式的“差异”,以帮助了解需要对数据集进行哪些更改,以便将数据集从一个方案迁移到另一个方案。
发布于 2009-08-04 16:52:22
“执行两个模式的"XML”来标识添加/删除/更改的节点。“。
XSD是文本,所以这是微不足道的。
但是,如果您对XSD进行了戏剧性的结构更改,那么自动化的差异将基本上是无用的。
如果您对XSD做了一些小的、美观的更改,这可能会有所帮助。
“允许我们指定转换函数……”
那不是很好吗。遗憾的是,出现一些琐碎更改(“新元素C,其中C= A+B,A+B是旧元素”)的概率几乎为零。为什么要做那种微不足道的改变呢?
不,当你“.把我们的产品分发给成千上万的顾客”时,你不会做一些琐碎的、表面上的改变。您保存这些更改,使它们成为真正的史诗,并“创造重大的价值”。
不,自动模式迁移的可能性几乎为零。
相反,为可移植性而设计。
这太严重了,无法信任“自动化”工具。这需要真正的人的大脑,真正专注于此,就好像他们的工作依赖于它。
发布于 2010-05-30 18:08:15
最后,我编写了一个工具来完成这个任务,并将结果作为一个SourceForge项目发布。
什么:这个工具帮助创建脚本,将XML数据从XML的一个版本迁移到同一模式的更高版本。该工具通过差异XSD文件和释放XSLT2.0来自动迁移XML数据来创建这些脚本。这对于简单的数据更改很好,并且可以作为更复杂的数据更改的“启动”代码使用。
Where: https://sourceforge.net/projects/xsdevolver/
背景:我工作的公司销售一个收缩包装的应用程序,在该应用程序中,我们按照指定的XSD模式以XML格式保存工作簿。随着时间的推移,我们期望此模式的格式会发生变化。我们希望有一种方法来帮助我们区分模式版本,因为它们会随着时间的推移而发展,并生成初始XSLT来将数据从旧版本的模式迁移到新版本的模式。
使用:
XMLSchemaEvolver SchemaVersion1.xsdSchemaVersion2.xsd
输出:
它是如何工作的?
其基本思想是:
1)对两个xml模式(xsd)文件进行区分。
2)每项更改都被归类为插入、删除、移动或重命名操作。
3)对于这些操作中的每一个,发出简单的XSLT来执行所需的数据更改。
4)这些数据更改操作是根据Jesper 链接文本建议的一组标准XSLT操作进行建模的。我们的代码发出的转换的完整列表可以在文档文件夹中找到XSLT Transformations.txt。
发布于 2009-08-04 17:12:19
正如@S.Lott所说,自动化转换的能力是不太可能的。然而,XSLT是正式定义如何将XML从一种格式转换为另一种格式的极好工具。它不能自动生成(据我所知),但它很值得这样做。
https://stackoverflow.com/questions/1230601
复制