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

如何使用XQuery flwor重新排列节点,xquery,xquery-3.0,Xquery,Xquery 3.0,我想重新排列下面给出的输入xml中的Order标记,以便节点遵循此顺序 只买,只买,只买 这是我的示例Orders.xml订单标记必须根据其中的OrderType标记重新排列 (: XQuery Module :) declare namespace functx = "http://www.functx.com"; for $order in doc("order.xml")/Orders/Order

我想重新排列下面给出的输入xml中的Order标记,以便节点遵循此顺序

只买,只买,只买

这是我的示例Orders.xml订单标记必须根据其中的OrderType标记重新排列

     (: 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>
(:XQuery模块:)
声明命名空间functx=”http://www.functx.com";
对于doc中的$order(“order.xml”)/Orders/order
let$buyOnly:=$order[OrderType/text()=“仅购买”]
让$getOnly:=$order[OrderType/text()=“仅获取”]
让$bogo:=$order[OrderType/text()=“bogo”]
返回
{ 
如果(exists($buyOnly)和exists($getOnly)以及exists($bogo)),那么
(
$buyOnly,
$getOnly,
$bogo
)
else()
}

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

以下是如何在不使用任何FLWOR语句的情况下生成订单节点:

<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>

{ 
(
doc(“order.xml”)/Orders/order[OrderType/text()=“仅限购买”],
doc(“order.xml”)/Orders/order[OrderType/text()=“仅获取”],
doc(“order.xml”)/Orders/order[OrderType/text()=“BOGO”]
)   
}
具有更简化的FLWOR的版本:

<Orders>
{ 
  let $order := doc("order.xml")/Orders/Order
  return
  (
    $order[OrderType/text()="BUY_ONLY"],
    $order[OrderType/text()="GET_ONLY"],
    $order[OrderType/text()="BOGO"]
  )   
}
</Orders>

{ 
让$order:=doc(“order.xml”)/Orders/order
返回
(
$order[OrderType/text()=“仅限购买”],
$order[OrderType/text()=“仅获取”],
$order[OrderType/text()=“BOGO”]
)   
}