比较2个不同的xsd

时间:2011-01-13 19:51:42

标签: xsd comparison

我有2个不同的xsd用于相同的请求。一个是最新版本,而另一个是旧版本。我想比较2 xsd's。

我使用Liquid XML工具生成XML,但生成的xml告诉我们2 xsds完全不同,我相信这是不可能的。要么我的方法错了,要么xsds真的不同。

你们可以建议我比较2 xsds的最佳做法吗?

2 个答案:

答案 0 :(得分:1)

QTAssistant具有XSD感知比较功能,它是XML Schema Refactoring(XSR)模块的一部分;由于具有XSD感知能力,有时会让那些习惯于基于文件的比较的人感到惊讶,比较文本或XML感知。

QTAssistant实际上并不比较XSD文件;相反,它比较“已编译”的XSD文件集。因此,如果有人决定简单地将XSD拆分为两个文件,使用< xsd:include />链接在一起,然后比较这两个集合,结果将返回为“相同”。一个很好的例子是ACORD标准,它改变了发布XSD的方式。下面是一个示例,显示了在QTAssistant中按组设置的2.21版本和2.26版本...

ACORD Collections

...以及2.21版本中的文件之间的关系(使用< xsd:include /> s)。

File relationships in ACORD 2.21

另一个例子:如果在版本之间删除了minOccurs或maxOccurs =“1”属性,则不会标记此差异,因为无论如何这些1都是默认值...

其他有趣的功能是差异报告提供的粒度......

Diff report

除了在每个XSD组件级别提供结果外,它还分为两部分:一个结果, 状态 ,以确定架构组件是否为直接实质性地改变(在LastRaceDate之下被“替换”,在LastRaceDate和LastDatePartialDate之间进行选择)......

Directly modified XSD component

...以及另一个 扩展状态 ,它考虑基于依赖关系的影响分析(在属性下方从强制更改为可选)。

Dependency modified

可以导出报告,以便与其他工具进一步集成。

答案 1 :(得分:0)

Oxygen有一个XML比较工具。

或者,你可以漂亮地打印两个XSD并使用diff或TortoiseMerge或类似的东西来比较它们。