xquery

XMLマスター:プロフェッショナル(データベース) 出題傾向【予想】

教科書(緑本)第4章、練習問題4-8以降要注意。タプルストリームをイメージすることが大事。復習すること。ただ、練習問題4-11からは教科書に、実際の試験ではここまでのクエリー式の解読は要求されないでしょうとある。 練習問題4-9 選択肢Cの結果はこうなる…

XMLマスター:プロフェッショナル(データベース) 出題傾向【予想】

まず、ダメな例を挙げます。 let $_ := /* return ( if (fn:true()) then () else () if (fn:true()) then () else () ) さて、どこがダメでしょう。正解は、ひとつ目のif式のあとに「,」がないこと。正しくは、 let $_ := /* return ( if (fn:true()) then …

XMLマスター:プロフェッショナル(データベース) 出題傾向【予想】

どうやら、「return節には、単一式しか書けないよ!」と、たったこれだけのことを覚えているかどうかを確かめるために、クエリー式の些細な違いを探すような、いやらしい問題が出そうな気配。例を挙げると…… let $_ := /* return (<hoge/>, <piyo/>, <fuga/>) これはいいけど、 le</fuga/></piyo/></hoge/>…

FLWOR式return節メモ

あーあー、return節単体じゃ書けないのか。 FLWORExpr ::= (ForClause | LetClause)+ WhereClause? OrderByClause? "return" ExprSingle http://www.w3.org/TR/xquery/#id-grammar for節か、let節が必ずひとつ以上要るのね。 はあ……これくらいならいいけど、…

Modules and Prologs

http://www.w3.org/TR/xquery/#id-query-prolog これの実装ないですかって社内MLに投げたら、「SAXONで行けるかも」(QuiPってのでもいけるらしい。google:QuiP XQuery)って教えてもらって、ぐぐったらMozFxの拡張が出てきた。 https://addons.mozilla.org/ja…

FLWOR式let節メモ

んんー、こんな使い方もできるのかっていう。 courseLIst.xml <courseList> <course genreNo="00"> <master instructorNo="00"/> </course> <course genreNo="01"> <master instructorNo="01"/> </course> </courseList> instructorList.xml <instructorList> <instructor no="00"><last>master</last><first>hoge</first></instructor> </instructorlist>

プロローグ

プロローグにいろいろ書けるらしい。 関数・変数・名前空間 XQueryのバージョン 文字符号化方式の宣言 モジュールやスキーマのインポート 関数 関数名は特定の名前空間に属する必要がある。ただし、クエリー内のみで使用する場合、定義済みの接頭辞「local」…

計算コンストラクタ

XQueryには、コンストラクタが2種類ある。 直接コンストラクタ return節などで記述したコンストラクタ もうひとつは、計算コンストラクタで、XDMの6種類に対応。 ノード コンストラクタ document document { 式 } element element QName { 式 } attribute at…

グルーピング

data.xml <movies> <movie> <title>ミケの冒険</title> <cat>ミケ</cat> <cat>トラ</cat> <cat>クロ</cat> </movie> <movie> <title>タマの冒険</title> <cat>タマ</cat> <cat>ミケ</cat> <cat>トラ</cat> </movie> </movies> 重複除去 fn:distinct-values(シーケンスのアイテム順は実装依存)を使って、バインド。 for $cat in fn:distinct-values(fn:doc("data.xml")/movies/mov…

FLWOR式for節メモ

うう、また教科書にきもい仕様が書いてある……。何なんだよFLWOR式。あ、ちなみにFLWORって、for, let, where, order by, returnの略ですう。 for $x1 in fn:doc("data.xml")/abc/def[1]/x, $x2 in fn:doc("data.xml")/abc/def[2]/x return <result>{ $x1, $x2 }</result> これ…

XQueryメモ

量化式 シーケンスの各アイテムについて論理和。 some $変数名 in 式 satisfies テスト式 シーケンスの各アイテムについて論理積。 every $変数名 in 式 satisfies テスト式

XQueryメモ

式を書くときは属性を最初に書く。これはOK。 { $course/@genre, $course/code, $course/name } これはNG。 { $course/code, $course/@genre, $course/name }