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] :)
}
ce qui devrait être à la place de '? à variable '$ c'
Il est une erreur de syntaxe pour écrire:
//$results
Cette question est assez vague, mais il me semble que vous voulez regrouper les éléments , contenu dans $results
selon leur genre
(ou quel que soit le nom de l'élément défini par $element
- BTW ce nom suce (un élément n'est pas une chaîne) - mieux utiliser $elementName
).
L'autre fait est en ce qui concerne que vous vérifiez les sous-arbres complets surmontées de chacun des éléments dans $results
- cela signifie qu'ils peuvent avoir plusieurs descendants genre
(ou autre).
Finaliser ma frénésie deviner, il me semble que vous voulez ceci:
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]
}
Si on sait que $subElementName
est un nom d'un enfant que l'un des éléments de $elems
ont , le ci-dessus devrait être mieux écrit:
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]
}
les deux fonctions ci-dessus renvoient un élément par une (valeur distincte de) genre (ou whatev er). S'il est connu (garanti) que chaque élément de $elems
a exactement un enfant (descendant) nommé genre (ou autre), alors les résultats de ces fonctions ne sont pas redondants.
Bonne question, +1. Votre question n'est pas très bien spécifiée, mais dans ma réponse j'ai essayé de deviner et de changer votre code en quelque chose qui pourrait être utile. :) –
La bonne chose à propos des commentaires XQuery est que vous avez des visages souriants partout ... – LarsH