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

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

トピック:

15.1 DLFの概要

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

  • 形式の検証。検証を行うことにより、変換およびロード時のエラーが減少します。

  • 使いやすさ。各データ・ファイルのキャラクタ・エンコーディングを保持してデータ・ファイルで使用する言語に対応させる必要がありません。

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

注意:

TransXは認証されたユーザーとして実行されます。データ・ファイルをレビューして、信頼されたソースからのみデータ・ファイルをロードしてください。

トピック:

関連項目:

言語識別のタグ、IETFRFC4646

15.1.1 DLFの命名規則

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

トピック:

15.1.1.1 要素と属性

このドキュメントで使用される要素と属性の命名規則について説明します。

  • 標準の英文字

  • 小文字のみ

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

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

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

15.1.1.2

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

15.1.1.3 ファイル拡張子

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

15.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属性は、列にロードする言語識別子を指定するために使用されます。

トピック:

15.2.1 DLFのツリー構造

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

表15-1に、出現回数の表記法を示します。

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

記号 意味

1

1

+

1以上

?

0 (ゼロ)または1

*

0 (ゼロ)以上

(a|b|c)

a、b、cのいずれか

例15-1に、DLFドキュメントのツリー構造を示します。要素は、「DLFの要素」で説明されています。属性は、「DLFの属性」で説明されています。

例15-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>

15.3 DLFの仕様

このトピックでは、DLFのXML宣言、エンティティ参照、要素および属性について説明します。

トピック:

15.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" ?>

15.3.2 DLFでの実体参照

XMLでは、&lt;&gt;&amp;&apos;および&quot;の5つの実体参照が事前定義されています。実体参照&lt;および&amp;は、参照する文字のかわりに使用する必要があります。

表15-2 実体参照

実体参照 意味

&lt;

より小さい(<)

&gt;

より大きい(>)

&amp;

アンパサンド(&)

&apos;

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

&quot;

二重引用符(")

15.3.3 DLFの要素

DLF要素のカテゴリについて説明します。

例15-1のDLFの要素は、表15-3に示すカテゴリに分かれています。属性は各要素に共通です。属性は、「DLFの属性」で説明されています。

表15-3 DLFの要素

要素のタイプ タグ

最上位の表要素

<table>

変換の要素

<target><restype>

検索キーの要素

<lookup-key><column>

メタデータ要素

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

データ要素

<dataset><row><col>

トピック:

15.3.3.1 最上位の表要素

最上位の表要素について説明します。

表15-4 最上位の表要素

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

<table>

単一表に対応します。ドキュメント内にある他のすべての要素を囲みます。

name

langspacenormalize-langtag

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

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

  2. <lookup-key>

  3. <columns>

  4. <dataset>

15.3.3.2 変換の要素

変換の要素について説明します。

表15-5 変換の要素

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

<translation>

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

なし

なし

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

<target>

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

なし

なし

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

<restype>

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

name

expansion

空要素

15.3.3.3 検索キーの要素

検索キーの要素について説明します。

表15-6 検索キーの要素

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

<lookup-key>

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

name

なし

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

<column>

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

name

なし

空要素

15.3.3.4 メタデータ要素

メタデータ要素について説明します。

表15-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

15.3.3.5 データ要素

データ要素は、<dataset><row>および<col>です。

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

表15-8 データ要素

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

<dataset>

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

なし

なし

1つ以上の<row>要素

<row>

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

なし

なし

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

<col>

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

name

trans-key

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

15.3.4 DLFの属性

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

表15-9 属性

属性のタイプ 属性

DLFの属性

nametypetranslateconstantsequencevirtualuseforupdatemaxsizesize-unitrestypetextidcoltrans-keytranslation-notenormalize-langtag

XML名前空間の属性

xml:space

トピック:

15.3.4.1 DLFの属性

DLFの属性について説明します。これらの属性はDLFの要素で共通です。

表15-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およびJava Database Connectivity (JDBC)で暗黙的なデータ型変換が行われるため、TransXではこのデータ型情報に基づく独自の解析は行われません。この属性を使用して、date型またはdateTime型の列に対して適切なJavaの中間データ型が選択されます。この場合、標準の日付書式が受け入れられます。

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

現行のロケールに関係なく、数値型の値の字句表示をSQL言語の構文に指定する必要があります。このSQL構文では、桁区切り記号(通常はカンマ)を使用せず、小数点区切り記号(通常はドット)を使用します。バイナリ・データ型の場合、colタグで囲まれたテキスト・フィールドに指定されたデータの値は、実際のバイナリ・データが格納されたファイルの名前を示します。RAWデータをテキスト・フィールドに埋め込むことはできません。その他のデータ型(stringdateおよびdateTime)の表示は、対応するXMLスキーマ仕様のデータ型で制約されます。簡素化のため、DLFで受け入れられるXMLスキーマの標準日付書式は、"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>

15.3.4.2 XML名前空間の属性

XML名前空間の属性について説明します。

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

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

xml:space

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

"default"または"preserve"

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

"default"

なし

xml:lang

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

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

適用外

table

15.4 DLFの例

このトピックでは、最小のDLFドキュメント、一般的なDLFドキュメントおよびローカライズしたDLFドキュメントについて説明します。

トピック:

15.4.1 最小のDLFドキュメント

最小のDLFドキュメントを示します。

例15-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>

15.4.2 一般的なDLFドキュメント

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

例15-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> 

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

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

例15-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>