【发布时间】:2015-02-24 08:03:48
【问题描述】:
如果序列 = [a a b c c c a d d e e e f g h h]
然后输出 = [1 2 1 1 2 3 1 1 2 1 2 3 1 1 1 2]
已尝试使用递归,但没有运气...请帮助..感谢期待
注意:使用 XQuery 实现 1.0
我的一个失败的实现看起来像:
declare function local:test($sequence,$count){
for $counter in (1 to count($sequence))
let $maxIndex := count($sequence)
return
if (matches(subsequence($sequence,1,$maxIndex)[$counter],subsequence($sequence,1,$maxIndex)[$counter + +1])) then let $count := $count + 1 return $count[last()]
else let $count := 1 return $count[last()]
};
【问题讨论】:
-
@tod : 加倍努力,但实际看起来有所不同,因为原始要求有所不同,但目标相同。
-
似乎 $counter 是一个序列,因此它在匹配条件下返回一个序列,因此此实现失败。
-
这个序列是否来自您的输入 XML?如果是,请出示此文件。
-
@MathiasMüller 这个序列作为 local:test(data($head1/*:Row/X),1) 传递给函数
-
@MathiasMüller $head 是一个外部变量,看起来像
a1 b1 c1 额外
a2 b2 c2 额外
a2 b2 c3 额外
a2 b2 c4 额外
a3 b3 c3 额外
标签: xpath functional-programming integration xquery osb