无法理解这个 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”。
我是 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”。