| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
269 バイト追加 、 2020年2月15日 (土) 08:01
編集の要約なし
==DB2 XQuery==
[[XML][XQuery]]
*DB2 XML DB (pureXML)
===プロローグと照会本体からなる===
*プロローグには、照会処理環境を定義する一連の宣言
<&lt;!-- プロローグ -->&gt;
xquery version "1.0";
declare default element namespace "http://posample.org";
<&lt;!-- 照会本体 -->&gt; <&lt;price_list>&gt;{for $prod in db2-fn:xmlcolumn("PRODUCT.DESCRIPTION")/product/description
order by xs:decimal($prod/price) descending
return <&lt;product>&gt;{$prod/name, $prod/price}<&lt;/product>&gt;} <&lt;/price_list>&gt;
==XQuery と SQL/XML==
*XQuery を直接呼び出す照会は、キーワード XQUERY で始まる。
|-
|}
<&lt;blockquote>&gt;SQLは大文字、小文字を区別しないが、XMLは区別する。SQLは通常、自動的に大文字に変換されるが、XMLと混在する場合は明示的に大文字として記述する必要がある。ただし、二重引用符で囲むことで、SQLでも大文字小文字を区別するようにすることもできる。<&lt;/blockquote>&gt;
==XQuery および XPath のデータ・モデル==
=====例=====
*36
*<&lt;dog/>&gt;
*(2,3,4)
*(36,<&lt;dog/>&gt;,"cat")
*()
===アトミック値===
*シーケンスのノードは、1つ以上の階層を形成する。
*DB2は、文書、エレメント、属性、テキスト、処理命令、コメント ノードをサポート
<&lt;products>&gt; <&lt;product pid="10">&gt; <&lt;description>&gt; <&lt;name>&gt;Fleece jacket<&lt;/name>&gt; <&lt;price>&gt;19.99<&lt;/price>&gt; <&lt;/description>&gt; <&lt;/product>&gt; <&lt;product pid="11">&gt; <&lt;description>&gt; <&lt;name>&gt;Nylon pants<&lt;/name>&gt; <&lt;price>&gt;9.99<&lt;/price>&gt; <&lt;/description>&gt; <&lt;/product>&gt; <&lt;/products>&gt;
*products というルートエレメントが含まれる
*ルートエレメントに product エレメントが含まれる
*XMLネームスペースは、URIによって識別される名前のコレクション
*XQueryのエレメント、属性、データタイプ、関数に使用される名前の修飾方法が提供される
<&lt;blockquote>&gt;ネームスペース接頭部で修飾された名前が修飾名(QName)<&lt;/blockquote>&gt;
===QNameの構成===
*オプションのネームスペース接頭部+ローカル名 (:で区切る)で構成
*照会の処理時に、ネームスペース接頭部にバインドされているURIを解決
<&lt;blockquote>&gt;QName は、W3C勧告 Namespace in XML で定義される構文に準拠<&lt;/blockquote>&gt;
====静的に既知のネームスペース====
=====事前宣言されたネームスペース=====
*ネーム・スペース宣言またはデフォルト・ネーム・スペース宣言を使用
declare namespace ns1 = "http://mycompany.com";
<&lt;blockquote>&gt;接頭部 ns1 が URI http://mycompany.com と関連付けられる<&lt;/blockquote>&gt;
*エレメント・コンストラクターのネーム・スペース宣言属性によって宣言
<&lt;ns2:price xmlns:ns2="http://mycompany.com">&gt;14.99<&lt;/ns2:price>&gt;<&lt;blockquote>&gt;エレメントの有効範囲内で接頭部 ns2 を URI http://mycompany.com にバインド<&lt;/blockquote>&gt;
*SQL/XML によって提供
**SQL/XMLの事前宣言されたネーム・スペース
let $seq := (10, 20, 30)
return $seq[2];
<&lt;blockquote>&gt;戻り値は 20<&lt;/blockquote>&gt;
===コンテキスト・アイテム式===
*1 個のピリオド文字 (.) から構成
*範囲式 1 to 100 で戻されるシーケンスのすべての項目に係数演算子を呼び出すコンテキスト・アイテム式
(1 to 100)[. mod 5 eq 0]
<&lt;blockquote>&gt;1 から 100 までの数字で、5 で均等に割り切れる整数のシーケンス<&lt;/blockquote>&gt;
===関数呼び出し===
*QName と、その後に続く括弧で囲んだ 0 個以上の式のリスト(これを引数と呼びます) で構成
=====パス式内のステップとしてフィルター式を使用=====
*指定された book 内で複数の footnote を含むすべての chapter または appendixを戻す
$book/(chapter | appendix)[fn:count(footnote)> &gt; 1]
===軸ステップ===
=====構成=====
*child が軸の名前、para がこの軸上で選択されるエレメント・ノードの名前
child::para
<&lt;blockquote>&gt;この例の軸ステップでは、コンテキスト・ノードの子であるすべての para エレメントを選択<&lt;/blockquote>&gt;
===軸===
*XML 文書内を移動する方向を指定する軸ステップの一部

案内メニュー