この章では、データ・ローディング・フォーマット(DLF)、バージョン1.0について説明します。DLFは、TransX Utilityを使用してデータベースにロードした変換済のメッセージおよびシード・データを記述する標準形式です。内容は次のとおりです。
DLFは、TransX Utilityを使用してロードするデータの標準形式を定義します。これは、SQLスクリプトを使用したデータ・ロードの後継となります。DLFには次の利点があります。
形式の検証。検証を行うことにより、変換およびロード時のエラーが減少します。
使いやすさ。各データ・ファイルのキャラクタ・エンコーディングを保持してデータ・ファイルで使用する言語に対応させる必要がありません。
DLFはXML 1.0仕様に基づいています。
データ・ローディング・フォーマットはXMLであるため、XML宣言で始まります。XML宣言の後に、<table>要素で囲まれたDLFドキュメントが続きます。DLFドキュメントを構成する必須のセクションは次のとおりです。
<lookup-key>要素: データベースの既存の行が<dataset>要素に挿入されたデータセット定義の行と重複しているかどうかを判断するための列名のリストが含まれます。
<columns>要素: <dataset>に関するメタデータ(列の名前、データ型、属性など)が含まれます。
<dataset>要素: 各行の<row>要素が含まれ、<row>要素には、データベースの列にロードされるデータに対応する<col>要素が含まれます。このように、DLFドキュメントの表示は、データベースのデータを一般的な表形式で出力した場合に類似しており、編集が簡単です。
DLFにはオプションのセクションが1つあります。このセクションは、<translation>要素で囲まれています。このセクションを必須セクションの前に指定することもできます。
また、DLFはTransX Utilityの処理情報を提供します。提供される処理情報の一部を次に示します。
<query>要素は、列にロードする値をSQL問合せで取得するために使用されます。
sequence属性は、データベースの順序オブジェクトから列にロードする値を取得するために使用されます。
constant属性は、定数値を列に指定するために使用されます。
language属性は、列にロードする言語識別子を指定するために使用されます。
この項では、DLFドキュメントの有効なツリー構造を示します。各要素は<element_name>で示されます。element_nameは要素名です。属性にマークアップはありません。各要素および属性の後に有効な出現回数を示す表記法が続きます。表13-1に、出現回数の表記法を示します。
例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>
この項の内容は次のとおりです。
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" ?>
XMLで事前定義済の5つの実体参照があります。表13-2に、これらの実体参照を示します。実体参照<および&は、必ず参照する文字の位置に使用する必要があります。
例13-1のDLFの要素は、表13-3に示すカテゴリに分かれています。属性は各要素に共通です。属性については、「DLFの属性」を参照してください。
表13-3 DLF要素
| 要素のタイプ | タグ |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表13-10に、最上位の表要素を示します。
表13-5に、変換の要素を示します。
表13-6に、検索キーの要素を示します。
表13-6 検索キーの要素
表13-7に、メタデータ要素を示します。
表13-7 メタデータ要素
表13-8に、データ要素を示します。
この項では、DLF要素の各種属性を示します。指定できる属性は各要素に1つのみです。一部の属性には推奨される属性値があります。推奨される属性の値には大/小文字の区別があります。
表13-9 属性
| 属性のタイプ | 属性 |
|---|---|
|
|
|
|
|
|
表13-10に、DLF属性を示します。
表13-10 DLF属性
表13-11に、XML名前空間の属性を示します。
表13-11 XML名前空間の属性
| 属性 | 説明 | 値の説明 | デフォルト値 | この属性を使用する要素 |
|---|---|---|---|---|
|
|
空白(ASCIIのスペース、タブ、改行)の処理方法を指定します。 |
値 |
|
サポート対象外 |
|
|
コンテンツの言語を指定します。 |
RFC 4646で定義されている言語タグ。 |
適用外 |
|
この項の内容は次のとおりです。
例13-2 に、最小の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>
例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>
詳細は、次の情報を参照してください。
[IETFRFC4646] Tags for the Identification of Languages
http://www.ietf.org/rfc/rfc4646