2017-10-26 3 views
1

を使用してノードを配置し直す方法Orders.xml注文タグは再私は、ノードがこれは</p> <blockquote> <p>BUY_ONLY、BOGO、GET_ONLY</p> </blockquote> <p>このシーケンスに従うような下に与えられた入力XMLでの注文のタグを再配置したいのXQuery FLWOR

 (: 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式を使用せずに注文ノードを並べ替えることができ、それらの内側にOrderTypeタグに基づいて配置されるように、私のサンプルを持っていますか?ここで

答えて

1

を使用すると、任意の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> 
関連する問題

 関連する問題