结构合并XSD的工具?

时间:2012-03-13 22:34:03

标签: xml xsd

我目前正在尝试派生大量XML文件的结构。我使用XSD.exe从每个XSD中生成了XSD,并且正如预期的那样,它们在不同程度上彼此不同。

我正在寻找一种工具,可以将这些模式合并为一个适用于所有这些XML文件的“superschema”。

有什么建议吗?

感谢。

2 个答案:

答案 0 :(得分:0)

另一种方法可能是将所有XML文件合并为1.有一些差异/合并工具本身支持XML合并。虽然如果您有n个XML文件,则必须在最差的n-1合并中执行,因为这些工具通常一次只能合并2-3个文件。

这些工具的一些例子:

获得“master”XML后,可以使用XSD.exe生成“主”模式。

答案 1 :(得分:0)

我不知道合并的效果如何,因为很容易指出与之相关的几个问题;例如,假设两个(或更多)不同的XML中的相同XPath(到一个节点);合并应该如何工作:将两者保持为兄弟节点;用另一个替换一个;从文本节点(如果适用)制作列表?在我看来,你最终会处理与合并本身相关的许多问题,而不是让XML自己说话。

帖子here on SO非常简单,但它显示了合并方法无法处理的一种情况:如果所需的结果是具有xsd:choice。合并一个XML中的内容将不可避免地在输出XSD中创建一个序列。

我相信,除非你让推理引擎处理多个XML实例,否则它很可能无法找到一个好的启动模型,最终可以手动调整。

我找到了一个解决方案,解决了你曾经遇到过的问题,在运行过多的问题后,快速解决了使用XML样本作为模型的XSD问题。试试this tool; 工具选项卡中的 XML 组中有 XSD from XMLs 命令。 (我是偏爱的,因为我写了它)。我只是试着反对我上面提到的帖子,并且毫不奇怪,它提出了相同的结构。生成的XSD使用俄罗斯娃娃创作风格,因为核心引擎基于XmlSchemaInference - 换句话说,不要责怪我:)..

我正在开发一个改进的版本,所以如果您在尝试之后感兴趣,请使用支持联系信息给我留言,我们会从那里接受。