我想比较2个XSD模式A和B,以确定对模式A有效的所有实例文档对模式B也有效.我希望用它来证明即使模式A和B"不同"它们也是有效的相同.这不会触发的差异示例是Schema A使用类型,Schema B声明所有内联元素.
我发现很多人都在谈论"智能"差异类型工具,但是这些工具会声称两个文件不同,因为它们有不同的文本但结果结构是相同的.我发现了一些对XSOM的引用,但我不确定这是否有帮助.
有关如何进行的任何想法?
我的方法是规范化 XML 模式的表示。
不幸的是,我还可以告诉您,与 XML 文档的规范化(例如,用于计算数字签名)不同,它并不是那么简单,甚至不是标准化的。
所以基本上,您必须将两个 XML 模式转换为“规范形式”——无论您构建或使用的工具认为该形式是什么,然后进行比较。
我的方法是为我需要的每个根元素创建一个 XML 架构集(如果有更多命名空间,则可以是多个文件),因为我发现从 PSVI 模型开始比较使用 Russian Doll 风格创作的 XSD 更容易。
然后,我使用了诸如自动匹配替换组成员以及用选项替换替换组等选项;删除“多余的”XML 模式序列、折叠单个选项选择或移动单个项目合成器的 minOccurs/maxOccurs 等。
根据您的 XSD 感知比较工具的功能,或者您决定构建,您可能还需要在 xsd:choice 或 xsd:all 等合成器下重新排列粒子;ETC。
不管怎样,我在经历了这一切之后学到的是,构建一个适用于所有“酷”XSD 功能的工具是极其困难的……我记得很喜欢的一个测试用例是处理各种 xsd:any 内容。
我确实想知道从那以后事情是否发生了变化......
| 归档时间: |
|
| 查看次数: |
8487 次 |
| 最近记录: |