我正在做一个项目,我们有几百个旧的xml文档。我们认为这些数百个xml文档可能使用了大约60种不同的模式,但我们不知道这些模式是什么。
是否存在执行此类工作的任何工具?如果不是以编程方式比较它们的最佳方式是什么?
答案 0 :(得分:2)
我首先要做一些临时查询。假设您拥有目录中的所有文档,并且您拥有可以使用collection()函数读取目录中所有文档的XSLT或查询处理器(如Saxon),则可以从
开始<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都包含一个从实例生成模式的工具。但我不知道可以通过编程方式调用的工具。)
在此之后,它取决于你发现的东西......