我希望得到所有山脉的不同国家,但有时候山峰会出现在多个国家/地区,如下所示:在这样的字符串中包含多个国家/地区代码:
<mountain id="mount-Kangchendzonga" country="NEP IND"></mountain>
我可以使用
获取与国家/地区相关联的所有不同字符串let $mts := doc("mondial.xml")/mondial//mountain
let $countries := distinct-values(data($mts/@country))
但这不太正确,因为如果我有一个国家=“NEP IND”的山和另一个国家/地区=“NEP”,那么这些将被认为是不同的。
let $countries := distinct-values(concat(' ', data($mts/@country)))
let $countries := distinct-values(tokenize(data($mts/@country), "\s+"))
有没有办法我可以先用空格分割一个国家的字符串,然后得到这些的不同值?我已尝试在连接和标记化数据上使用distinct-values,如上所示,但两者都会导致编译器出错。
答案 0 :(得分:1)
这是合并make build
和tokenize()
以获取不同国家/地区名称的一种可能方式:
distinct-values()
<强> xpathtester.com demo
强>
或者在XQuery 3.1中,如下面的评论所示:
let $all-countries :=
for $c in $mts/@country
return tokenize($c, "\s+")
let $distinct-countries := distinct-values($all-countries)