我希望在下面给出的输入xml中重新排列顺序标记,这样节点就会遵循以下顺序
BUY_ONLY,BOGO,GET_ONLY
这是我的示例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>我可以在不使用FLWOR表达式的情况下重新排列订单节点吗?
发布于 2017-10-27 01:38:58
下面是在没有任何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>具有更简化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>https://stackoverflow.com/questions/46963990
复制相似问题