首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用XQuery flwor重新排列节点

如何使用XQuery flwor重新排列节点
EN

Stack Overflow用户
提问于 2017-10-26 21:18:52
回答 1查看 45关注 0票数 1

我希望在下面给出的输入xml中重新排列顺序标记,这样节点就会遵循以下顺序

BUY_ONLY,BOGO,GET_ONLY

这是我的示例Orders.xml,订单标签必须根据它们里面的OrderType标签重新排列。

代码语言:javascript
复制
     (: XQuery Module :)
              declare namespace functx = "http://www.functx.com";
                for $order in doc("order.xml")/Orders/Order
                let $buyOnly := $order[OrderType/text()="BUY_ONLY"]
                let $getOnly := $order[OrderType/text()="GET_ONLY"]
                let $bogo := $order[OrderType/text()="BOGO"]
                return 
                 <Orders>
                 { 
                if(exists($buyOnly) and exists($getOnly) and exists($bogo)) then
                   (
                    $buyOnly,
                    $getOnly,
                    $bogo
                   )
                else ()    
               }
              </Orders>

我可以在不使用FLWOR表达式的情况下重新排列订单节点吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-27 01:38:58

下面是在没有任何FLWOR语句的情况下可以生成的方法:

代码语言:javascript
复制
<Orders>
{ 
 (
   doc("order.xml")/Orders/Order[OrderType/text()="BUY_ONLY"],
   doc("order.xml")/Orders/Order[OrderType/text()="GET_ONLY"],
   doc("order.xml")/Orders/Order[OrderType/text()="BOGO"]
 )   
}
</Orders>

具有更简化FLWOR的版本:

代码语言:javascript
复制
<Orders>
{ 
  let $order := doc("order.xml")/Orders/Order
  return
  (
    $order[OrderType/text()="BUY_ONLY"],
    $order[OrderType/text()="GET_ONLY"],
    $order[OrderType/text()="BOGO"]
  )   
}
</Orders>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46963990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档