xquery - 使用 xquery 按本地名称对树进行排序
问题描述
I want the below XML
<a>
<z>
<e>
<b>
<c>
Sorted as such
<a>
<c>
<z>
<b>
<e>
我使用本地名称作为 order by。我相信我需要递归调用函数。我相信我需要使用元素构造函数重新创建元素。
我现在不关心属性。片段:
let $child-elements := $elements/*
return
if ($child-elements) then
myfunctx:sort($child-elements, $current-element)
else
element { xs:Qname ($local-name)} , {$current-element, $result) ???
解决方案
declare function local:sort($container){
element {$container/name()} {
for $child in $container/*
order by $child/local-name()
return local:sort($child)
}
};
let $doc := <doc>
<a/>
<z>
<e/>
<b/>
</z>
<c/>
</doc>
return local:sort($doc)
推荐阅读
- interface-builder - 将 objectIsForced 与绑定到共享用户默认控制器的控件一起使用的最佳实践是什么?
- javascript - Socket.io - 限制每个 IP 地址的连接
- assembly - TASM 打印数字数组
- java - 以编程方式更改所有 XML 属性 Android Studio
- javascript - 动态打开模态时如何停止轮播?
- javascript - 从作为道具接收的组件访问父方法
- javascript - 如何使用javascript格式化html中的输入
- django - Django数组字段搜索?
- kotlin - 如何手动更新 kotlin 流程
- javascript - javascript 检查字符串中的正则表达式