function abc ($results as element()*, $element as xs:string)
{
for $g in distinct-values($results//*[name() = $element]) (: $results//genre :)
let $c := //$results[? = $g] (: //$results[genre=$g] :)
}
要到位的什么?“在 变量“$ C”
这是一个语法错误写:
//$results
这个问题是相当含糊,但你要在我看来,以组元素,包含在$results
根据他们的genre
(或任何元素名称定义$element
- 顺便说一句,这个名字很烂(一个元素不是字符串) - 更好地使用$elementName
)。
其他有关的事实是您检查每个元素在$results
荣登完整的子树 - 这意味着他们可能有多个genre
(或其他)的后裔。
要完成我的猜测热潮,在我看来,你想这样的:
function grouping-Keys ($elems as element()*, $subElementName as xs:string) as element()*
{
for $g in distinct-values($elems//*[name() = $subElementName ])
return
$elems[//*[name() = $subElementName ] = $g][1]
}
如果已知$subElementName
是孩子在$elems
任何元素有一个名字,那么上述应更好地写为:
function grouping-Keys ($elems as element()*, $childElementName as xs:string) as element()*
{
for $g in distinct-values($elems/*[name() = $childElementName ])
return
$elems[/*[name() = $subElementName ] = $g][1]
}
上述两个函数返回每(的不同的值)的一个元件类型(或whatev ER)。如果已知(保证)$elems
中的每个元素都恰好具有一个子类(后代)命名流派(或其他),则这些函数的结果不是多余的。
好问题,+1。你的问题没有被很好的说明,但是在我的回答中,我试图猜测并将你的代码变成可能有用的东西。 :) – 2010-12-16 03:28:31
关于XQuery评论的好处是,你到处都有笑脸...... – LarsH 2010-12-16 16:48:22