要找到两个xml文件之间的差异,是否可以使用XSLT,如果是,你可以共享一个小例子xslt ??请注意,xslt应该能够获取任何两个xml文件,它不应该采用任何特定的树结构
答案 0 :(得分:1)
在开始使用XSLT或任何其他语言编写代码之前,您需要编写一个规范,指明程序要执行的操作。这是一个复杂的要求,无法在三行中定义。至少有一家公司--DioXML--以此为生。
第一个挑战是定义两个文件相同的含义。 (您可以采用fn:deep-equal作为起点的规范)。一旦你完成了这个,更难的问题是定义当文件不同时你想要产生什么输出。举一个非常简单的例子,你想要的文件输出是什么:
(a)中
<a><b/><c/></a>
(b)中
<a><c/><b/></a>
答案 1 :(得分:0)
从XSLT 2.0开始,如果需要,可以使用deep-equal
https://www.w3.org/TR/xquery-operators/#func-deep-equal函数来比较一般的两个序列或两个文档节点。如果两个文件被认为是链接规范中定义的相等,则deep-equal(doc('file1.xml'), doc('file2.xml'))
返回true。
至于找到“差异”,你甚至没有解释你正在寻找什么样的结果。商业版中的Saxon 9具有saxon:deep-equal
,根据http://saxonica.com/html/documentation/functions/saxon/deep-equal.html允许您设置?
标志和错误监听器
解释不匹配的原因。如果结果不相等,则发出警告 解释原因的消息将被发送到ErrorListener。 (在 一般情况下,将发送一系列警告消息 最低级别的差异并向上移动树)
但这不是标准化的东西。