IBM Books

管理およびプログラミングの手引き


付録


付録 A. DAD ファイル用の DTD

この節では、 文書アクセス定義 (DAD) ファイル用の文書タイプ宣言 (DTD) について説明します。 DAD ファイル自体がツリー構造の XML 文書であり、DTD を必要とします。 その DTD ファイル名は dxxdad.dtd です。 図 13 は DAD ファイル用の DTD を示しています。 このファイルの要素は以下の図に示されています。

図 13. 文書アクセス定義 (DAD) 用の DTD

<?xml encoding="US-ASCII"?>
 
  <!ELEMENT DAD (dtdid?, validation, (Xcolumn | Xcollection))>
  <!ELEMENT dtdid (#PCDATA)>
  <!ELEMENT validation (#PCDATA)>
  <!ELEMENT Xcolumn (table*)>
  <!ELEMENT table (column*)>
  <!ATTLIST table name CDATA #REQUIRED
                               key CDATA #IMPLIED
                               orderBy CDATA #IMPLIED>
  <!ELEMENT column EMPTY>
  <!ATTLIST column
                      name CDATA #REQUIRED
                      type CDATA #IMPLIED
                      path CDATA #IMPLIED
                       multi_occurrence CDATA #IMPLIED>
  <!ELEMENT Xcollection (SQL_stmt?, objids?, prolog, doctype, root_node)>
  <!ELEMENT SQL_stmt (#PCDATA)>
  <!ELEMENT objids (column+)>
  <!ELEMENT prolog (#PCDATA)>
  <!ELEMENT doctype (#PCDATA | RDB_node)*>
  <!ELEMENT root_node (element_node)>
  <!ELEMENT element_node (RDB_node*,
                                         attribute_node*,
                                         text_node?,
                                         element_node*,
                                         namespace_node*,
                                         process_instruction_node*,
                                         comment_node*)>
  <!ATTLIST element_node
                     name CDATA #REQUIRED
                      ID CDATA #IMPLIED
                     multi_occurrence CDATA "NO"
                     BASE_URI CDATA #IMPLIED>
  <!ELEMENT attribute_node (column | RDB_node)>
  <!ATTLIST attribute_node
                     name CDATA #REQUIRED>
  <!ELEMENT text_node (column | RDB_node)>
  <!ELEMENT RDB_node (table+, column?, condition?)>
  <!ELEMENT condition (#PCDATA)>
  <!ELEMENT comment_node (#PCDATA)>
  <!ELEMENT namespace_node (EMPTY)>
  <!ATTLIST namespace_node
                      name CDATA #IMPLIED
                     value CDATA #IMPLIED>
  <!ELEMENT process_instruction_node (#PCDATA)>

DAD ファイルの主な要素は次の 4 つです。

Xcolumn および Xcollection には、 XML データを DB2 のリレーショナル表にマッピングする際に使われる子要素および属性があります。 以下のリストは、主な要素およびそれらの子要素や属性について説明しています。 構文例は、図 13 から引用しています。

DTDID 要素
DTD_REF 表に保管された DTD の ID (識別子) を指定します。 DTDID は XML 文書の妥当性検査を行う、 または XML コレクション表と XML 文書間のマッピングに使われる DTD を示します。 XML コレクションには、DTDID の指定は必須です。 XML 列の場合は任意指定であり、要素や属性の索引付けのためにサイド表を作成したい場合、 または入力 XML 文書の妥当性検査をする場合にのみ必要です。 DTDID は、 XML 文書の doctype で指定された SYSTEM ID と同じでなければなりません。

構文: <!ELEMENT dtdid (#PCDATA)>

validation 要素
DAD 用の DTD を使って XML 文書を妥当性検査するかどうかを示します。 YES を指定する場合、DTDID も指定しなければなりません。

構文: <!ELEMENT validation(#PCDATA)>

Xcolumn 要素
XML 列の索引付け体系を定義します。 1 つまたは複数の表を含む場合もあります。

構文: <!ELEMENT Xcolumn (table*)> Xcolumn には 1 つの子要素 table があります。

table 要素
XML 列に保管される文書の要素または属性の索引付け用に作成される、 1 つまたは複数のリレーショナル表を定義します。

構文:

<!ELEMENT table (column+)>
 <!ATTLIST table name CDATA #REQUIRED
							key CDATA #IMPLIED
							orderBy CDATA #IMPLIED>

table 要素の属性は次の 1 つです。

name 属性
サイド表の名前を指定します。

table 要素の子要素は次の 1 つです。

key 属性
表のただ 1 つの基本キーです。

orderBy 属性
XML 文書を生成する際、 繰り返し出現する要素テキストまたは属性値の順序を決定する列の名前。

column 要素
指定されたタイプのロケーション・パスの値を含む表の列を指定します。

構文:

<!ATTLIST column
                     name CDATA #REQUIRED
                     type  CDATA #IMPLIED
                     path  CDATA #IMPLIED
                     multi_occurrence CDATA #IMPLIED>
column 要素には以下の属性があります。

name 属性
列の名前を指定します。 これは、要素または属性を識別するロケーション・パスの別名です。

type 型属性
列のデータ・タイプを定義します。 任意の SQL データ・タイプを指定できます。

path 属性
XML 要素または属性のロケーション・パスを示します。 これは、表 3.1.a (fix link) で指定されているような単純ロケーション・パスでなければなりません。

multi_occurrence 属性
1 つの XML 文書内でこの要素または属性が 2 度以上出現できるかどうかを指定します。 値は YES または NO です。

Xcollection
XML 文書とリレーショナル表からなる XML コレクション間とのマッピングを定義します。

構文: <!ELEMENT Xcollection(SQL_stmt*, prolog, doctype, root_node)> Xcollection には次のような子要素があります。

SQL_stmt
コレクションの定義のために XML エクステンダーが使用する SQL ステートメントを指定します。 そのステートメントは XML コレクション表から XML データを選択し、 そのデータを使用してコレクション内に XML 文書を生成します。 この要素の値は、有効な SQL ステートメントでなければなりません。 これは合成の場合のみ使用され、指定できる SQL_stmt の数は 1 つだけです。 分解の場合には、 必要な表の作成および挿入を行うために複数の SQL_stmt 値を指定できます。

構文: <!ELEMENT SQL_stmt #PCDATA >

prolog
XML プロローグのテキスト。 コレクション内のすべての文書に同じプロローグが提供されます。 prolog の値は変更されません。

構文: <!ELEMENT prolog #PCDATA>

doctype
XML 文書タイプ定義のテキストを定義します。

構文: <!ELEMENT doctype #PCDATA | RDB_node> doctype は以下のいずれかの方法で指定できます。

  • 明示的な値を定義する。 この値はコレクション内のすべての文書に提供されます。
  • 分解を使用している場合、子要素 RDB_node を指定します。 これは表の列データにマップされ、表の列データとして保管されます。

doctype の子要素は次の 1 つです。

RDB_node
まだ実装されていません。

root_node
仮想ルート・ノードを定義します。 root_node には子要素 element_node が必要です。 これは一度だけ使用できます。 root_node の下の element_node は、 実際には XML 文書の root_node です。

構文: <!ELEMENT root_node(element_node)>

element_node
XML 要素を表します。 これは、コレクション用に指定された DTD で定義されていなければなりません。 RDB_node マッピングの場合、ルート element_node には、 (それ自体とその子ノードの) XML データを含むすべての表を指定する RDB_node が必要です。 また、ルート element_node には、 任意数の attribute_nodes と子 element_nodes、 および 1 つまでの text_nodes を含めることもできます。 ルート要素ではない要素の場合、RDB_node は不要です。

構文:

element_node は、次の子要素によって定義されます。

RDB_node
(任意指定) XML データ用の表、列、および条件を指定します。 要素用の RDB_node は、RDB_node マッピングのためにのみ定義が必要です。 ここでは、1 つまたは複数の表を指定しなければなりません。 要素の内容が text_node で指定されているため、列は不要です。 条件は、DTD および照会条件に応じて任意指定です。

子ノード
(任意指定) element_node には、以下の子ノードも指定できます。

element_node
現在の XML 要素の子要素を表します。

attribute_node
現在の XML 要素の属性を表します。

text_node
現在の XML 要素の CDATA テキストを表します。

attribute_node
XML 属性を表します。 これは、XML 属性とリレーショナル表の列データの間のマッピングを定義するノードです。

構文:

attribute_node には name 属性の定義が必要であり、 あわせて column または RDB_node 子要素のいずれかが必要です。 attribute_node には以下の属性があります。

name
属性の名前。

attribute_node には以下の子要素があります。

Column
SQL マッピングに使用されます。 この列は、SQL_stmt の SELECT 文節内で指定されていなければなりません。

RDB_node
RDB_node マッピングに使用されます。 このノードは、この属性とリレーショナル表内の列データ間のマッピングを定義します。 表および列の指定は必須です。 条件は任意指定です。

text_node
XML 要素のテキストの内容を表します。 これは、XML 要素の内容とリレーショナル表の列データ間のマッピングを定義するノードです。

構文: これは、以下の column または RDB_node 子要素によって定義する必要があります。

Column
SQL マッピングに必要。 この場合、SQL_stmt の SELECT 文節内にこの列が指定されていなければなりません。

RDB_node
RDB_node マッピングに必要。 このノードは、このテキスト内容とリレーショナル表内の列データ間のマッピングを定義します。 およびの指定は必須です。 条件は任意指定です。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]