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
이 질문은 다소 모호하지만 요소 그룹에 당신이 원하는 것을 나에게 보인다 , genre
(또는 $element
- BTW로 정의 된 요소 이름)에 따라 $results
에 포함되어 있습니다.이 이름은 빠릅니다 (요소는 문자열이 아닙니다). $elementName
을 더 잘 사용하십시오.
다른 관련된 사실은 당신이 $results
에있는 각 요소에 의해 topped 전체 하위 트리를 확인 - 이것은 그들이 여러 genre
(또는 무엇이든) 후손을 가질 수 있다는 것을 의미한다.
는 마무리하려면 내 마구, 당신이 원하는 날 것으로 보인다 추측 :이 $subElementName
가 $elems
의 요소 중 하나가이 아이의 이름임을 알고있는 경우
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]
}
위의 함수는 다음과 같이 더 잘 작성되어야합니다.
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 어). $elems
의 모든 요소에 장르 (또는 기타)라는 하나의 하위 (하위)가있는 것으로 알려져 있으면 (보장)이 함수의 결과는 중복되지 않습니다.
좋은 질문입니다. +1. 귀하의 질문은 잘 설명되어 있지 않지만, 제 대답에서 추측하고 유용하게 사용할 수있는 코드로 변경하려고했습니다. :) –
XQuery 설명에 대한 좋은 점은 당신이 사방에 웃는 얼굴을 가지고 있다는 것입니다 ... – LarsH