如何使用 XPath 2.0 识别数字序列中的重复值?
我有一个 XPath 表达式,它为我提供了一系列值,如下所示:
1 2 2 3 4 5 5 6 7
这很容易转换为一系列唯一值 1 2 3 4 5 6 7 使用
distinct-values()
。 但是,我想要提取的是重复值列表 = 2 5
。 我想不出一个简单的方法来做到这一点。 有人可以帮忙吗?
I have an XPath expression which provides me a sequence of values like the one below:
1 2 2 3 4 5 5 6 7
This is easy to convert to a sequence of unique values 1 2 3 4 5 6 7
using distinct-values()
. However, what I want to extract is the list of duplicate values = 2 5
. I can't think of an easy way to do this. Can anyone help?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用这个简单的 XPath 2.0 表达式:
其中
$vSeq
是我们要在其中查找重复项的值序列。有关其“工作原理”的说明,请参阅:
http://dnovaatchev.wordpress.com/2008/11/16/xpath-2-0-gems-find -a-sequence-part-2 中的所有重复值/
TLDR;
这张图可以作为一个直观的解释。
如果序列是:
则计算上述 XPath 表达式会产生:
2, 5, 7
Use this simple XPath 2.0 expression:
where
$vSeq
is the sequence of values in which we want to find the duplicates.For explanation of how this "works", see:
http://dnovatchev.wordpress.com/2008/11/16/xpath-2-0-gems-find-all-duplicate-values-in-a-sequence-part-2/
TLDR;
This picture can be a visual explanation.
If the sequence is:
Then evaluating the above XPath expression produces:
2, 5, 7
说明:
这会迭代序列中的项目,如果序列中等于该项目的项目数大于 1,则返回该项目。 然后,您必须使用
distinct-values()
从该列表中删除重复项。What about:
This iterates through the items in the sequence, and returns the item if the number of items in the sequence that are equal to that item is greater than one. You then have to use
distinct-values()
to remove the duplicates from that list.计算原始值集和不同值集之间的差异。 这是多次出现的一组数字。 请注意,如果此结果集中的数字在原始序列中出现两次以上,则它们不一定是不同的,因此如果需要,请再次转换为一组不同的值。
Calculate the difference between your original set and the set of distinct values. This is the set of numbers that occur more than once. Note that numbers in this result set are not necessarily distinct if they occur more than twice in the original sequence so convert again to a set of distinct values if this is required.
那么 xslt 呢?
它适用于您的要求吗?
What about xslt?
Is it applicable to your request?