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