スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
XQueryデータモデルは,XQueryが処理対象とするXML文書を表現するためのモデルです。XQueryデータモデルは,木構造であり,ノードを持ちます。
ノードには,次に示すものがあります。また,各ノードが持つ情報をプロパティといいます。
ノード又は基本単位値をXQuery項目といいます。0個以上のXQuery項目の順序付けられた集まりを,XQueryシーケンスといいます。XQueryデータモデルで表現される値は,XQueryシーケンスとなります。
例として,XML文書をXQueryデータモデルで表現した木を次の図に示します。例となるXML文書に対応するXQueryシーケンスには,図中の点線内に示す文書ノードだけが含まれます。文書ノードはXML文書の内容を保持する子孫ノードを指すため,文書ノードだけでXML文書全体を扱うことができます。
<XML文書>
<書籍情報 書籍ID="310494321"> <カテゴリ> プログラミング</カテゴリ> <タイトル> XML入門教科書</タイトル> <著者>中村弘子</著者> </書籍情報> |
図1-12 XQueryデータモデルの例
図1-12で示したXML文書に対する,’/書籍情報/child::element()’(「書籍情報」要素ノードの子である要素ノードを抽出します)というXQueryの問い合わせ結果は,次の図の点線内に示す,三つのノードから構成されるXQueryシーケンスとなります。
図1-13 ノードから構成されるXQueryシーケンスの例
また,図1-12で示したXML文書に対する,'fn:data(/書籍情報/child::element()/text())'(「書籍情報」要素ノードの子である要素ノードが持つテキストノードの基本単位値を抽出します)というXQueryの問い合わせ結果は,次の図の点線内に示す,'プログラミング','XML入門教科書','中村弘子'という三つの基本単位値から構成されるXQueryシーケンスになります。
図1-14 基本単位値から構成されるXQueryシーケンスの例
ノードには順番が与えられています。この順序を文書順序といいます。文書順序は,各ノードに対応するXML要素やXML属性がXML文書で出現した順序と考えられます。文書順序の規則を次に示します。
図1-12の木のノードに与えられた文書順序を,次の図に示します。
図1-15 文書順序の例
ノードが持つプロパティには,次の表に示すものがあります。
表1-46 プロパティの種類と内容
項番 | プロパティ名 | 説明 |
---|---|---|
1 | ノード名 | XML要素,XML属性の修飾名です。 |
2 | 名前空間 | ノードが属するXML名前空間です。 |
3 | 親 | 親ノードです。 |
4 | 子 | 子ノードのXQueryシーケンスです。 |
5 | 属性 | 属性ノードのXQueryシーケンスです。 |
6 | 型名 | XML要素やXML属性が持つXQueryデータ型の修飾名です。 |
7 | 文字列値 | ノードの内容として指定されたテキストが示す文字列のxs:string型の値です。fn:string関数で参照できます。 |
8 | 型付き値 | 文字列値プロパティから得られるXQueryデータ型の値です。fn:data関数で参照できます。 |
9 | nilled | XML要素の内容が空であるかどうかを示すプロパティです。内容が空であれば,子プロパティは,要素ノードもテキストノードも含みません。 |
10 | 処理命令ターゲット | XML処理命令の対象となるアプリケーションです。 |
11 | 内容 | XMLコメントの内容,XML要素の内容,XML処理命令の内容です。 |
ノードが持つプロパティの種類は,ノードの種類によって異なります。各ノードが持つプロパティを次の表に示します。各ノードが持つプロパティの内容については,「1.16.1(3) ノードの詳細」を参照してください。
表1-47 各ノードが持つプロパティ
項番 | プロパティ名 | 文書ノード | 要素ノード | 属性ノード | 処理命令ノード | コメントノード | テキストノード |
---|---|---|---|---|---|---|---|
1 | ノード名 | ○ | ○ | ||||
2 | 名前空間 | ○ | |||||
3 | 親 | ○ | ○ | ○ | ○ | ○ | |
4 | 子 | ○ | ○ | ||||
5 | 属性 | ○ | |||||
6 | 型名 | ○ | ○ | ||||
7 | 文字列値 | ○ | ○ | ○ | |||
8 | 型付き値 | ○ | ○ | ○ | |||
9 | nilled | ○ | |||||
10 | 処理命令ターゲット | ○ | |||||
11 | 内容 | ○ | ○ | ○ |
XQueryデータモデルが持つ6種類のノードについて説明します。
文書ノードは,XML文書の情報を保持します。
文書ノードは,次のプロパティを持ちます。
プロパティ名 | 説明 |
---|---|
子 | 文書ノードの子ノードのXQueryシーケンスです。 |
文字列値 | 子孫となるテキストノードの内容プロパティの値を文書順序順に連結した結果の値です。子孫となるテキストノードが存在しない場合は,長さ0の文字列となります。 |
型付き値 | xs:untypedAtomic型で,値は文字列値プロパティの値となります。 |
文書ノードは,次の制約に従います。
要素ノードは,XML要素の情報を保持します。
要素ノードは,次のプロパティを持ちます。
プロパティ名 | 説明 |
---|---|
ノード名 | XML要素の修飾名を示します。 |
親 | 要素ノードの親ノードを示します。親ノードは,文書ノードか要素ノードのどちらかです。 |
型名 | 要素ノードのXQueryデータ型を示します。XMLスキーマによる検査が行われていない場合,又はXMLスキーマによる検査の結果,要素ノードの型名がHiRDBで提供しているXQueryデータ型に該当しない場合,型名プロパティの値は不定になります。 |
子 | 要素ノードの子ノードのXQueryシーケンスを示します。 |
属性 | 要素ノードが持つ属性ノードのXQueryシーケンスを示します。 |
名前空間 | 要素ノードが属するXML名前空間を示します。 |
nilled | 要素ノードの内容が空であるかどうかを示します。内容が空であれば,子プロパティは,要素ノードもテキストノードも含みません。 |
文字列値 | 子孫であるテキストノードの内容プロパティの値を,文書順序順に連結した結果の値を示します。要素の内容が空の場合は,そのプロパティ値は長さ0の文字列となります。 |
型付き値 | 型名プロパティの値が不定の場合,xs:untypedAtomic型の実現値としての文字列値プロパティの値となります。XML要素が空の場合は,プロパティの値は空のXQueryシーケンスとなります。それ以外の場合は,型名プロパティの値のXQueryデータ型に従って,文字列値プロパティの値から得られる基本単位値のXQueryシーケンスとなります。 |
要素ノードは,次の制約に従います。
属性ノードは,XML属性の情報を保持します。
属性ノードは,次のプロパティを持ちます。
プロパティ名 | 説明 |
---|---|
ノード名 | XML属性の修飾名を示します。 |
親 | 属性ノードの親ノードを示します。親ノードは,XML属性が属する要素のノードです。 |
型名 | 属性ノードのXQueryデータ型名を示します。 |
文字列値 | 属性ノードが持つ値を示します。このプロパティが空となることはありません。 |
型付き値 | 型名がxs:untypedAtomicの場合,xs:untypedAtomic型の実現値としての文字列値プロパティの値となります。 それ以外の場合は,XMLスキーマで検査された結果として得られるXQueryデータ型に従って,文字列値プロパティから得られる基本単位値のXQueryシーケンスとなります。 |
属性ノードは,次の制約に従います。
処理命令ノードは,XML処理命令の情報を保持します。
処理命令ノードは,次のプロパティを持ちます。
プロパティ名 | 説明 |
---|---|
処理命令ターゲット | 処理命令の対象となるアプリケーションを示します。 |
内容 | 処理命令の内容を示します。 |
親 | 処理命令ノードの親ノードを示します。 |
処理命令ノードは,次の制約を満たします。
コメントノードは,XMLコメントの情報を保持します。
コメントノードは,次のプロパティを持ちます。
プロパティ名 | 説明 |
---|---|
内容 | XMLコメントの内容を示します。 |
親 | コメントノードの親ノードを示します。 |
テキストノードは,XML要素の内容の情報を保持します。
テキストノードは,次のプロパティを持ちます。
プロパティ名 | 説明 |
---|---|
内容 | XML要素の内容の文字列を示します。 |
親 | テキストノードの親ノードを示します。 |
テキストノードは,次の制約に従います。
各ノード種別に対して,親ノード,子ノードとなり得るノード種別を,次の表に示します。
表1-48 各ノード種別に対して親ノードになり得るノード種別
自ノードの種別 | 親ノードの種別 | |||||
---|---|---|---|---|---|---|
文書ノード | 要素ノード | 属性ノード | 処理命令ノード | コメントノード | テキストノード | |
文書ノード | × | × | × | × | × | × |
要素ノード | ○ | ○ | × | × | × | × |
属性ノード | × | ○ | × | × | × | × |
処理命令ノード | ○ | ○ | × | × | × | × |
コメントノード | ○ | ○ | × | × | × | × |
テキストノード | ○ | ○ | × | × | × | × |
表1-49 各ノード種別に対して子ノードになりうるノード種別
自ノードの種別 | 子ノードの種別 | |||||
---|---|---|---|---|---|---|
文書ノード | 要素ノード | 属性ノード | 処理命令ノード | コメントノード | テキストノード | |
文書ノード | × | ○ | × | ○ | ○ | ○ |
要素ノード | × | ○ | × | ○ | ○ | ○ |
属性ノード | × | × | × | × | × | × |
処理命令ノード | × | × | × | × | × | × |
コメントノード | × | × | × | × | × | × |
テキストノード | × | × | × | × | × | × |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.