ページの先頭行へ戻る
Symfoware Server V12.7.0 RDB運用ガイド(XMLアダプタ編)
FUJITSU Software

A.3 CREATE XMLGROUP文

機能

XMLグループを定義します。

記述形式

権限

一般規則

XMLグループ名
  • 作成するXMLグループの名前を指定します。

  • XMLグループ名は、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。

  • XMLグループ名は、DSO内で一意の名前であることが必要です。

DSO名
  • XMLグループを対応づけるDSOの名前を指定します。

パス定義
  • 検索対象とするXMLデータ中の要素・属性を指定します。

  • 指定可能なパス定義の数は、最大1024個です。

パス
  • 検索対象とするXMLデータ中の要素・属性を以下の記述の文字列定数で指定します。

  • 検索対象とする要素・属性を、ルート要素から順に要素名・属性名を“/”で区切って指定します。

  • 属性を指定する場合は属性名の先頭に“@”を付加して指定します。

  • パス中に現れる要素が、格納するXMLデータ内に複数繰り返して記述される場合は、その要素名の後ろに“*”を付加して指定します。“*”が指定されていない要素が複数繰り返して記述されているXMLデータを表に格納した場合は、最初の要素配下の要素や属性についてだけが検索可能となります。

  • パスとして指定できる要素名・属性名の段数の最大は50段です。

  • パスとして指定可能な文字列の長さは、最大500バイトです。

  • パスは、XMLグループ内一意であることが必要です。

  • “*”を指定した要素を含むパスを定義している場合は、同じ要素を含むすべてのパスで“*”を指定している必要があります。

  • 別のパス定義を定義している要素配下の要素を含むパスを指定することはできません。

型指定
  • パスで指定した要素・属性の値が示す型を指定します。

STRING
  • 要素・属性の値が文字列を表現している場合に指定します。

  • 要素・属性が表現する文字列の最大の長さを“長さ”に指定します。なお、指定できる長さは、最大1000バイトです。

  • 要素・属性の値が“長さ”で指定した長さを超える文字列をもつXMLデータを表に格納した場合は、CONTAINS関数を使用した検索時にその要素・属性は存在しないものとして解釈します。

  • 短縮指定は、RAW、SHRINK1およびSHRINK2のどれかを指定します。短縮指定を省略した場合はSHRINK1を指定したものとして動作します。
    短縮指定は、CONTAINS関数を使用してXMLデータに対して絞り込み条件を指定する場合に、要素の値となる文字列の形式を決定します。
    短縮指定と要素の値の関係を以下に示します。

    短縮指定

    値の形式

    RAW

    要素の場合は、開始タグの直後の文字から終了タグの直前の文字までが値となります。
    属性の場合は、二重引用符(”)または引用符(’)で囲った部分の文字が値となります。

    SHRINK1

    要素の場合は、開始タグの直後の空白文字(空白、改行、タブ)の繰り返しと終了タグの直前の空白文字の繰り返しを除いた文字列が値となります。
    属性の場合は、先頭の二重引用符(”)または引用符(’)の直後の空白文字の繰り返しと終端の二重引用符(”)または引用符(‘)の直前の空白文字の繰り返しを除いた文字列が値となります。

    SHRINK2

    要素の場合は、開始タグと終了タグの間に出現するすべての空白文字(空白、改行、タブ)除いた文字列が値となります。
    属性の場合は、二重引用符(”)または引用符(’)で囲った部分の空白文字をすべて除いた文字列が値となります。


  • データベースの文字コード系に変換できない文字を値として含む要素・属性をもつXMLデータを表に格納した場合は、CONTAINS関数を使用した検索時にその要素・属性は存在しないものとして解釈します。

  • case指定は、SENSITIVEまたはINSENSITIVEのどちらかを指定します。case指定を省略した場合はSENSITIVEを指定したものとして動作します。
    case指定は、CONTAINS関数を使用して当該要素・属性に対して絞り込み条件を指定する場合の文字列の比較方法を規定します。

    case指定と文字列との比較方法および使用できる比較演算子の関係を以下に示します。

    case指定

    文字列との比較方法

    使用できる比較演算子

    SENSITIVE

    大文字と小文字を区別した比較が行えます。

    =、!=、<、>、<=、>=、
    $eq$、$ne$、$lt$、$gt$、$le$、$ge$

    INSENSITIVE

    大文字と小文字を区別しない比較が行えます。

    $ieq$、$ine$、$ilt$、$igt$、$ile$、$ige$

NUMBER
  • 要素・属性の値が数値を表現している場合に指定します。

  • 数値の10進有効桁数を“精度”で、小数部の桁数を“位取り”に指定します。“精度”は1~18の定数で、“位取り”は0~“精度”の定数で指定します。

  • 要素・属性の内容が、“表A.2 型と表現範囲”で示す記述形式で記述していないXMLデータを格納した場合は、CONTAINS関数を使用した検索時にその要素・属性が存在しないものとして解釈します。

  • 要素・属性の内容が、“表A.2 型と表現範囲”で示す値の範囲を超えるXMLデータを表に格納した場合は、CONTAINS関数を使用した検索時にその要素・属性が存在しないものとして解釈します。

  • 要素・属性の内容が、位取りで指定した桁数を超える小数部の桁数が存在するXMLデータを表に格納した場合は、CONTAINS関数を使用した検索時にその要素・属性が存在しないものとして解釈します。

DATE
  • 要素・属性の値が日付を表現している場合に指定します。

  • “日付書式”を指定しない場合は、“表A.2 型と表現範囲”で示す標準の記述形式で要素・属性の値を表現していることを前提とします。

  • “日付書式”を指定することで、標準以外の書式で記述することができます。“日付書式”は文字列定数で指定します。“日付書式”は“表A.3 日付書式の書式要素”で示す書式要素を任意の順序で指定します。また、書式要素を“表A.4 日付書式のセパレータ”で示す任意のセパレータで区切って指定することができます。

  • “日付書式”を指定する場合は、「年」「月」「日」を表す書式要素が含まれている必要があります。

  • “日付書式”を指定する場合は、“MM”と“MON”など同じ種類のデータを表す書式要素を2つ以上同時に指定することはできません。

  • 書式要素DAYおよびDYを指定した場合、指定した日付と曜日が正しいかどうかの妥当性チェックは行いません。誤っていても曜日は無視して処理されます。

  • 要素・属性の内容が、“表A.2 型と表現範囲”で示す記述形式または“日付書式”で指定した記述形式で記述していないXMLデータを表に格納した場合は、CONTAINS関数を使用した検索時にその要素・属性が存在しないものとして解釈します。

  • 要素・属性の内容が、暦上存在する自然な日時値でないXMLデータを表に格納した場合は、CONTAINS関数を使用した検索時にその要素・属性が存在しないものとして解釈します。

    表A.2 型と表現範囲

    記述形式

    値の範囲

    NUMBER (p,q)

    形式:[-]<符号なし整数>.<符号なし整数>

    -10^(p-q) + 10^(-q) ~
    10^(p-q) - 10^(-q)

    DATE

    日付値:<年>-<月>-<日>[T<時>:<分>:<秒>]
    年: CCYY
    月: MM
    日: DD
    時: hh
    分: mm
    秒: ss


    年: 0001~9999
    月: 01~12
    日: 01~31
    時: 00~23
    分: 00~59
    秒: 00~59

    p:精度 q:位取り


    表A.3 日付書式の書式要素

    書式要素

    意味

    YYYY

    年(西暦: 1~9999) 年の開始日は1月1日
    データの表現は4文字固定(0001~9999)

    MM

    月(1~12)
    データの表現は2文字固定(01~12)

    MONTH

    月の名前
    (January, February, March, April, May, June, July, August, September, October, November, December)

    MON

    省略形の月
    データの表現は3文字固定
    (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC)

    DD

    日(1~31)
    データの表現は2文字固定(01~31)

    DAY

    曜日
    (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)

    DY

    省略系の曜日
    データの表現は3文字固定(SUN, MON, TUE, WED, THU, FRI, SAT)


    表A.4 日付書式のセパレータ

    セパレータ

    文字

    説明

    半角ブランク

      

    空白の連続をセパレータとして用いることを指示します。

    ハイフン

    -

    指定した1文字をセパレータとして用いることを指示します。

    スラッシュ

    /

    ピリオド

    カンマ

    コロン

選択条件(RULE)
  • 選択条件は以下のとおりです。

    • 複数のXMLグループをインデックスのDSOに関連づける場合に、選択条件を指定します。表に格納したXML文書は選択条件で指定した条件に合致するXMLグループと対応づけます。

    • 表に格納したXMLが属するXMLグループは、列名リストに指定した各列に設定する値と、値リストで指定した定数を比較の結果により決定します。

列名リスト
  • 列名リストは列名をカンマ(,)で区切って指定します。列名リストに指定可能な列の数は、64個までです。

  • 列名リストに指定可能な列のデータ型は以下のとおりです。

    属性

    精度

    位取り

    長さ

    備考

    SMALLINT

      

    INTEGER

      

    NUMERIC

    1~18

    0~精度

      

    DECIMAL

    1~18

    0~精度

      

    CHARACTER

    1~1000

    VARYINGは指定不可

    NATIONAL CHARACTER

    1~500

    VARYINGは指定不可

    DATE

      

    TIME

      

    TIMESTAMP

      

    INTERVAL

    1~9

      

値リスト
  • 列名リストで指定した列に対する値を、定数で指定します。列名リストに複数の列が存在する場合には、その出現順序に対応して、定数をカンマ(,)で区切り指定します。列名リストに指定した列の個数と、定数の個数は同じであることが必要です。

  • 値リストに指定可能な定数の記述形式を以下に示します。

    対応する列の属性

    選択値に指定可能な定数の記述形式

    SMALLINT

    -32768~32767(小数点なし)

    INTEGER

    -2147483648~214743647(小数点なし)

    NUMERIC(p,q)

    整数部(小数点の左側)の数字の数はp-q以下 (注)
    小数部(小数点の右側)の数字の数はq以下

    DECIMAL(p,q)

    CHARACTER(n)

    長さがn以下の文字列定数

    NATIONAL CHARACTER(n)

    長さがn以下の各国語文字列定数

    DATE

    年から日までの10文字の日付

    TIME

    時から秒までの8文字の時刻

    TIMESTAMP

    年から秒までの19文字の時刻印

    INTERVAL(年月)

    年から月までの任意の単一または連続する日時フィールド

    INTERVAL(日時)

    日から秒までの任意の単一または連続する日時フィールド

    p:精度 q:位取り n:長さ

    注) 定数が小数点を含まない場合はすべての整数部となります。

BETWEEN
  • BETWEENは、範囲比較でデータを格納する場合に指定します。

使用例

例1

インデックスのDSO“伝票IXDSO”に対して、大文字小文字を意識した検索を行うパス'/受注伝票/@伝票番号'、大文字小文字を意識しない検索を行うパス'/受注伝票/発注者名'、および、数値型のパス'/受注伝票/発注者コード'を含むXMLグループを定義

CREATE XMLGROUP 受注伝票GR ON 伝票IXDSO (
            '/受注伝票/@伝票番号'        STRING(20),
            '/受注伝票/発注者名'         STRING(20, INSENSITIVE),
            '/受注伝票/発注者コード'     NUMBER(10,0)
            ) RULE (伝票種別) = ('1');

例2

インデックスのDSO“伝票IXDSO”に対して、“年-月-日”形式の日付データを前提とするパス'/受注伝票/受注日'および“月-日-年”形式の日付データを前提とするパス'/受注伝票/納品日'を含むXMLグループ定義を定義

CREATE XMLGROUP 伝票日付GR ON 伝票IXDSO (
            '/受注伝票/受注日'          DATE,
            '/受注伝票/納品日'          DATE('MM-DD-YYYY')
            ) RULE (伝票種別) = ('1');