Loading article…
プログラミング言語XQuery は、反復処理と変数の中間結果へのバインドをサポートする式としてFLWOR (「フラワー」と発音) を定義します。FLWOR は、 FOR、LET、WHERE、ORDER BY、RETURNの頭字語です。 [1] FLWORはSQLのSELECT-FROM-WHERE に大まかに類似しており、 XMLドキュメントに結合のような機能を提供するために使用できます。
- forはノードのシーケンスを作成する
- letはシーケンスを変数にバインドします
- ブール式でノードをフィルタリングする
- order byはノードをソートします
- returnは各ノードに対して1回評価されます
例
for $ d in doc ( "depts.xml" )// deptno let $ e := doc ( "emps.xml" )// employee [ deptno = $ d ] where count ( $ e ) >= 10 order by avg ( $ e / salary ) descending return <big-dept> { $ d , <headcount> { count ( $ e )} </headcount> , <avgsal> { avg ( $ e / salary )} </avgsal> } </big-dept>
XQuery リクエストの最初の列には、FLWOR パラダイムのfor、let、where、order by、returnキーワードが表示されます。これは、平易な英語で「従業員が 10 人を超えるすべての部門を取得し、これらの部門を平均給与の降順で並べ替え、各主要部門の部門番号、従業員数、平均給与のレポートを返す」と解釈できます。結果は次のようになります。
<big-dept>
<deptno> 17 </deptno> <headcount> 25 </headcount> <avgsal> 12500 </avgsal> </big-dept> <big-dept> <deptno> 24 </deptno> <headcount> 18 </headcount> <avgsal> 11327 </avgsal> </big-dept> <big-dept> <deptno> 3 </deptno> <headcount> 32 </headcount> <avgsal> 10725 </avgsal> </big-dept>
Microsoft SQL Server を使用した例
@xml XMLを宣言する
SET @xml = '<ルート要素> <ブランチ 要素> <項目 1> 42 </ 項目 1> <項目 2>27</項目 2> </ブランチ要素> <ブランチ要素> <項目 1> a </項目 1> <項目 2> b</項目 2> </ブランチ 要素> </ルート要素>'
SELECT x . y . query ( 'for $s in self::node() return $s//item_1/text()' ) as i 、x . y . query ( 'for $s in self::node() return $s//item_2/text()' ) as j FROM @xml . nodes ( '/root_element' ) AS x ( y );
参考文献
- ^ ウォルムズリー、プリシラ (2007)。 Xクエリ。米国カリフォルニア州セバストポル: O'Reilly Media。 p. 73.ISBN 978-0-596-00634-1。
外部リンク
- W3C XML クエリ (XQuery) - FLWOR 式
- FLWORの例
- FLWOR の紹介
- https://web.archive.org/web/20111008001258/http://w3schools.com/xquery/xquery_flwor.asp
