ヘッダーをスキップ
Oracle XML Developer's Kitプログラマーズ・ガイド
11gリリース1(11.1)
E05676-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

13 データ・ローディング・フォーマット(DLF)仕様

この章では、データ・ローディング・フォーマット(DLF)、バージョン1.0について説明します。DLFは、TransX Utilityを使用してデータベースにロードした変換済のメッセージおよびシード・データを記述する標準形式です。内容は次のとおりです。

DLFの概要

DLFは、TransX Utilityを使用してロードするデータの標準形式を定義します。これは、SQLスクリプトを使用したデータ・ロードの後継となります。DLFには次の利点があります。

DLFはXML 1.0仕様に基づいています。

DLFの命名規則

この項では、このドキュメントで使用される命名規則について説明します。

要素と属性

次の要素と属性の命名規則がこの仕様全体で使用されます。

  • 標準の英文字。

  • 小文字のみ。

  • ハイフン(-)を連結文字として使用できます。

  • 属性名の定義は全体で統一する必要があります。

  • 可能なかぎり業界標準の用語を使用する必要があります。

値には、列名の一部の属性値を除いて、大/小文字の区別があります。すべての事前定義済の属性値は小文字です。要素の値はこの仕様では定義されていません。

ファイル拡張子

ファイル拡張子はこの仕様では推奨されていません。この仕様の今後のバージョンでは、ドキュメントで8.3標準に準拠する拡張子を使用することが推奨される可能性があります。

DLFの一般的な構造

データ・ローディング・フォーマットはXMLであるため、XML宣言で始まります。XML宣言の後に、<table>要素で囲まれたDLFドキュメントが続きます。DLFドキュメントを構成する必須のセクションは次のとおりです。

DLFにはオプションのセクションが1つあります。このセクションは、<translation>要素で囲まれています。このセクションを必須セクションの前に指定することもできます。

また、DLFはTransX Utilityの処理情報を提供します。提供される処理情報の一部を次に示します。

DLFのツリー構造

この項では、DLFドキュメントの有効なツリー構造を示します。各要素は<element_name>で示されます。element_nameは要素名です。属性にマークアップはありません。各要素および属性の後に有効な出現回数を示す表記法が続きます。表13-1に、出現回数の表記法を示します。

表13-1 属性および要素の出現回数の表記法

記号 意味

1

1

+


1以上

?

0(ゼロ)または1

*


0(ゼロ)以上

(a|b|c)

a、b、cのいずれか


例13-1に、DLFドキュメントのツリー構造を示します。要素については、「DLFの要素」を参照してください。属性については、「DLFの属性」を参照してください。

例13-1 DLFのツリー構造

<table>1
 |
 +---- lang?
 |
 +---- space?
 |
 +---- normalize-langtag?
 |
 +---- <translation>?
 |     |
 |     +---- <target>+
 |     |     |
 |     |     +---- <language ID>
 |     |
 |     +---- <restype>+
 |           |
 |           +---- name1
 |           |
 |           +---- expansion?
 |
 +---- <lookup-key>1
 |     |
 |     +---- <column>*
 |           |
 |           +---- name1
 |
 +---- <columns>1
 |     |
 |     +---- <column>+
 |           |
 |           +---- name1
 |           |
 |           +---- type1
 |           |
 |           +---- translate?
 |           |
 |           +---- translation-note?
 |           |
 |           +---- constant?
 |           |
 |           +---- language?
 |           |
 |           +---- sequence?
 |           |
 |           +---- virtual?
 |           |
 |           +---- useforupdate?
 |           |
 |           +---- maxsize?
 |           |
 |           +---- size-unit?
 |           |
 |           +---- restype?
 |           |
 |           +---- space?
 |           |
 |           +---- (<query>|<sql>)?
 |                 |
 |                 +---- text1
 |                 |
 |                 +---- <parameter>*
 |                       |
 |                       +---- id1
 |                       |
 |                       +---- (col|constant)1
 |                       |
 |                       +---- translate?
 |                       |
 |                       +---- trans-key?
 |                       |
 |                       +---- translation-note?
 |
 |
 +---- <dataset>1
       |
       +---- <row>+
             |
             +---- space?
             |
             +---- <col>*
                   |
                   +---- space?
                   |
                   +---- name1
                   |
                   +---- trans-key?
                   |
                   +---- translation-note?
                   |
                   +---- <the text element for the data>

DLFの仕様

この項の内容は次のとおりです。

DLFでのXML宣言

XMLエンティティの先頭にはXML宣言があります。XML宣言は、XMLのバージョンを示し、次の例のようにファイルのエンコーディングの宣言に使用できます。

<?xml version="1.0" encoding="iso-8859-1" ?>

すべてのXMLファイルの場合と同様に、DLFファイルのデフォルト・エンコーディングはUTF-8(7ビットのASCIIキャラクタ・セットのスーパーセット)またはUTF-16(概念的には、65,535を超えるコード・ポイントのサロゲート・ペアを持つUCS-2)です。したがって、これらのキャラクタ・セットの場合はエンコーディング宣言は不要です。また、すべてのXMLパーサーでこれらのキャラクタ・セットがサポートされます。エンコーディングがUTF-16の場合、ファイルの最初の文字をUnicodeバイト・オーダー・マークの#xFEFFにする必要があります。このマークはファイルのエンディアンを示します。

Oracle XMLパーサーでサポートされるその他のキャラクタ・セットには、すべてのOracleキャラクタ・セット、および一般的なIANAキャラクタ・セットやJavaエンコーディングなどがあります。これらのキャラクタ・セットの名前については、パーサーのドキュメントを参照してください。ドキュメントに実行環境やネットワーク・プロトコルなどのエンコーディング情報の外部ソースが存在しない場合、キャラクタ・セットの宣言にエンコーディング宣言を記述する必要があります。そのため、Unicodeキャラクタ・エンコーディングを使用して、エンコーディング宣言がなくても済むようにすることをお薦めします。UTF-8のドキュメントをエンコードして、次の宣言を使用することを推奨します。

<?xml version="1.0" ?>

DLFでの実体参照

XMLで事前定義済の5つの実体参照があります。表13-2に、これらの実体参照を示します。実体参照&lt;および&amp;は、必ず参照する文字の位置に使用する必要があります。

表13-2 実体参照

実体参照 意味

&lt;

より小さい(<)

&gt;

より大きい(>)

&amp;

アンパサンド(&)

&apos;

アポストロフィまたは一重引用符(')

&quot;

二重引用符(")


DLFの要素

例13-1のDLFの要素は、表13-3に示すカテゴリに分かれています。属性は各要素に共通です。属性については、「DLFの属性」を参照してください。

表13-3 DLF要素

要素のタイプ タグ

最上位の表要素


<table>

変換の要素


<target><restype>

検索キーの要素


<lookup-key><column>

メタデータ要素


<columns><column><query><sql><parameter>

データ要素


<dataset><row><col>


最上位の表要素

表13-10に、最上位の表要素を示します。

表13-4 最上位の表要素

タグ 説明 必須属性 オプションの属性 内容

<table>

単一表に対応します。文書内にある他のすべての要素を囲みます。

name

langspacenormalize-langtag

<table>内の要素の順序は次のとおりです。

  1. <translation>(オプション)

  2. <lookup-key>

  3. <columns>

  4. <dataset>


変換の要素

表13-5に、変換の要素を示します。

表13-5 変換の要素

タグ 説明 必須属性 オプションの属性 内容

<translation>

変換に関連する一般的な情報が含まれます。

サポート対象外

サポート対象外

0(ゼロ)個以上の<target>要素と0(ゼロ)個以上の<restype>要素

<target>

この文書の変換に使用する言語を指定します。

サポート対象外

サポート対象外

[IETFRFC1766]で定義された言語識別子

<restype>

リソースのタイプを宣言します。

name

expansion

空要素


検索キーの要素

表13-6に、検索キーの要素を示します。

表13-6 検索キーの要素

タグ 説明 必須属性 オプションの属性 内容

<lookup-key>

TransXが行を単一行と認識するか、重複行と認識するかの基になる<column>要素が含まれます。

name

サポート対象外

0(ゼロ)個以上の<column>要素

<column>

<lookup-key>要素の下の<column>要素は、行が単一行であるか、重複行であるかの識別に使用する列を示します。指定された列に同じ値の列が複数あれば、その他の列の値に関係なく、列は重複しているとみなされます。検索キー<column>は、<dataset>セクションの<col>に対応するか、<columns>セクションに定数式または<query><column>として宣言する必要があります。

name

サポート対象外

空要素


メタデータ要素

表13-7に、メタデータ要素を示します。

表13-7 メタデータ要素

タグ 説明 必須属性 オプションの属性 内容

<columns>

ロードするデータに関する情報が含まれます。

サポート対象外

サポート対象外

1つ以上の<column>要素

<column>

<dataset>要素の下の<col>要素に対応する列を指定します。<column>を定義したら、列にsequenceconstantqueryのいずれかの属性が存在する場合を除き、対応する<col>要素をすべての<row>に表示する必要があります。

nametype(順序は任意)

推奨される順序は、nametype、オプションの属性の順です。

translateconstantsequencevirtualuseforupdatemaxsizesize-unitrestype(順序は任意)

0(ゼロ)または1つの<query>要素または<sql>要素

<query>

SQL問合せを指定します。その結果はこの要素が属する列への入力に使用されます。

text

サポート対象外

0(ゼロ)個以上の<parameter>要素

<sql>

SQL文を指定します。結果があれば、この要素が属する列への入力にその結果が使用されます。

text

サポート対象外

0(ゼロ)個以上の<parameter>要素

<parameter>

<query>要素のパラメータを指定します。

idと、colまたはconstantのいずれか。

colを指定する場合、参照される列にqueryconstantsequenceの各属性を使用できません。

translatetrans-key


データ要素

表13-8に、データ要素を示します。

表13-8 データ要素

タグ 説明 必須属性 オプションの属性 内容

<dataset>

データベースにロードするデータが含まれます。

サポート対象外

サポート対象外

1つ以上の<row>要素

<row>

<dataset>要素にロードするデータに関する情報が含まれます。

サポート対象外

サポート対象外

0(ゼロ)個以上の<col>要素

<col>

データベースの列にロードするデータ(または、仮想列の場合は、データベース列にロードする実データの取得に使用するデータ・ピース)のインスタンスを指定します。

name

trans-key

アプリケーションで使用するデータ


DLFの属性

この項では、DLF要素の各種属性を示します。指定できる属性は各要素に1つのみです。一部の属性には推奨される属性値があります。推奨される属性の値には大/小文字の区別があります。

表13-9 属性

属性のタイプ 属性

DLFの属性


nametypetranslateconstantsequencevirtualuseforupdatemaxsizesize-unitrestypetextidcoltrans-keytranslation-notenormalize-langtag

XML名前空間の属性


xml:space


DLFの属性

表13-10に、DLF属性を示します。

表13-10 DLF属性

属性 説明 値の説明 デフォルト値 この属性を使用する要素

lang

文書の言語を指定します。

これはxml:lang属性と同等です。

この属性の値は[IETFRFC4646]で定義される言語識別子です。

この属性はデータ・ロード操作に影響しません。

なし。存在しない場合は"en"とみなされます。

<table>

normalize-langtag

言語タグの大文字/小文字をどのように正規化するかを指定します。

nonestandarduppercaselowercaseのいずれか

それぞれの説明を次に示します。

none: 正規化なし。DLFの言語列の値がそのまま使用されます。

standard: 標準により推奨されているスタイル。

* 2文字の言語コードは小文字

* 2文字の国名コードは大文字

* 4文字のスクリプト・コードは単語の最初の文字を大文字

* その他は小文字

uppercase: すべて大文字

lowercase: すべて小文字

なし

<table>

space

空白(ASCIIのスペース、タブ、改行)の処理方法を指定します。

"default"または"preserve"

"default"は、アプリケーションのデフォルトの空白処理モードが適用されることを示します。値"preserve"は、アプリケーションですべての空白が保持されることを示します。この属性をルート表要素で宣言すると、文書全体のすべての文字列データ要素が適用対象とみなされます。列レベルで宣言すると、各行の指定された列が適用対象とみなされます。この属性をdatasetセクションで宣言すると、直接のテキスト・データのみが適用対象になります。文書レベルまたは列レベルで宣言すると、space属性の別のインスタンスでオーバーライドされる場合があります。

"default"

<table>、<column>、<col>

name

オブジェクト名(table、column、restypeなど)を指定します。

文字列: <table>要素の場合はデータベース表名、<column>または<col>要素の場合は列名です。

適用外

<table>、<column>、<col>

type

データセットの列のデータ型。この属性は、データセットの<col>要素に含まれるテキストの種類を指定します。このデータ型に応じて、TransXで適用されるデータ処理方法は異なります。

XSUおよびJDBCで暗黙的なデータ型変換が行われるため、TransXではこのデータ型情報に基づく独自の解析は行いません。この属性を使用してdate型またはdateTime型の列に対して適切なJavaの中間データ型を選択します。この場合、標準の日付書式を使用可能です。

文字列: 有効値は"number""string""date""dateTime"または"binary"です。

現行のロケールに関係なく、数値型の値の字句表示をSQL言語の構文に指定する必要があります。このSQL構文では、桁区切り記号(通常はカンマ)を使用せず、小数点区切り記号(通常はドット)を使用します。バイナリ・データ型の場合、colタグで囲まれたテキスト・フィールドに指定されたデータの値は、実際のバイナリ・データが格納されたファイルの名前を示します。ロー・データをテキスト・フィールドに埋め込むことはできません。その他のデータ型(stringdatedateTime)の表示は、対応するXML Schema仕様のデータ型で制約されます。簡素化のため、DLFで有効なXML Schemaの標準日付書式は"CCYY-MM-DDThh:mm:ss"(dateTime)または"CCYY-MM-DD"(date)のみに制限されます。その他の日付書式は認識されません。

TransXでは、この属性を次の用途で使用します。

  • 仮想列を問合せのパラメータにバインドする

  • 問合せの結果を対応する列にバインドする

適用外

<column>

translate

この列のテキストまたはパラメータを変換するかどうかを示します。

"yes"または"no"のいずれか。

"no"

<column>、<parameter>

constant

この列またはパラメータの定数値を指定します。

各行のこの列の値。

適用外

<column>、<parameter>

language

この列の言語識別子を指定します。

言語識別子またはプレースホルダ。「%x」はルート表要素のxml:lang属性から値を取得します。

適用外

<column>

sequence

この列に値を入力するために使用されるデータベース内の順序を指定します。

文字列: データベースの順序名。

適用外

<column>

virtual

この列に、別のデータの構成に使用するデータが指定されていることを示します。このデータがデータベースにロードされます。仮想列はデータベースに存在しません。通常、パラメータの値を問合せに指定するために使用します。仮想列を検索キー列にすることはできません。問合せを使用した仮想列では、結果は破棄されます。

"yes"または"no"のいずれか。

"no"

<column>

useforupdate

シード・データをアップロードするときに、この列の値を更新に使用するかどうかを示します。この属性が適用されるのは、TransXが重複行を更新するモードになっている場合のみです。仮想列でこの属性をyesに設定することはできません。

"yes"または"no"のいずれか。この属性を"no"に設定すると、更新操作後も列の値は変わりません。

"yes"

<column>

maxsize

この列のデータの最大サイズを指定します。

size-unit属性で指定した単位の数値。この属性を設定し、size-unitを設定しない場合、サイズは文字と解釈されます。

サポート対象外

<column>

size-unit

maxsize属性で指定したサイズの単位を指定します。

単位。推奨される値は、文字の場合は"char"、バイトの場合は"byte"です。

追加文字がある場合、2つの"char"単位を指定します。

"char"

<column>

restype

この列に取得されるデータのタイプを指定します。

リソース・タイプ。値は<restype>要素の名前と一致している必要があります。

サポート対象外

<column>

expansion

このリソース・タイプに対して、変換された文字列の長さの延長を許可する最大サイズを指定します。

増加率(パーセント)を表す数値。

0%

<restype>

text

問合せが属する列に入力する値を取得するためのSQL問合せ文を指定します。

SQL文。識別子の前にコロンを付けて、0(ゼロ)個以上のパラメータを指定できます。単一の値が1行で戻されます。余分な結果は破棄されます。

適用外

<query>

id

SQL問合せ文に使用するプレースホルダをパラメータで指定します。兄弟関係のcol属性で指定された列の値が問合せのパラメータとして関連付けられます。

文字列: 親のquery要素のtext属性に表示される識別子。

空の文字列

<parameter>

col

兄弟関係のid属性で指定された問合せのプレースホルダに関連付ける列を指定します。

文字列: 列名。この属性の一部となる列以外の列を指定する必要があります。

適用外

<parameter>

trans-key

変換のキーを指定します。

文字列: 変換キー。値は変換ドメイン内で一意である必要があります。

適用外

<col>、<parameter>

translation-note

変換の注意を指定します。

文字列: 変換の注意。

適用外

<col>、<column>、<parameter>


XML名前空間の属性

表13-11に、XML名前空間の属性を示します。

表13-11 XML名前空間の属性

属性 説明 値の説明 デフォルト値 この属性を使用する要素

xml:space

空白(ASCIIのスペース、タブ、改行)の処理方法を指定します。

"default"または"preserve"

"default"は、この要素に対してアプリケーションのデフォルトの空白処理モードが適用されることを示します。値"preserve"は、アプリケーションですべての空白が保持されることを示します。xml:space属性の別のインスタンスでオーバーライドしないかぎり、この属性を指定した要素のコンテンツ内のすべての要素が適用対象とみなされます。

"default"

サポート対象外

xml:lang

コンテンツの言語を指定します。

RFC 4646で定義されている言語タグ。

適用外

table


DLFの例

この項の内容は次のとおりです。

最小のDLFドキュメント

例13-2 に、最小のDLFドキュメントを示します。

例13-2 最小のDLFドキュメント

<?xml version="1.0" ?>
<table name="dual">
 <lookup-key/>
 <columns>
  <column name="DUMMY" type="string">
 </columns>
 <dataset>
  <row>
   <col name="DUMMY">X</col>
  </row>
 </dataset>
</table>

一般的なDLFドキュメント

例13-3に、CLK_STATUS_L表のシード・データを含むDLFドキュメントのサンプルを示します。

例13-3 サンプルDLF文書

<!--
  - $Header: $
  -
  - Copyright (c) 2001 Oracle Corporation. All Rights Reserved.
  -
  - NAME
  -   status.xml - Seed file for the CLK_STATUS_L table
  -
  - DESCRIPTION
  -   This file contains seed data for the Status level table.
  -
  - NOTES
  -
  - MODIFIED   (MM/DD/YY)
  -   dchiba    06/11/01 - Adaption to enhancements of data loading tool
  -   dchiba    05/23/01 - Adaption to generic data loading tool
  -   rbolsius  05/07/01 - Created
  -->

<table name="clk_status_l" xml:space="preserve">
  <lookup-key>
    <!--column name="status_id" /-->
    <column name="status_code" />
  </lookup-key>

  <columns>
    <column name="status_id"          type="number" sequence="clk_status_seq" useforupdate="no"/>
    <column name="status_code"        type="number" />
    <column name="status_name"        type="string" translate="yes" />
    <column name="status_description" type="string" translate="yes" />
    <column name="version_created"    type="number" constant="0" />
    <column name="version_updated"    type="number" constant="0" />
    <column name="status_type_code"   type="string" virtual="yes" />
    <column name="status_type_id"     type="number" >
      <query text="select status_type_id from clk_status_type_l where status_type_code = :1" >
        <parameter id="1" col="status_type_code" />
      </query>
    </column>
  </columns>

  <dataset>

    <row>
      <col name="status_code" >100</col>
      <col name="status_name" trans-key="stts-name-1" >Continue</col>
      <col name="status_description" trans-key="stts-desc-1" >
        The client should continue with its request.</col>
      <col name="status_type_code" >INFO</col>
    </row>

    <row>
      <col name="status_code" >101</col>
      <col name="status_name" trans-key="stts-name-2" >Switching Protocols</col>
      <col name="status_description" trans-key="stts-desc-2" >
        The server understands and is willing to comply with the client''s
        request (via the Upgrade message header field) for a change in the
        application protocol being used on this connection.</col>
      <col name="status_type_code" >INFO</col>
    </row>

    <row>
      <col name="status_code" >200</col>
      <col name="status_name" trans-key="stts-name-3" >OK</col>
      <col name="status_description" trans-key="stts-desc-3" >
        The request has succeeded.</col>
      <col name="status_type_code" >SUCCESS</col>
    </row>

    <row>
      <col name="status_code" >201</col>
      <col name="status_name" trans-key="stts-name-4" >Created</col>
      <col name="status_description" trans-key="stts-desc-4" >
        The request has been fulfilled and resulted in a new resource being
        created.</col>
      <col name="status_type_code" >SUCCESS</col>
    </row>

    <row>
      <col name="status_code" >202</col>
      <col name="status_name" trans-key="stts-name-5" >Accepted</col>
      <col name="status_description" trans-key="stts-desc-5" >
        The request has been accepted for processing, but the processing has
        not been completed.</col>
      <col name="status_type_code" >SUCCESS</col>
    </row>

    <row>
      <col name="status_code" >203</col>
      <col name="status_name" trans-key="stts-name-6" >Non-Authoritative Information</col>
      <col name="status_description" trans-key="stts-desc-6" >
        The returned metainformation in the entity-header is not the
        definitive set as available from the origin server, but is gathered
        from a local or a third-party copy.</col>
      <col name="status_type_code" >SUCCESS</col>
    </row>

    <row>
      <col name="status_code" >204</col>
      <col name="status_name" trans-key="stts-name-7" >No Content</col>
      <col name="status_description" trans-key="stts-desc-7" >
        The server has fulfilled the request but does not need to return an
        entity-body, and might want to return updated metainformation.</col>
      <col name="status_type_code" >SUCCESS</col>
    </row>

    <!-- ... -->

  </dataset>
</table>

ローカライズしたDLFドキュメント

例13-4に、要素および属性のローカライゼーションの例を示します。

例13-4 DLFのローカライゼーション

<?xml version="1.0"?>
<table name="table_name" xml:lang="ja" xml:space="preserve">

<translation>
<target>ar</target>
<target>bs</target>
<target>es</target>
<restype name="alt" expansion="50%"/>
<restype name="foo" expansion="50%"/>
<restype name="bar" expansion="30%"/>
</translation>

<lookup-key><column name="resid" /></lookup-key>

<columns>
<column name="resid" type="number" sequence="seq_foo" useforupdate="no"/>
<column name="image" type="binary"/>
<column name="alt_text" type="string" translate="yes" maxsize="30"
        size-unit="byte" restype="alt"/>

</columns>

<dataset>
<col name="image">foo1.gif</col>
<col name="alt_text">Hello world</col>
</dataset>

</table>

DLFの参照

詳細は、次の情報を参照してください。

[IETFRFC4646] Tags for the Identification of Languages
http://www.ietf.org/rfc/rfc4646