This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
FLWOR(発音は「フラワー」)は、XQueryプログラミング言語における反復処理と変数の中間結果へのバインディングをサポートする式です。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