Xquery 将树转换为元素序列

Xquery 将树转换为元素序列,xquery,Xquery,我有类似的东西 <a> <b> <c>1</c> <d>2<e>3</e></d> </b> </a> <a/> <b/> <c>1</c> <d>2<e>3</e></d> 重新构造为完整元素(包含and),但如果删除元素构造函数

我有类似的东西

<a>
    <b>
        <c>1</c>
        <d>2<e>3</e></d>
    </b>
</a>
<a/>
<b/>
<c>1</c>
<d>2<e>3</e></d>

重新构造为完整元素(包含and),但如果删除元素构造函数,它将根本无法获得输出。

我没有完全获得示例输出中的第四行,我只是猜测您想要的实际上是:

<a/>
<b/>
<c>1</c>
<d>2</d>
<e>3</e>
此版本甚至更短,但我认为它需要XQuery 3.0,因为早期版本不允许在步骤表达式中使用元素构造函数:

//*/element { local-name(.) } { text() }

谢谢你,詹斯,给我指路。事实上,我确实想要我写的第四行。我应该写出来的,而且可以登录。我得到了我需要的输出:
for$element in($input,$input/*)[local name(.)=('a','b','c','d')]返回if($element/text())然后返回element{local name($element)}{$element/node()}else element{local name($element)}{$element/text()}
for $element in //*
return element { local-name($element) } { $element/text() }
//*/element { local-name(.) } { text() }