Xml 如何使用Xquery向元素节点插入多个属性?

Xml 如何使用Xquery向元素节点插入多个属性?,xml,xquery,basex,xml-attribute,flwor,Xml,Xquery,Basex,Xml Attribute,Flwor,如何为每个编写器指定一个不同的属性,以便下面的其中一个具有多个写入属性节点 期望输出: <writers writer="n"></writers> <writers writer="a";writer="b";writer="c"></writers> <writers writer="z"></writers> 查询

如何为每个编写器指定一个不同的属性,以便下面的其中一个具有多个写入属性节点

期望输出:

<writers writer="n"></writers>
<writers writer="a";writer="b";writer="c"></writers>  
<writers writer="z"></writers>
查询:

xquery version "3.1";


declare option output:method 'html';


for $doc in db:open("bookstore")
    let $books := $doc/bookstore/book
    for $book in $books
        let $authors := $book/author
        
        return <writers writer="{data($authors)}"></writers>
xquery版本“3.1”;
声明选项输出:方法“html”;
数据库中的$doc:open(“书店”)
let$books:=$doc/书店/书籍
$books中的$book
让$authors:=$book/author
返回

有意嵌套循环。

您可以做的是

element { 'writers' } { $authors ! attribute { 'writer' || position() } { . } }

<>但是如果元素或属性名称带有索引,通常会考虑非常糟糕的XML样式,您不能为此编写DTD或模式,XPath或XQuery选择可能会变得复杂。

您的预期输出是什么?任何元素只能具有特定名称的单个属性,例如一个
writer
属性。您是否认为可以使用列表
element { 'writers' } { $authors ! attribute { 'writer' || position() } { . } }