使用 XQuery/XPath 计算多个 XML 文件中的不同值

问题描述 投票:0回答:1

我有几个 XML 文件,它们都具有相同的结构。我需要找到每个元素中出现的所有不同值并计算每个不同的出现次数。

最好的方法是什么?

我正在使用 Oxygen、XPath/XQuery Builder (Saxon-HE XQuery 9.9.1.7)

到目前为止我所拥有的是:

let $collection := collection(file:///C:/MY_FOLDER?select=*.xml;recurse=yes)
for $val in distinct-values($collection//Element1/Element2)
for $doc in $collection
for $c in count(index-of($doc//Element1/Element2, $val))
order by document-url($doc)
where $c>0
return ("
", tokenize(document-url($doc),'/')last()], "______________",$val, "-", $c)

这种方法可行……但是需要方式太长的时间。我假设有更好的方法吗?

xml xpath count xquery distinct-values
1个回答
0
投票

测试使用分组是否可以提供更好的性能,例如

let $collection := collection('file:///C:/MY_FOLDER?select=*.xml;recurse=yes')
for $el2 in $collection//Element1/Element2
group by $val := $el2, $uri := document-uri(root($el2))
order by $uri
return (tokenize($uri, '/')[last()] || ': ' || $val || '; ' || count($el2))
© www.soinside.com 2019 - 2024. All rights reserved.