无法理解这个 xquery 函数

Unable to understand this xquery function

我是 xquery 的新手,无法理解它的含义:

 declare function my:get-unique-lines($object)
 {
   let $lines := distinct-values (
      for $line in $object[contains(@name," ")]/@name
      return (string-join(tokenize($line," ")[position()< last()]," "))
   )
   return $lines
 };

首先,变量$lines显然是多余的。我们还剩下

distinct-values (
      for $line in $object[contains(@name," ")]/@name
      return (string-join(tokenize($line," ")[position()< last()]," "))

string-join(tokenize($line," ")[position()< last()] 所做的是将 $line 拆分为 space 边界处的标记,取出除最后一个标记之外的所有标记,然后将它们重新连接在一起,并以 space 作为分隔符。

我们对所有选定的@name 值执行此操作,然后删除重复项。

所以如果 $object 包含像

这样的元素列表
<e name="John Smith"/>
<e name="John Jones"/>
<e name="John Henry Jones"/>
<e name="John Henry Miller"/>

结果将是两个字符串“John”和“John Henry”。