je dois écrire une fonction qui prend une séquence d'éléments « tag » de la forme:fonction XQuery pour convertir des éléments de balises aux attributs
<tag type="markupType" value="topic"/>
<tag type="concept" value="death"/>
...
et les transforme en attributs de la forme
data-markupType="topic"
data-concept="death"
jusqu'à présent, j'ont la fonction suivante:
declare function local:tagsToAttrs($tags as element()*) as attribute()*
{
for $tag in $tags
let $type := $tag/string(@type)
let $value := $tag/string(@value)
return
attribute { concat('data-', $type) } { $value }
};
Cela fonctionne très bien jusqu'à présent, mais je dois traiter wi le cas où j'ai deux ou plusieurs étiquettes avec le même "type". Dans ce cas, je ne peux pas avoir deux attributs avec le même nom, donc je veux avoir un seul attribut avec des valeurs séparées par des espaces ...
par exemple.
<tag type="concept" value="death"/>
<tag type="concept" value="life"/>
<tag type="concept" value="birth"/>
deviendrait
data-concept="death life birth"
Je suis coincé là-dessus depuis un certain temps maintenant - donc si quelqu'un a une belle façon de modifier ma fonction pour ce faire, je serais bien obligé.
Pls note Je ne veux pas utiliser XSLT pour cela. Je veux utiliser XQuery.
Cordialement
Swami