【发布时间】:2015-01-21 13:37:25
【问题描述】:
作为一种计算 XML 文档之间相似度(通常是几个,但在这种情况下是两个)的方法,基于标签的相似度计算有几个应用。现在,如何使用 XSLT 实现这样的方法。
我是这样想的: 提取标签并为两个文档列出它们。接下来,检查两个列表之间的完全/部分匹配。
在这方面,XSLT 是否提供任何用于比较字符串(标签)的函数/操作。 欢迎任何关于概念和实施的想法。
简单示例:
对于这些 XML 文档(当然是其中的一部分),
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
还有这个,
<books>
<authorname>Ralls, Kim</authorname>
<booktitle>Midnight Rain</booktitle>
<genre>Fantasy</genre>
<cost>5.95</cost>
<date>2000-12-16</date>
<abstract>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</abstract>
</books>
两个文档都有六个元素(标签),其中流派出现在两者中,标题类似于书名,作者带有作者名,发布日期带有日期。所以,这两者是相似的。 (1个完全匹配,3个部分匹配)
【问题讨论】:
-
您使用的是什么 XSLT 处理器(及其版本)?和yes, it's possible。具有完全不同层次结构和属性的 XML 文档呢?您期待什么样的 XML 文档?
-
一个文档中的“books”是否与另一个文档中的“book”不相似?为什么“书”或“书”没有出现在您的计数中?您是否正在使用要查找或比较的单词列表?如果一个文档的元素名为“author”,而另一个文档的元素名为“authority”,会发生什么?
-
我不认为 Xslt 确实为您正在寻找的那种模糊匹配提供任何有用的机制。我想你必须使用“真正的”差异化工具/lib。
-
... 并补充马丁已经指出的案例:为什么第一个文档中的“书”与第二个文档中的“书名”不匹配?
-
@MathiasMüller,如果它很重要,我会使用 Altova XML Spy 2011 和 xsltransform.net。提供的示例是一个快速而简单的示例;因此我们可能无法控制文档的详细信息,因此它们可能完全不同。
标签: xml xslt pattern-matching string-matching similarity