我需要编写一个函数,该函数采用以下形式的“标记”元素序列:
<tag type="markupType" value="topic"/>
<tag type="concept" value="death"/>
...
并将它们转换为表单的属性
data-markupType="topic"
data-concept="death"
到目前为止,我有以下功能:
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 }
};
到目前为止这工作正常,但我需要处理我有两个或多个标签具有相同“类型”的情况。在这种情况下,我不能有两个同名的属性,所以我想要一个带有空格分隔值的属性......
例如
<tag type="concept" value="death"/>
<tag type="concept" value="life"/>
<tag type="concept" value="birth"/>
会成为
data-concept="death life birth"
我已经坚持了一段时间了 - 所以如果有人有一个很好的方法来修改我的函数来做到这一点,我将非常感激。
请注意,我不想为此使用 XSLT。我想使用 XQuery。
亲切的问候
斯瓦米