如何比较2个xsd模式文件以获得相同的功能

Bob*_*art 6 xsd

我想比较2个XSD模式A和B,以确定对模式A有效的所有实例文档对模式B也有效.我希望用它来证明即使模式A和B"不同"它们也是有效的相同.这不会触发的差异示例是Schema A使用类型,Schema B声明所有内联元素.

我发现很多人都在谈论"智能"差异类型工具,但是这些工具会声称两个文件不同,因为它们有不同的文本但结果结构是相同的.我发现了一些对XSOM的引用,但我不确定这是否有帮助.

有关如何进行的任何想法?

Pet*_*dea 3

我的方法是规范化 XML 模式的表示。

不幸的是,我还可以告诉您,与 XML 文档的规范化(例如,用于计算数字签名)不同,它并不是那么简单,甚至不是标准化的。

所以基本上,您必须将两个 XML 模式转换为“规范形式”——无论您构建或使用的工具认为该形式是什么,然后进行比较。

我的方法是为我需要的每个根元素创建一个 XML 架构集(如果有更多命名空间,则可以是多个文件),因为我发现从 PSVI 模型开始比较使用 Russian Doll 风格创作的 XSD 更容易。

然后,我使用了诸如自动匹配替换组成员以及用选项替换替换组等选项;删除“多余的”XML 模式序列、折叠单个选项选择或移动单个项目合成器的 minOccurs/maxOccurs 等。

根据您的 XSD 感知比较工具的功能,或者您决定构建,您可能还需要在 xsd:choice 或 xsd:all 等合成器下重新排列粒子;ETC。

不管怎样,我在经历了这一切之后学到的是,构建一个适用于所有“酷”XSD 功能的工具是极其困难的……我记得很喜欢的一个测试用例是处理各种 xsd:any 内容。

我确实想知道从那以后事情是否发生了变化......