23 データ・ローディング・フォーマット(DLF)仕様
TransX Utilityを使用してデータベースにロードした変換済のメッセージおよびシード・データを記述するための標準形式である、データ・ローディング・フォーマット(DLF)、バージョン1.0について説明します。
関連項目
23.1 DLFの概要
DLFは、TransX Utilityを使用してロードするデータの標準形式を定義します。これは、SQLスクリプトを使用したデータ・ロードの後継となります。DLFには次の利点があります。
-
形式の検証。検証を行うことにより、変換およびロード時のエラーが減少します。
-
使いやすさ。各データ・ファイルのキャラクタ・エンコーディングを保持してデータ・ファイルで使用する言語に対応させる必要がありません。
DLFはXML 1.0仕様に基づいています。
注意:
TransXは認証されたユーザーとして実行されます。データ・ファイルをレビューして、信頼されたソースからのみデータ・ファイルをロードしてください。
関連項目:
IETFRFC4646については、『Tags for Identifying Languages』を参照してください
23.2 DLFの一般的な構造
データ・ローディング・フォーマットはXMLであるため、XML宣言で始まります。XML宣言の後に、<table>
要素で囲まれたDLFドキュメントが続きます。
DLFドキュメントを構成する必須のセクションは次のとおりです。
-
<lookup-key>
要素: データベースの既存の行が<dataset>
要素に挿入されたデータセット定義の行と重複しているかどうかを判断するための列名のリストが含まれます。 -
<columns>
要素:<dataset>
要素に関するメタデータ(列の名前、データ型、属性など)が含まれます。 -
<dataset>
要素: 各行の<row>
要素が含まれ、この要素には、データベースの列にロードされるデータに対応する<col>
要素が含まれます。このように、DLFドキュメントの表示は、データベースのデータを一般的な表形式で出力した場合に類似しており、編集が簡単です。
DLFには、<translation>
要素で囲まれる、オプションのセクションが1つあります。このセクションを必須セクションの前に指定することもできます。
また、DLFはTransX Utilityの処理情報を提供します。提供される処理情報の一部を次に示します。
-
<query>
要素は、列にロードする値をSQL問合せで取得するために使用されます。 -
sequence
属性は、データベースの順序オブジェクトから列にロードする値を取得するために使用されます。 -
constant
属性は、定数値を列に指定するために使用されます。 -
language
属性は、列にロードする言語識別子を指定するために使用されます。
23.2.1 DLFのツリー構造
DLFドキュメントの有効な構造をツリー形式で示します。各要素は<element_name>
で示されます。element_name
は要素名です。属性にマークアップはありません。各要素および属性の後に、有効な出現回数を示す表記法が続きます。
表23-1に、出現回数の表記法を示します。
表23-1 属性および要素の出現回数の表記法
記号 | 意味 |
---|---|
1 |
1 |
+ |
1以上 |
? |
0 (ゼロ)または1 |
* |
0 (ゼロ)以上 |
(a|b|c) |
a、b、cのいずれか |
例23-1に、DLFドキュメントのツリー構造を示します。要素は、「DLFの要素」で説明されています。属性は、「DLFの属性」で説明されています。
例23-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>
23.3 DLFの仕様
このトピックでは、DLFのXML宣言、エンティティ参照、要素および属性について説明します。
23.3.1 DLFでのXML宣言
Extensible Markup Language (XML)宣言でXMLエンティティが開始されます。これは、XMLバージョンを示します。
次の例のように、ファイルのエンコーディングも宣言できます。
<?xml version="1.0" encoding="iso-8859-1" ?>
すべてのXMLファイルの場合と同様に、DLFファイルのデフォルト・エンコーディングは、7ビットのASCIIキャラクタ・セットのスーパーセットである8ビット・エンコーディングのUnicode (UTF-8)または概念的には、65,535を超えるコード・ポイントのサロゲート・ペアを持つ2バイトのUniversal Character Set (UCS-2)である16ビット・エンコーディングのUnicode (UTF-16)です。したがって、これらのキャラクタ・セットの場合はエンコーディング宣言は不要です。また、すべてのXMLパーサーでこれらのキャラクタ・セットがサポートされます。エンコーディングがUTF-16の場合、ファイルの最初の文字をUnicodeバイト・オーダー・マークの#xFEFFにする必要があります。
Oracle XMLパーサーでサポートされるその他のキャラクタ・セットには、すべてのOracleキャラクタ・セット、および一般的に使用されるInternet Assigned Numbers Authority (IANA)キャラクタ・セットやJavaエンコーディングなどがあります。これらのキャラクタ・セットの名前については、パーサーのドキュメントを参照してください。ドキュメントに実行環境やネットワーク・プロトコルなどのエンコーディング情報の外部ソースが存在しない場合、キャラクタ・セットの宣言にエンコーディング宣言を記述する必要があります。そのため、Unicodeキャラクタ・エンコーディングを使用して、エンコーディング宣言がなくても済むようにすることをお薦めします。UTF-8でドキュメントをエンコードして、次の宣言を使用することを推奨します。
<?xml version="1.0" ?>
23.3.2 DLFでの実体参照
XMLでは、<
、>
、&
、'
および"
の5つの実体参照が事前定義されています。実体参照<
および&
は、参照する文字のかわりに使用する必要があります。
表23-2 実体参照
実体参照 | 意味 |
---|---|
|
より小さい( |
|
より大きい( |
|
アンパサンド( |
|
アポストロフィまたは一重引用符( |
|
二重引用符( |
23.3.3 DLFの要素
23.3.3.1 最上位の表要素
最上位の表要素について説明します。
表23-4 最上位の表要素
タグ | 説明 | 必須属性 | オプションの属性 | 内容 |
---|---|---|---|---|
<table> |
単一表に対応します。ドキュメント内にある他のすべての要素を囲みます。 |
|
|
|
23.3.3.2 変換の要素
変換の要素について説明します。
表23-5 変換の要素
タグ | 説明 | 必須属性 | オプションの属性 | 内容 |
---|---|---|---|---|
|
変換に関連する一般的な情報が含まれます。 |
なし |
なし |
0(ゼロ)個以上の |
|
この文書の変換に使用する言語を指定します。 |
なし |
なし |
[IETFRFC1766]で定義された言語識別子 |
|
リソースのタイプを宣言します。 |
|
|
空要素 |
23.3.3.3 検索キーの要素
検索キーの要素について説明します。
表23-6 検索キーの要素
タグ | 説明 | 必須属性 | オプションの属性 | 内容 |
---|---|---|---|---|
<lookup-key> |
TransXが行を単一行と認識するか、重複行と認識するかの基になる |
|
なし |
0(ゼロ)個以上の |
<column> |
|
|
なし |
空要素 |
23.3.3.4 メタデータ要素
メタデータ要素について説明します。
表23-7 メタデータ要素
タグ | 説明 | 必須属性 | オプションの属性 | 内容 |
---|---|---|---|---|
<columns> |
ロードするデータに関する情報が含まれます。 |
なし |
なし |
1つ以上の |
<column> |
|
推奨される順序は、 |
|
0(ゼロ)または1つの |
<query> |
SQL問合せを指定します。その結果はこの要素が属する列への入力に使用されます。 |
text |
なし |
0(ゼロ)個以上の |
<sql> |
SQL文を指定します。結果があれば、この要素が属する列への入力にその結果が使用されます。 |
text |
なし |
0(ゼロ)個以上の |
<parameter> |
|
|
|
空 |
23.3.3.5 データ要素
データ要素は、<dataset>
、<row>
および<col>
です。
表23-8に、データ要素を示します。
表23-8 データ要素
タグ | 説明 | 必須属性 | オプションの属性 | 内容 |
---|---|---|---|---|
|
データベースにロードするデータが含まれます。 |
なし |
なし |
1つ以上の |
|
|
なし |
なし |
0(ゼロ)個以上の |
|
データベースの列にロードするデータ(または、仮想列の場合は、データベース列にロードする実データの取得に使用するデータ)のインスタンスを指定します。 |
|
|
アプリケーションで使用するデータ |
23.3.4 DLFの属性
DLF要素で使用される様々な属性を示します。指定できる属性は各要素に1つのみです。一部の属性には推奨される属性値があります。推奨される属性の値には大/小文字の区別があります。
表23-9属性
属性のタイプ | 属性 |
---|---|
|
|
|
23.3.4.1 DLFの属性
DLFの属性について説明します。これらの属性はDLFの要素で共通です。
表23-10 DLFの属性
属性 | 説明 | 値の説明 | デフォルト値 | この属性を使用する要素 |
---|---|---|---|---|
|
文書の言語を指定します。 |
これは この属性の値は[IETFRFC4646]で定義される言語識別子です。 この属性はデータ・ロード操作に影響しません。 |
なし。存在しない場合は |
|
|
言語タグの大文字/小文字をどのように正規化するかを指定します。 |
" 意味は次のとおりです。
* 2文字の言語コードは小文字 * 2文字の国名コードは大文字 * 4文字のスクリプト・コードは単語の最初の文字を大文字 * その他は小文字
|
なし |
|
|
空白(ASCIIのスペース、タブ、改行)の処理方法を指定します。 |
値 |
|
|
|
オブジェクト名(table、column、restypeなど)を指定します。 |
文字列: |
適用外 |
|
|
データセットの列のデータ型。この属性は、データセットの XSUおよびJava Database Connectivity (JDBC)で暗黙的なデータ型変換が行われるため、TransXではこのデータ型情報に基づく独自の解析は行われません。この属性を使用して、 |
文字列: 有効値は 現行のロケールに関係なく、数値型の値の字句表示をSQL言語の構文に指定する必要があります。このSQL構文では、桁区切り記号(通常はカンマ)を使用せず、小数点区切り記号(通常はドット)を使用します。バイナリ・データ型の場合、 TransXはこの属性を次の用途に使用します。
|
適用外 |
|
|
この列のテキストまたはパラメータを変換するかどうかを示します。 |
|
|
|
|
この列またはパラメータの定数値を指定します。 |
各行のこの列の値。 |
適用外 |
|
|
この列の言語識別子を指定します。 |
言語識別子またはプレースホルダ。「%x」はルート表要素の |
適用外 |
|
|
この列に値を入力するために使用されるデータベース内の順序を指定します。 |
文字列: データベースの順序名。 |
適用外 |
|
|
この列に、別のデータの構成に使用するデータが指定されていることを示します。このデータがデータベースにロードされます。仮想列はデータベースに存在しません。これは通常、パラメータの値を問合せに指定するために使用します。仮想列を参照キー列にすることはできません。問合せを使用した仮想列では、結果は破棄されます。 |
|
|
|
|
シード・データをアップロードするときに、この列の値を更新に使用するかどうかを示します。この属性が適用されるのは、TransXが重複行を更新するモードになっている場合のみです。仮想列でこの属性を |
|
|
|
|
この列のデータの最大サイズを指定します。 |
|
なし |
|
|
|
単位。推奨される値は、文字の場合は 追加文字がある場合、2つの |
|
|
|
この列に取得されるデータのタイプを指定します。 |
リソース・タイプ。値は |
なし |
|
|
このリソース・タイプに対して、変換された文字列の長さの延長を許可する最大サイズを指定します。 |
増加率(パーセント)を表す数値。 |
|
|
|
問合せが属する列に入力する値を取得するためのSQL問合せ文を指定します。 |
SQL文。識別子の前にコロンを付けて、0(ゼロ)個以上のパラメータを指定できます。単一の値が1行で戻されます。余分な結果は破棄されます。 |
適用外 |
|
|
SQL問合せ文に使用するプレースホルダをパラメータで指定します。兄弟関係の |
文字列: 親のquery要素のtext属性に表示される識別子。 |
空の文字列 |
|
|
兄弟関係のid属性で指定された問合せのプレースホルダに関連付ける列を指定します。 |
文字列: 列名。この属性の一部となる列以外の列を指定する必要があります。 |
適用外 |
|
|
変換のキーを指定します。 |
文字列: 変換キー。値は変換ドメイン内で一意である必要があります。 |
適用外 |
|
|
変換の注意を指定します。 |
文字列: 変換の注意。 |
適用外 |
|
23.3.4.2 XML名前空間の属性
XML名前空間の属性について説明します。
表23-11 XML名前空間の属性
属性 | 説明 | 値の説明 | デフォルト値 | この属性を使用する要素 |
---|---|---|---|---|
|
空白(ASCIIのスペース、タブ、改行)の処理方法を指定します。 |
値 |
|
なし |
|
コンテンツの言語を指定します。 |
RFC 4646で定義されている言語タグ。 |
適用外 |
|
23.4 DLFの例
このトピックでは、最小のDLFドキュメント、一般的なDLFドキュメントおよびローカライズしたDLFドキュメントについて説明します。
23.4.1 最小のDLFドキュメント
最小のDLFドキュメントを示します。
例23-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>
23.4.2 一般的なDLFドキュメント
CLK_STATUS_L
表のシード・データを含むDLFドキュメントのサンプルを示します。
例23-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>
23.4.3 ローカライズしたDLFドキュメント
要素および属性のローカライゼーションの例を示します。
例23-4 DLFのローカライゼーション
<?xml version="1.0"?> <table name="table_name" xml:lang="en" 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>