比较数百个 XML 文档的架构相似性



我正在做一个项目,我们有几百个旧的xml文档。我们认为这数百个 xml 文档可能使用了大约 60 种不同的模式,但不知道这些模式是什么。

是否有任何工具可以完成此类工作?如果不是,以编程方式比较它们的最佳方法是什么?

我会从做一些临时查询开始。假设您有一个目录中的所有文档,并且您有一个 XSLT 或查询处理器(如 Saxon),可以使用 collection() 函数读取目录中的所有文档,您可以从

<xsl:for-each-group select="collection('dir?select=*.xml')" group-by="node-name(*)">
  <e name="name(*)" count="count(current-group())"/>
</xsl:for-each-group>

以查看按顶级元素名称对它们进行分组是否有用。

然后,

您可以为每个顶级元素名称选择一个代表性文档,并使用工具为该文档生成架构,然后运行类似的查询以根据该架构验证该组中的所有文档(为此,您将需要一个架构感知的 XSLT 或 XQuery 处理器)。

大多数 IDE(如 oXygen)都包含一个从实例生成架构的工具。但我不知道可以通过编程方式调用的工具。

在此之后,这有点取决于您的发现...

最新更新