B Oracle Data Integrator Driver for XMLの参照情報
この付録の内容は次のとおりです。
Oracle Data Integrator Driver for XMLの概要
Oracle Data Integrator Driver for XML(XMLドライバ)では、XMLドキュメントがJDBCデータソースとして処理されます。これにより、XMLドキュメントをOracle Data Integratorでデータ・サーバーとして使用することが可能になります。
Oracle Data Integrator Driver for XMLとともにOracle Data Integrator使用すると、XMLファイルへの変更を標準のSQL構文で実行できます。これらの操作はトランザクション内で発生し、コミットまたはロールバックが可能です。
Oracle Data Integrator driver for XMLでサポートされている機能は次のとおりです。
-
標準のSQL (Structured Query Language)構文
-
相関サブ問合せ、内部および外部結合
-
ORDER BYおよびGROUP BY
-
COUNT、SUM、MIN、MAX、AVGおよびその他のファンクション
-
標準のSQLファンクション
-
トランザクションの管理
-
参照整合性(外部キー)
-
XMLデータに対して行った変更のXMLファイルへの保存
XMLの処理の概要
XMLドライバは次のように機能します。
-
ドライバは、XMLからSQLへのマッピングを使用して、(接続時またはユーザー・リクエストに応じて)XML構造およびデータをリレーショナル・スキーマにロードします。
-
ユーザーは、通常のSQL文、またはドライバ操作用の特定のドライバ・コマンドを介してデータを操作し、リレーショナル・スキーマを使用します。
-
XMLドライバは、切断時またはユーザー・リクエストに応じて、スキーマに格納されているデータおよび構造を元のXMLファイルに同期化します。
XMLからSQLへのマッピング
XMLからSQLへのマッピングは複雑なプロセスで、階層構造(XML)をリレーショナル構造(スキーマ)にマップするために使用されます。このマッピングは自動的に行われます。
要素および属性のマッピング
XMLドライバでは、XMLの要素および属性が次のようにマップされます。
-
要素は、同じ名前の表としてマップされます。
-
属性は、属性と似た名前の列としてマップされます。各列は、属性の要素を表す表内に作成されます。
階層および順序のマッピング
次のように、リレーショナル構造には追加のデータが表示されます。
-
XML要素の階層、または要素間の1対多関係をマップするために、要素に対応するそれぞれの表には、XMLドライバによって次のような追加の列が生成されます。
-
<element_name>PK
: 要素を識別するための列です。 -
<parent_element_name>FK
: 階層内で現在の要素を親とリンクするための列です。親要素の<element_name>PK
値と一致する値が含まれます。XML再帰の場合、親要素または親要素の祖先を同じ表に配置できます。
-
-
XMLファイルの要素とは異なり、(特定の列を使用して順序を定義していないかぎり)表のレコードは順序付けされません。要素の順序を保持するために、ドライバでは
<element_name>ORDER
という名前の列も生成されます。リレーショナル・スキーマに新しい行を追加する場合は、親要素の下に要素が正しく順序付けされるように、ORDER列が正しく設定されていることを確認してください。 -
階層のルートは、ルート要素と同じ名前のルート表によって識別されます。この表には、次の列を持つ単一のレコードが含まれます。
-
<root_element_name>PK
: レベル1のすべてのサブ要素は、このPKエントリを参照します。 -
SNPSFILENAME
: この列には、このスキーマにロードされたXMLファイルの名前が含まれます。 -
SNPSFILEPATH
: この列には、XMLファイルのパスが含まれます。 -
SNPSLOADDATE
: この列には、ファイルがスキーマにロードされた日時が含まれます。
この表の値はドライバによって管理されるため、変更しないでください。
-
マッピング例外
この項では、追加のデータのマッピングに関する特定の状況について説明します。
-
#PCDATA
のみを含む要素は、表としてはマップされず、それぞれの親要素を表す表の列としてマップされます。これらの列は、<element_name>_DATA
という名前になります。 -
リスト属性は、リンク(PK、FK)を含む新しい表として、リストが含まれている要素を表す表にマップされます。
-
表名または列名とSQL予約キーワードとの間の名前の競合を回避するために、SQL予約キーワードと名前が一致するXML要素および属性の名前は、リレーショナル構造内で自動的に変更されます(名前の後にアンダースコアが追加されます)。たとえば、
SELECT
という名前の要素はSELECT_
という名前の表にマップされます。同期化操作の実行時には、これらの要素が元の名前でXMLファイルにリストアされます。
ドライバによって作成される追加のオブジェクトは、XMLファイルの整合性を保つために使用されます。XMLファイルと同期化させるには、これらのレコードをリレーショナル・スキーマにロードする必要があります。
XML名前空間
XMLドライバでは、XMLの属性および要素に対して指定されるXML名前空間(xmlns:
)がサポートされています。
構文<namespace>:<element or attribute name>
を使用して名前空間とともに指定された要素または属性は、構文<namespace>_<element or attribute name>
を使用して、名前空間を接頭辞とする表または列としてマップされます。XMLデータを元のファイルに同期化する際には、名前空間の情報が自動的に生成されます。
注意:
v3モードでは、表名に接頭辞の<namespace>_
が付きません。
スキーマの管理
スキーマは、一連のリレーショナル表を保持するコンテナであり、Oracleデータベースおよび他のRDBMシステムで使用される概念に対応します。各スキーマは、一連のXMLファイル・インスタンス全体を正常に解析して抽出できる、1つの汎用リレーショナル構造です。識別された要素および属性は、適切なリレーショナル表およびフィールドに挿入されます。
このスキーマは、XMLドライバによって、XMLインスタンス・ファイル、DTDファイルまたはXSDファイルから生成されます。DTDまたはXSDファイルからスキーマを生成することをお薦めします。
XMLデータ・サーバーURLの定義で参照できるのは、単一のDTDまたはXSDファイルのみです。そのため、アーティファクトに他のDTDまたはXSDファイルへの参照が含まれる場合は、このDTDまたはXSDがマスターDTDまたはXSDファイルとみなされます。状況によっては、複数のスキーマが必要になる可能性があります。その場合は、add_schema_bundle
プロパティを使用してください。
スキーマの格納
スキーマは、組込みエンジンまたは外部データベースに格納できます。
-
組込みエンジンの場合、その他のコンポーネントを実行する必要はありません。XMLスキーマはドライバ内のメモリーに格納されます。このドライバで使用できるSQLコマンドおよびファンクションの詳細は、「SQL構文」を参照してください。
-
外部データベースとして、リレーショナル・データベース管理システムを使用できます。ドライバは、JDBCを介してこのエンジンに接続し、スキーマの格納に使用します。これによって、次のことが可能になります。
-
RDBMSエンジンの処理および格納能力の利用
-
RDBMSの文およびファンクションの利用
-
スキーマの格納の持続
詳細は、「外部データベースを使用したデータの格納」を参照してください。
-
複数のスキーマ
同じJDBC接続で、複数のスキーマを処理して複数のXMLファイルに同時にロードできます。スキーマのCREATE、TRUNCATE、SETおよびLOAD FILE INTO操作を実行できます。JDBCドライバに接続すると、URLで指定されたスキーマに接続します。SET SCHEMAコマンドを使用すると、現在のスキーマを別のスキーマに設定できます。詳細は、「ドライバ・コマンドの詳細」を参照してください。
デフォルト・スキーマは、一時データの格納に使用される特定のスキーマです。デフォルト・スキーマは読取り専用で、XMLファイルの格納には使用できません。各XMLファイルに対して1つのスキーマを作成することをお薦めします。
ドライバへの接続の作成時に、XML構造が異なる追加のスキーマを自動的に作成することもできます。詳細は、ドライバの構成を参照してください。
スキーマ内のデータへのアクセス
スキーマ内のデータはSQL言語を使用して処理されます。
現在のスキーマとは別のスキーマ内の表にアクセスできます。別のスキーマの表にアクセスするには、表名の先頭にスキーマ名およびピリオド(.
)を付けます。次に例を示します。
SELECT col1, schema2.table2.col2, table1.col3 FROM table1, schema2.table2.
この問合せでは、現在のスキーマのtable1、およびschema2のtable2からデータが戻されます。
注意:
他方のスキーマも現在のスキーマと同じ記憶領域(組込みエンジンまたは外部データベース)に格納されている必要があります。
大/小文字の区別
スキーマでは大/小文字を区別できません。スキーマ内の要素(表および列)は、すべて大文字で表記されます。XMLファイルの要素名に小文字が含まれている場合、これらの文字は大文字に変換されます。要素がXMLファイルに同期化される際には、これらの名前が元の大/小文字を使用して作成されます。
ロード/同期化
通常、スキーマはXMLファイルへの接続時に自動的に作成され、XMLファイルに含まれているデータとともにロードされます。特定のドライバ・コマンドを使用して、スキーマの作成およびスキーマ内のデータ・ロードを強制的に実行できます。詳細は、「ドライバ・コマンドの詳細」を参照してください。データの同期化プロセスも、SYNCHRONIZE
コマンドを使用して強制的に実行できます。詳細は、「SYNCHRONIZE」を参照してください。
ロック
ドライバは、XMLファイルにアクセスする際にファイルをロックして、他のドライバ・インスタンスがそのファイルに接続するのを防ぎます。ロック・ファイルの名前はXMLファイルと同じですが、拡張子.lck
が使用されます。
ドライバが不正に切断された場合、ファイルがロックされたままになることがあります。このロックを削除するには、.lck
ファイルを削除します。UNLOCK FILEコマンドを使用して、XMLファイルのロックを解除することもできます。
XMLスキーマ(XSD)のサポート
XMLドライバでは、XMLファイルの構造を記述するためにXSDがサポートされています。詳細は、「サポートされているXMLスキーマの機能」を参照してください。
また、XMLドライバでは、XMLファイル内で指定されたXSDスキーマに対するドキュメントの検証もサポートされています。この操作は、ドライバ固有のVALIDATEコマンドでも実行できます。
インストールおよび構成
Oracle Data Integrator driver for XMLは、Oracle Data Integratorとともに自動的にインストールされます。次の各項では、拡張構成の説明および参照情報を示します。
この項では、次の項目について説明します。
注意:
外部データベース記憶域を使用する場合は、さらに、外部データベースへの接続に使用するJDBCドライバおよび.
properties
ファイルをクラスパスに含めておく必要があります。
ドライバの構成
この項ではドライバの構成について説明します。
-
ドライバ名:
com.sunopsis.jdbc.driver.xml.SnpsXmlDriver
-
URL構文:
jdbc:snps:xml
プロパティ表に入力されるプロパティを表B-1で説明します。
表B-1 ドライバのプロパティ
プロパティ | デフォルト値 | 必須 | 説明 |
---|---|---|---|
blank_attribute_as_column |
False |
いいえ |
このプロパティをtrueに設定した場合、自身の子要素を持たないXMLファイルの空の要素は、表ではなく列とみなされます。 |
file |
- |
はい |
XMLファイル名。パス名には、バックスラッシュ"\"ではなくスラッシュ"/"を使用します。HTTP、FTPまたはファイルのURLを使用してファイルの場所を示すことができます。URLによって示されたファイルは読取り専用です。 XMLファイルの場合、このプロパティが欠落していると、XMLドライバによってリレーショナル・スキーマがDTD/XSDファイルに基づいて作成され、XMLファイルの検索は行われません。 |
dtd |
- |
いいえ |
記述ファイル。このファイルはDTDまたはXSDファイルです。HTTP、FTPまたはファイルのURLを使用してファイルの場所を示すことができます。URLによって示されたファイルは読取り専用です。 URLで指定されているDTDまたはXSDファイルは、XMLファイル内で指定されているDTDまたはXSDファイルより優先されます。参照は、絶対パスを使用して作成する必要があります。 XMLファイルに関してこのプロパティが欠落しており、XMLファイル内でもDTDまたはXSDが参照されていない場合、ドライバでは、XMLファイルに似た名前に拡張子 generate_dtd URLプロパティの設定によっては、DTDファイルがXMLファイル構造に基づいて作成される場合があります。 DTDまたはXSDファイルが存在しない場合、リレーショナル構造はXMLファイルの内容のみを使用して構築されます。DTDまたはXSDに記述されている使用可能な要素が1つのXMLファイル・インスタンスにすべて含まれていないことで、データ・モデルが不完全になる可能性があるため、このような構造からデータ・モデルをリバース・エンジニアリングすることはお薦めしません。 |
root_elt |
- |
いいえ |
スキーマのルート表として選択する要素の名前。この値では大/小文字が区別されます。このプロパティは、WSDLファイルから特定のメッセージ定義をリバース・エンジニアリングする場合や、使用可能なルート要素がXSDファイル内に複数存在する場合などに使用できます。 重要: このプロパティは、XMLインスタンス・ファイルのルート要素のルート要素定義として機能する、XSDまたはDTDファイルの要素の指定のみに使用されます。 |
read_only |
False |
いいえ |
XMLファイルを読取り専用モードで開きます。 |
schema |
- |
いいえ |
リレーショナル・スキーマおよびXMLデータを格納するデータベース・スキーマです。XMLファイルのロード先となるスキーマの名前。このプロパティが欠落している場合は、XMLファイル名に基づいて、スキーマ名が自動的に生成されます。 XMLデータ・サーバーのURLでこのプロパティが指定されていない場合は、XMLドライバによってスキーマ名が自動的に作成されます。このスキーマの名前として、XMLファイル名の最初の5文字が使用されます。 注意: スキーマへの接続を複数作成することはできません。すでに使用中のスキーマに接続しようとした場合、後続の接続は失敗します。 重要: スキーマ名は大文字で指定する必要があります。 重要: XML要素名と同じスキーマ名を使用することは禁止されています。 |
standalone |
False |
いいえ |
このオプションをtrueに設定すると、この接続のスキーマは、他のすべてのスキーマから完全に分離されます。このオプションでは、各スキーマを分離したまま複数の接続に対して同じスキーマ名を指定できます。このオプションを使用すると、このスキーマの表に他のスキーマからアクセスできません。また、この接続で他のスキーマの表にもアクセスできません。スキーマは、この接続のみに制限されます。他の接続ではこのスキーマを認識できません。このオプションはインメモリーHSQL中間データベースに対してのみアクティブです。このオプションを使用すると、すべてのステージング・スキーマに対してまったく新しいHSQLインスタンスがインメモリーに作成されるため、エージェントによるメモリー消費が増えます。同じトポロジを持つ複数のパラレル・ジョブで、ジョブが相互に重複することを回避するのに役立ちます。注意: このオプションは、外部データベースを使用する場合には適用できません。データ・サーバーの「スタンドアロン」プロパティがtrueに設定されている場合、データを格納してから書き出すためのターゲット・データストアとして使用することはできません。その理由は、「スタンドアロン」インスタンスが完全に分離されるためです。 注意: 「スタンドアロン」プロパティは、次の場合に使用できます。
|
ns_prefix_generation |
auto |
いいえ |
このオプションは、名前空間接頭辞の生成方法およびXMLファイルへの書込み方法を定義します。
xsdオプション値は、複数のXSDファイルで異なる名前空間を参照するために、類似した接頭辞が使用されていないことを前提としています。 |
no_default_ns |
False |
いいえ |
このプロパティをtrueに設定すると、デフォルトの名前空間エントリがないターゲット・ファイルが生成されます。 |
no_closing_tags |
False |
いいえ |
このプロパティをtrueに設定すると、終了タグのない空のタグが生成されます(例: <element/>)。falseに設定すると、空の要素が<element></element>のように生成されます。v1_compatibilityプロパティを使用している場合、このプロパティはデフォルトでtrueになります。 |
db_props |
- |
いいえ |
このプロパティは、メモリー・エンジンのかわりに外部データベースを使用してスキーマを格納するために使用します。 db_propsプロパティは、db_propsプロパティと似た名前で拡張子が |
load_data_on_connect |
True |
いいえ |
JDBC接続の実行時に、スキーマにデータを自動的にロードします。falseに設定した場合は、接続後にSYNCHRONIZE文を使用してデータをロードする必要があります。 このオプションは、すべてのデータをロードせずに接続をテストしたりメタデータを参照するのに役立ちます。 |
drop_on_disconnect |
False |
いいえ |
JDBC接続を閉じる際に、スキーマを自動的にドロップします。 trueの場合、スキーマは組込みエンジンに格納され、常にドロップされます。 trueで、かつ、データが外部データベースにある場合、メモリー内のスキーマへの現在の参照のみがドロップされ、表は外部データベースに残ります。このことは、このスキーマに再度接続しようとすると、(データがメモリーにロードされるときのように)最初から開始するのではなく、外部データベース内の表が再利用されることを意味します。 |
ignore_unknown_elements |
True |
いいえ |
関連付けられているDTD (Document Type Definition)またはXSD (XMLスキーマ定義)ファイルには存在しないXMLファイルの要素をすべて無視します。 |
useimplicitmaxvalue |
False |
いいえ |
このプロパティをtrueに設定した場合、XSDでmaxOccursが指定されていない要素は、maxOccurs ="unbounded"とみなされます。それ以外の場合、maxOccursが指定されていない要素はmaxOccurs=1とみなされます。 |
generate_dtd |
auto |
いいえ |
XMLファイルの構造に基づいてDTDファイルを作成する必要があるかどうかを定義します。
警告: このオプションを使用して作成されたDTDファイルには、XMLファイルに出現するXML要素の定義のみが含まれるため、完全でない可能性があります。 |
java_encoding |
UTF8 |
いいえ |
ターゲット・ファイルのエンコーディング(例: Javaエンコーディングを指定する場合は、XMLエンコーディングも指定する必要があります。 |
useimplicitmaxvalue |
False |
いいえ |
このプロパティをyesに設定した場合、XSDでmaxOccursが指定されていない要素は、複数値(maxOccurs ="unbounded")とみなされます。 |
xml_encoding |
UTF8 |
いいえ |
生成されたXMLファイル内に、 XMLエンコーディングを指定する場合は、Javaエンコーディングも指定する必要があります。 |
v1_compatibility |
False |
いいえ |
このプロパティをtrueに設定すると、XMLからSQLへのマッピングがバージョン1.xのように実行されます。このプロパティは互換性のために提供されています。 |
compat_mode |
v3 |
いいえ |
マッピング・モードとの互換性を示します。このプロパティに指定できる値は次のとおりです。
|
numeric_ids |
True |
いいえ |
trueに設定すると、すべての内部の主キーおよび外部キーがNUMERIC型になります。それ以外の場合はVARCHAR型になります。 |
id_length |
- |
いいえ |
内部の主キーおよび外部キーの列の長さ。デフォルトは、列型がNUMERICの場合は10、VARCHARの場合は30です。 |
no_batch_update |
False |
いいえ |
この接続にはバッチ更新は使用されません。バッチ更新を設定するコマンドは送信されません。これにより、このJDBC機能をサポートしていない外部データベースに関するエラーの発生を回避し、バッチ更新の使用に関するエラーをデバッグできます。 |
add_schema_bundle |
- |
いいえ |
追加のスキーマ・バンドル・ファイル。このプロパティは、接続時に追加のスキーマを作成する必要があることを示します。これらの追加のスキーマに関する記述は、add_schema_bundleプロパティに拡張子.propertiesが付いた名前の追加のスキーマ・プロパティ・ファイルに含まれます。追加のスキーマ・プロパティ・ファイルには、有効なJDBCドライバのURLのリストが含まれます。このファイルでは、プロパティ名は無視されます。値のリストのみが考慮されます。 これらの追加のスキーマはすべて、drop_on_disconnectオプションがデフォルトでtrueに設定された状態で作成されます。 追加のスキーマ・プロパティ・ファイルの内容は、たとえば次のようになります。
|
add_schema_path |
- |
いいえ |
一連のXSDファイルを含むディレクトリ。このディレクトリの各XSDファイルに対し、そのXSDに基づいて組込みエンジンまたは外部データベース記憶域に追加のスキーマが作成されます。これらの追加のスキーマに対するオブジェクトは、外部データベース記憶域には作成されません。スキーマ名は、生成されるデフォルト名です(ファイル名の最初の5文字を大文字で表記)。 注意: このオプションはv3モードではサポートされていません。 |
transform_nonascii |
True |
いいえ |
非ASCIIを変換します。非ASCII文字を保持するにはfalseに設定します。 |
max_table_name_length |
- |
いいえ |
表名の最大長(内部/外部DBでサポートされている値に無関係)。 |
max_column_name_length |
- |
いいえ |
列名の最大長(内部/外部DBでサポートされている値に無関係)。 |
case_sens |
True |
いいえ |
表名および列名で大文字と小文字が区別されるかどうかを示します。名前比較はこれに基づいて実行されます。 |
default_length_varchar |
255 |
いいえ |
XMLアノテーションおよびドキュメント要素の格納に使用されるVARCHAR列のデフォルトの長さを示します。 |
default_type_varchar |
False |
いいえ |
このプロパティをtrueに設定すると、デフォルトのデータ型がサイズ255のVARCHARになり、falseに設定するとLONGデータ型が使用されます。 |
pipeline_config_file |
- |
- |
前/後処理の構成ファイル。 |
複数のスキーマの自動作成
ドライバへの接続の作成時に、XML構造が異なる追加のスキーマを自動的に作成できます。これは、次の方法で実行します。
-
add_schema_bundle URLプロパティで、作成する別の追加スキーマに対応するJDBC URLのリストが含まれているプロパティ・ファイルを宣言します。
-
add_schema_path URLプロパティで、一連のXSDファイルが含まれているディレクトリを宣言します。各XSDファイルに対して、XMLスキーマの記述に基づいて追加のスキーマが組込みエンジン内に作成されます。
-
追加の有効なドライバURLをaddschema_X (Xは数字)という名前のJDBCプロパティとして指定します。addschema_XというJDBCプロパティで検出されたURLごとに、追加のスキーマが作成されます。
これらのすべての追加スキーマは、最後の接続が閉じられると自動的にドロップされます。
外部データベースを使用したデータの格納
ほとんどの場合、XMLドライバでは、XMLスキーマのリレーショナル・スキーマ・マッピングを組込みエンジンに格納します。リレーショナル・スキーマを外部リレーショナル・データベースに格納することもできます。
注意:
メモリー内エンジンの使用はベスト・プラクティスではなく、複合ファイル・テクノロジを使用したときに問題が発生する場合があります。
エラーの原因: メモリー内HSQLを本番で使用することはお薦めしません。ODIの範囲を超えてメモリー・リークが発生し、最終的にJVMが停止します。開発のみでの使用を対象としています。Oracle、MySQL、MS SQLServerなどの外部DBに切り替えることをお薦めします。
次の場合は、外部記憶域を使用します。
-
XMLドライバによって導出されたリレーショナル・スキーマに、XMLドライバを使用して、大規模XMLファイルをロードする場合
-
XMLドライバの組込みエンジンによるファイルの処理に要する時間全体を短縮する場合
-
ODIリポジトリへのタイムアウトを防ぐため。XMLファイルの処理に要する時間は、次の点により異なります。
-
XMLファイル構造の複雑さ
-
XMLファイルの内容の長さ
-
ホスト・サーバーのRAMリソース
-
ホスト・サーバーのCPUリソース
-
外部記憶域を使用する前に、外部記憶域の使用による影響を理解していること、およびODIのタイムアウトを、パフォーマンスの要件を満たす値に増加したことを確認してください。
注意:
外部記憶域用にサポートされるRDBMSには、Oracle、Microsoft SQL Server、MySQLおよびHypersonic SQL 2.0などがあります。外部記憶域がサポートされるテクノロジの完全なリストには、次のOracle Technical Network (OTN)からアクセスできます。
http://www.oracle.com/technetwork/middleware/data-integrator/documentation/index.html。
これらのスキーマは、JDBCドライバのURLで指定されているプロパティを使用して作成されるスキーマに加えて作成されます。
外部記憶域は、表B-2に示す一連のプロパティで構成されます。これらのプロパティは、次の複数の方法で渡すことができます。
ドライバURLでのプロパティの受渡し
プロパティは、表B-2に示すようにプロパティ表で直接設定できます。
ODI Studioでのプロパティの設定
プロパティは、トポロジ・ナビゲータの「JDBC」タブの「JDBC URL」の下に表示される「プロパティ」表で指定できます。プロパティは、表B-2に示すようにプロパティ表で直接設定できます。
プロパティ・ファイルでのプロパティの設定
外部データベース・プロパティ・ファイルでプロパティを設定できます。プロパティ・バンドルとも呼ばれるこのプロパティ・ファイルは、.properties
という拡張子を持つテキスト・ファイルであり、このファイルの各行に<property>=<value>
のペアが含まれています。この外部データベースのプロパティ・ファイルには、リレーショナル・データベース・スキーマへのJDBC接続のプロパティが含まれます。このプロパティ・ファイルは、JDBC URLのdb_props
プロパティを使用して参照されます。この方法を使用する場合は、次のことに注意してください。
-
プロパティ・ファイルのプロパティには接頭辞は付けず、表B-2に示すように使用します。
-
db_props
プロパティは.properties
拡張子を含むプロパティ・ファイルの名前に設定します。db_props
プロパティは、外部データベース・プロパティ・ファイルに接続情報が格納されているデータベース・スキーマに、スキーマをロードする必要があることを示します。 -
プロパティ・ファイルはXML接続を使用してエージェントによってデプロイする必要があります。プロパティ・ファイルの場所は、使用するエージェントによって異なります。
-
ローカル・エージェント(Studio): 外部DBプロパティ・ファイルを
<user.dir>/odi/oracledi/userlib
フォルダに配置します。 -
スタンドアロン・エージェント: 外部DBプロパティ・ファイルを
domain_home/lib
フォルダに配置します。 -
JavaEEエージェント: 外部DBプロパティ・ファイルをJARまたはZIPファイルに圧縮し、Java EEエージェントによって生成されたテンプレートに追加する必要があります。詳細は、『Oracle Data Integratorの管理』のJava EEアプリケーション・サーバー(Oracle WebLogic Server)でのエージェントのデプロイに関する項を参照してください。
-
-
プロパティ・ファイルをXMLドライバを使用するOracle Data Integratorのクラスパスに設定する必要があります。通常、このファイルはカスタム・ドライバでインストールできます。
注意:
XMLドライバでは、外部データベースへの接続時にJDBC接続が使用されます。この外部データベースにアクセスするためのJDBCドライバも、必ずODIクラスパスに配置してください。
外部データベースのプロパティをURLで設定またはオーバーライドできます。ファイルをオーバーライドするには、URLの下のプロパティ表を使用します。次に例を示します。
jdbc:snps:xml?file=/temp/payload.xml&dp_driver=<external_db_driver>&dp_url=<external_db_url>
外部記憶域を構成するためのプロパティを、表B-2に示します。
表B-2 外部データベース・プロパティ・ファイルのプロパティ
プロパティ | デフォルト値 | 必須 | 説明 |
---|---|---|---|
dp_driver |
- |
はい |
JDBCドライバ名。 重要: ドライバ・クラス・ファイルをjavaアプリケーションのクラスパスに配置する必要があります。 |
dp_url |
- |
はい |
JDBC URL |
dp_user |
- |
はい |
データベースへの接続に使用するログイン。 |
dp_password |
- |
はい |
暗号化されたユーザー・パスワード。 注意: パスワードを暗号化するには、 |
dp_schema |
- |
はい |
リレーショナル・スキーマおよびXMLデータを格納するデータベース・スキーマ。 MS SQLServerについて、次のことに注意してください。
v3モード使用時の制限: 外部データベースの使用時は、提供されたスキーマ名か、計算されたスキーマ名が存在することを確認してください。 |
dp_catalog |
- |
はい |
Microsoft SQL Server専用です。XMLのデータおよび情報を格納するデータベース・カタログです。 |
dp_drop_on_connect |
False |
いいえ |
すでに存在する場合、データベース・スキーマから表をドロップします。Nに設定すると、既存の表が保持されます。 |
dp_create_tables |
auto |
いいえ |
Y: 一貫してスキーマに表を作成します。 N: 状況にかかわらずスキーマに表を作成しません AUTO: 表が存在しない場合は、表を作成します。 |
dp_create_indexes |
True |
いいえ |
Y: 表のPKおよびFKに索引を作成します。 N: 索引を作成しません。この値によって、INSERTは速くなりますが、データのSELECTは大幅に遅くなります。RDBの記憶域も節約されます。 |
dp_numeric_scale |
- |
いいえ |
XMLからSQLへのマッピング時に生成される数値列のスケール。 |
dp_truncate_before_load |
True |
いいえ |
True: 接続時にすべてのデータを切り捨てます。 False: 既存のデータを保持します。 |
dp_ids_in_db |
True |
いいえ |
True: 将来接続を追加するために、データベース内の識別子(カウンタ)を保持します。 False: 識別子を保持しません。以後、追加することはできません。 |
dp_drop_tables_on_drop_schema |
True |
いいえ |
True: DROP SCHEMAによって、データベース・スキーマへの参照がドライバから消去され、さらに、すべての表がドロップされます。 False: DROP SCHEMAによって、データベース・スキーマへの参照がドライバから消去されますが、表はデータベース・スキーマ内に保持されます。 |
dp_use_prepared_statements |
True |
いいえ |
True: データベース接続でプリペアド文を使用して、ドライバ操作(ファイルのロード/アンロード)が実行されます。 False: プリペアド文を使用しません。 通常、プリペアド文を使用した方が処理は速くなります。このオプションを使用するには、データベースおよびドライバで、プリペアド文がサポートされている必要があります。 |
dp_use_batch_update |
True |
いいえ |
True: データベース接続でバッチ更新を使用します。 False: バッチ更新を使用しません。 通常、データの挿入はバッチ更新を使用した方が速くなります。次の条件が満たされている場合にのみtrueに設定してください。
注意: ここで指定したバッチ更新オプションは、スキーマ内のデータのロードのみに使用されます。スキーマ内のデータの操作にバッチ更新を使用するには、使用するJavaアプリケーションでバッチ更新オプションを指定する必要があります。 |
dp_batch_update_size |
30 |
いいえ |
バッチ更新のサイズ。use_batch_updateプロパティがtrueに設定されている場合は、このサイズのバッチ単位でレコードがデータベース・スキーマに書き込まれます。 |
dp_commit_periodically |
True |
いいえ |
XMLファイルからデータベース・スキーマへデータをロードする際に、定期的にCOMMITが送信されます。定期的にCOMMITを送信することで、大きいXMLデータ・ファイルをロードする際のデータベース・ログの過負荷を防ぎます。 次の条件が満たされている場合にのみtrueに設定してください。
注意: ここで指定したコミット・オプションは、スキーマ内のデータのロードのみに使用されます。スキーマでトランザクションを実行する際にコミットするには、使用するJavaアプリケーションでコミットを指定する必要があります。 |
dp_num_inserts_before_commit |
1000 |
いいえ |
commit_periodicallyプロパティがtrueに設定されている場合のCOMMITの間隔(レコード数)。 |
dp_reserve_chars_for_column |
3 |
いいえ |
長いXML名は、JDBCドライバによって戻される列名の最大許容サイズに従って、RDBMSの最大許容サイズにあうように切り捨てられます。 ただし、状況によっては、より少ない文字数を使用して、ドライバで生成される名前を短くする必要があります。減らす文字の数は、reserve_chars_for_column値で定義されます。 たとえば、最大30文字のデータベースでこのプロパティを3(デフォルト)に設定すると、すべての列名が27文字以下になります。 |
dp_reserve_chars_for_table |
3 |
いいえ |
reserve_chars_for_column (rcfc)と同じですが、RDBMSスキーマに作成された表の名前に適用されます。 |
dp_varchar_length |
255 |
いいえ |
文字列データの格納に使用されるリレーショナル構造のすべての列のサイズ。 このプロパティは、注釈要素やドキュメント要素には適用されません。これらの要素には、かわりにdp_default_length_varcharプロパティを使用してください。 |
dp_default_type_varchar |
N |
いいえ |
Yesに設定すると、XML注釈要素およびドキュメント要素を格納する列のリレーショナル・スキーマで使用されるデフォルトのデータ型は、サイズ255のVARCHARとなります。この列の長さはdp_default_length_varcharプロパティを使用して指定します。falseに設定すると、LONGデータ型となります(使用されている場合)。Oracleなどの、同じ表内で複数のLONG列がサポートされていないテクノロジでは、このプロパティをyesに設定する必要があります。 |
dp_default_length_varchar |
255 |
いいえ |
XMLアノテーションおよびドキュメント要素の格納に使用されるVARCHAR列のデフォルトの長さ。このプロパティは、dp_default_type_varcharプロパティが「yes」に設定されている場合にのみ有効です。 次に例を示します。
|
dp_numeric_length |
10 |
いいえ |
数値データの格納に使用されるリレーショナル構造のすべての列のサイズ。 |
dp_unicode |
False |
いいえ |
MS SQL Serverの場合: unicode = trueの場合はNVARCHARが使用されます。 unicode = falseまたは未設定の場合は、VARCHARが使用されます。 |
dp_multi_user_safe |
False |
いいえ |
これを使用して、行IDの生成方法を制御します。multi_user_safeをtrueに設定した場合、各ID生成のタスクはDBに割り当てられます。falseに設定した場合、データ・ロードの開始時に、ID表に格納されているIDが取得され、格納されたそのデータがメモリー内に移されます。これは、データ・ロードの終了時にDBにプッシュされます。 |
次のサンプルは、Oracle Databaseを外部記憶域として使用した場合のプロパティ・ファイルの例です。
driver=oracle.jdbc.OracleDriver url=jdbc:oracle:thin:@HOST:PORT:SID user=USER_NAME password=ENCODED_PASSWORD schema=USER_NAME drop_on_connect=Y create_tables=AUTO create_indexes=Y truncate_before_load=Y ids_in_db=Y drop_tables_on_drop_schema=Y use_prepared_statements=Y use_batch_update=Y batch_update_size=30 commit_periodically=Y num_inserts_before_commit=1000 reserve_chars_for_column=3 reserve_chars_for_table=3
次のサンプルは、Microsoft SQL Serverデータベースを外部記憶域として使用した場合のプロパティ・ファイルの例です。
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver url=jdbc:microsoft:sqlserver://SERVER_NAME:PORT;SelectMethod=cursor user=USER_NAME password=ENCODED_PASSWORD schema=OWNNER_NAME drop_on_connect=Y create_tables=AUTO create_indexes=Y truncate_before_load=Y ids_in_db=Y drop_tables_on_drop_schema=Y use_prepared_statements=Y use_batch_update=Y batch_update_size=30 commit_periodically=Y num_inserts_before_commit=1000 reserve_chars_for_column=3 reserve_chars_for_table=3
ドライバ・コマンドの詳細
注意:
これらのコマンド内のSCHEMAという語は、物理アーキテクチャに存在するXMLドライバ・データ・サーバーURLでs=....
を使用して設定されている文字列値を表します。
この項に示す文はXMLドライバ固有のものであり、XMLファイルおよびスキーマの管理を可能にします。これらの文は、XMLドライバへのJDBC接続で、標準のSQL文として起動できます。
スキーマに格納されているデータを操作するには、標準のSQL構文を使用できます。この構文は、組込みエンジンのSQL構文、または使用する外部データベース・エンジンのSQL構文です。
表記規則
このマニュアルでは次の表記規則を使用します。
-
[ A ]は、Aがオプションであることを意味します。
-
[ A | B ]は、AまたはBだがパラメータがオプションであることを意味します。
-
{ B | C }は、BまたはCを使用する必要があることを意味します。
-
[A] [B]は、順序付けされていない一連の引数を意味します。
-
( および )は、記号「(」および「)」を意味します。
-
キーワードは大文字です。
この項では、次のドライバ固有のコマンドについて説明します。
CREATE FILE
EMPTYオプションが指定されている場合、関連するXSDまたはDTDファイルに存在するすべての要素(オプションの要素を含む)が含まれる空のXMLインスタンス・ファイルを作成します。ただし、これらのファイルで宣言されているXML属性は、作成されたXMLインスタンス・ファイルでは参照されません。
これらの属性の処理方法は、compat_mode
v1/v2とv3では異なります。v1/v2モードでは属性は書き出されませんが、v3モードでは属性も書き出されます。
CREATE [EMPTY] FILE <file_name> [FROM SCHEMA <schema_name>] [JAVA_ENCODING <java_encoding> XML_ENCODING <xml_encoding>] [NO_CLOSING_TAGS] [NO_DEFAULT_NS]
パラメータ
- FROM SCHEMA
-
XMLファイルへのデータの書込みに使用するスキーマを指定します。
- JAVA_ENCODING
-
生成されるファイルのエンコーディング。
- XML_ENCODING
-
ファイルのxmlタグで生成されるエンコーディング。
生成されるタグの例:
<?xml version="1.0" encoding="ISO-8859-1"?>
JavaおよびXMLのエンコーディングは、常に一緒に指定する必要があります。
- NO_CLOSING_TAGS
-
このパラメータを指定すると、終了タグのある空のタグが生成されます。デフォルトでは、
<element></element>
として空の要素が生成されます。no_closing_tagsパラメータでは、<element/>
が生成されます。 - NO_DEFAULT_NS
-
このパラメータを指定すると、デフォルトの名前空間エントリがないターゲット・ファイルが生成されます。
備考
-
ファイル名にスペースが含まれる場合は、名前を二重引用符で囲んでください。
-
エンコーディング値には特殊文字が含まれている可能性があるため、値を二重引用符で囲んでください。
CREATE FOREIGNKEYS
データベースのリレーショナル・スキーマの表を結合するすべての外部キーを物理的に作成します。このコマンドは、スキーマで整合性制約を強制するのに役立ちます。
注意:
要求されると、ドライバは、常に、リレーショナル構造マッピングに対応する仮想外部キーを戻します。データベース・レベルで強制された実際の外部キーは戻しません。
CREATE FOREIGNKEYS
備考
CREATE FOREIGNKEYSを使用すると、それ以後LOAD FILEを実行できなくなります。
CREATE XMLFILE
デフォルトのスキーマ・データまたは特定のスキーマから、<file_name>というXMLファイルを生成します。
CREATE XMLFILE <file_name> [FROM SCHEMA <schema_name>] [JAVA_ENCODING <java_encoding> XML_ENCODING <xml_encoding>] [NO_CLOSING_TAGS][NO_DEFAULT_NS]
パラメータ
- FROM SCHEMA
-
XMLファイルへのデータの書込みに使用するスキーマを指定します。
- JAVA_ENCODING
-
生成されるファイルのエンコーディング。
- XML_ENCODING
-
ファイルのxmlタグで生成されるエンコーディング。生成されるタグの例:
<?xml version="1.0" encoding="ISO-8859-1"?>
JavaおよびXMLのエンコーディングは、常に一緒に指定する必要があります。
- NO_CLOSING_TAGS
-
このパラメータを指定すると、終了タグのある空のタグが生成されます。デフォルトでは、
<element></element>
として空の要素が生成されます。no_closing_tagsパラメータでは、<element/>
が生成されます。 - NO_DEFAULT_NS
-
このパラメータを指定すると、デフォルトの名前空間エントリがないターゲット・ファイルが生成されます。
備考
-
ファイル名にスペースが含まれる場合は、名前を二重引用符で囲んでください。
-
エンコーディング値には特殊文字が含まれている可能性があるため、値を二重引用符で囲んでください。
CREATE SCHEMA
<schema_name>
に、空のスキーマ、または<dtd/xsd_name>
として指定された記述ファイルの構造をマップする表のスキーマを作成します。
注意:
このコマンドは、外部データベースでは使用できません。
CREATE SCHEMA <schema_name> [WITH DTD <dtd/xsd_name>] [REPLACE] [ROOTELT <root element>] [READONLY] [COMPAT_MODE <compatibility mode>] [JAVA_ENCODING <java_encoding> XML_ENCODING <xml_encoding>]
パラメータ
- WITH DTD
-
スキーマで構造が作成される記述ファイル(DTDまたはXSD)を指定します。
- REPLACE
-
既存のスキーマ構造を新しいものに置き換える必要があるかどうかを指定します。
- ROOTELT
-
XMLファイルのルートとみなされる記述ファイルの要素。この要素名では大/小文字が区別されます。
- READONLY
-
ロードされるスキーマに対してデータの挿入、削除または更新を実行できません。
- COMPAT_MODE
-
マッピング・モードとの互換性を示します。このプロパティに指定できる値は次のとおりです。
-
v1
は、1.x互換性モードのv1_compatibility=true
に対応します。 -
v2
は、10g/11gモードです。これはデフォルトのモードです。DTDを使用する場合やXMLファイルのみを使用する場合は、JDBC URLで
compat_mode=v2
を指定する必要があります。次に例を示します。jdbc:snps:xml?d=/tmp/myDTD.dtd&compat_mode=v2
jdbc:snps:xml?f=/tmp/myfile.xml&compat_mode=v2
-
v3は、XDK XSDパーサーとの互換性を示します。DTDを使用する場合やXMLファイルのみを使用する場合、
compat_mode=v3
はサポートされていません。たとえば、次の構文はサポートされていません。-
jdbc:snps:xml?d=/tmp/myDTD.dtd&compat_mode=v3
-
jdbc:snps:xml?f=/tmp/myfile.xml&compat_mode=v3
compat_mode=v3
の場合、v1_compatibility
プロパティは無視されます。 -
注意:
SYNCHRONIZEコマンドを使用した場合、v3オプションで作成されたDBスキーマのみがv3モードでDTD/XSDを解析します。v3モードでは、DBプロパティに対応するスキーマ名の値のすべての制限が、スキーマ名などに適用されます。
-
- JAVA_ENCODING
-
スキーマから生成されるターゲットXMLファイルのエンコーディング。
注意: JavaおよびXMLのエンコーディングは、常に一緒に指定する必要があります。
- XML_ENCODING
-
ターゲット・ファイルのXMLタグで生成されるエンコーディング。生成されるタグの例:
<?xml version="1.0" encoding="ISO-8859-1"?>
備考
-
XMLファイルのデータはロードされません。このコマンドはLOAD FILEと似ていますが、XMLファイルのデータはロードしません。
-
XMLファイルが関連付けられていないため、スキーマは読取り専用モードで作成されます。
-
接続スキーマは、新規作成されたスキーマに自動的に切り替わりません。
-
ファイル名にスペースが含まれる場合は、名前を二重引用符で囲んでください。
-
エンコーディング値には特殊文字が含まれている可能性があるため、値を二重引用符で囲んでください。
DROP FOREIGNKEYS
データベースのリレーショナル・スキーマの表にあるすべての外部キーをドロップします。このコマンドは、スキーマのすべての整合性制約をドロップするのに役立ちます。
DROP FOREIGNKEYS
DROP SCHEMA
既存のスキーマをドロップします。<schema_name>
が指定されていない場合は、現在のスキーマがドロップされます。スキーマへの保留状態の接続がある場合は、スキーマをドロップできません。既存の接続があるスキーマをドロップしようとすると、例外が発生します。
DROP SCHEMA [<schema_name>]
LOAD FILE
<file_name>
XMLファイルを、指定された<schema_name>
XMLスキーマにロードします。ON SCHEMAパラメータでスキーマ名が指定されていない場合、このXMLファイル名を使用してスキーマ名が生成されます。指定された名前または生成された名前のスキーマが見つかると、そのスキーマのプロパティが継承されます。指定された名前または生成された名前が実行時に存在しない場合、LOAD FILE
コマンドで指定されたプロパティのみを含む新しいXML JDBC URLが作成されます。このスキーマは、現在のスキーマのプロパティのいずれも継承しません。
LOAD FILE <file_name> [WITH DTD <dtd/xsd_name> | INSERT_ONLY] [ON SCHEMA <schema_name>] [REPLACE] [READONLY] [ROOTELT <root element>] [AUTO_UNLOCK] [DB_PROPS <external database properties>]
INSERT_ONLYが存在しない場合は、次の手順に従ってください。
i) ON SCHEMAを使用して、コマンドにスキーマ識別子が提供されているかどうかを確認する
ii) 提供されていない場合は、XMLファイル名を使用して、スキーマ識別子(最初の5文字)を生成する
このスキーマがすでに存在し、コマンドにREPLACEオプションがない場合、ドライバによってエラーが返されます。このスキーマがすでに存在し、REPLACEオプションがある場合は、既存のスキーマが破棄された後、スキーマが再作成され、ファイルからスキーマにデータがロードされます。
スキーマが存在しない場合、新しいスキーマを作成し、ファイルをロードします。
INSERT_ONLYが存在する場合は、次の手順に従ってください。
i) 現在のスキーマを使用する
ii) ON SCHEMAが提供されている場合は、その名前のスキーマが存在するかどうかを確認する。存在する場合は、そのスキーマを使用します。そうでない場合は、現在のスキーマを引き続き使用します。ファイルをこのスキーマに読み込みます。
パラメータ
- WITH DTD
-
スキーマで構造が作成される記述ファイル(DTDまたはXSD)を指定します。
- INSERT_ONLY
-
スキーマがすでに存在する場合は、スキーマにXMLファイルのデータを追加します。新規のXMLファイルには、既存のスキーマに関する有効な記述ファイルが必要です。
INSERT_ONLYオプションはXMLファイルからデータのみを挿入します。既存のデータは影響されません。
既存のデータが挿入されたデータと同一の場合、エラーが発生します。
- ON SCHEMA
-
<schema_name>に強制的にファイルをロードします。現在のスキーマは、コマンドの実行後に自動的に<schema_name>に設定されないため、注意してください。
- REPLACE
-
同じ名前の既存のスキーマ構造を、ロード中のスキーマ構造に置き換える必要があるかどうかを指定します。
REPLACEオプションはスキーマ全体をドロップします。スキーマがドロップされると、すべての接続もクローズされます。
「スタンドアロン」データ・サーバーの場合、すべての接続がクローズされると、インメモリーHSQL DB自体が破棄されます。
次に、完全に新しいデータベース・インスタンスが「スタンドアロン」データベースサーバーに作成されます。
すべての場合で、完全に新しいスキーマおよび表が作成され、データがXMLファイルから挿入されます。
同一のスキーマ名をまったく異なるXML構造に使用する場合にのみ、このオプションを使用します。
このオプションを使用すると、パフォーマンスが著しく低下すると推測されます。
データ・サーバーが「スタンドアロン」モードで、LOAD FILEコマンド後に同一のデータ・サーバーを再び使用すると、問題が発生します。
- READONLY
-
ロードされるスキーマに対してデータの挿入、削除または更新を実行できません。
- ROOTELT
-
XMLファイルのルートとみなされる記述ファイルの要素。この要素名では大/小文字が区別されます。
- AUTO_UNLOCK
-
AUTO_UNLOCKを指定しない場合、XMLファイルがすでに別のドライバ・インスタンスによってロックされていると、例外が発生します。このパラメータを使用すると、ファイルがロックされている場合にロックが自動的に解除されます。
- DB_PROPS
-
<external database properties>.propertiesというプロパティ・ファイルで識別される外部データベースのファイルをロードします。
備考
-
ファイル名は二重引用符で囲みます。
-
スキーマが指定されていない場合、スキーマ名はファイル名に基づいて自動的に生成されます。
-
接続スキーマは、ロードされたスキーマに自動的に切り替わりません。
-
XMLファイルがすでに別のスキーマで開いている場合は、例外が発生します。
SYNCHRONIZE
スキーマ内のデータをファイルのデータと同期化します。
SYNCHRONIZE [ALL | SCHEMA <schema_name>] [FROM FILE/FROM DATABASE] [IGNORE CONFLICTS]
パラメータ
- ALL
-
すべてのスキーマを同期化します
- SCHEMA
-
<schema_name>のみを同期化します。
- FROM FILE
-
ファイルからスキーマへ、強制的にデータをロードします。スキーマでの変更はすべて消去されます。
- FROM DATABASE
-
スキーマからファイルへ、強制的にデータをロードします。ファイルでの変更はすべて消去されます。
- IGNORE CONFLICTS
-
FROM FILE/DATABASEが指定されていない場合は、データが変更された場所(FILEまたはDATABASE内)が自動的に判別され、未変更のデータが更新されます。FILEとDATABASEの両方が変更されている場合は、競合エラーが発生します。IGNORE CONFLICTSパラメータを使用すると、エラーは発生せず、SYNCHRONIZE ALLを実行している場合はそれ以降のスキーマが同期化されます。
注意:
スキーマが更新済としてマークされるのは、データ変更(更新、削除、挿入、ドロップ)がそのスキーマへの接続で実行された場合のみです。指示が別のスキーマへの接続から出された場合は、更新済としてマークされません。
TRUNCATE SCHEMA
現在のスキーマまたは<schema_name>からすべてのデータを消去します。
TRUNCATE SCHEMA [<schema_name>]
TRUNCATEコマンドはスキーマのすべての表からすべてのデータを削除するだけです。何もドロップされません。接続はクローズされません。
VALIDATE
XMLファイル<file_name>が正しい形式であることを確認し、XMLスキーマ(XSD)がXMLファイルで参照される場合はこのスキーマと照合して、XMLファイル<file_name>の内容を検証します。ファイルが有効でない場合は、コマンドによって例外が戻されます。実行される検証の詳細は、次を参照してください。
http://xerces.apache.org/xerces2-j/features.html#validation.schema
VALIDATE [FILE <file_name>] [ERROR_ON_WARNING|IGNORE_ON_WARNING] [ERROR_ON_ERROR|IGNORE_ON_ERROR] [ERROR_ON_FATAL_ERROR|IGNORE_ON_FATAL_ERROR] [VERBOSE]
パラメータ
- FILE <file_name>
-
検証するXMLファイルの名前。
- ERROR_ON_WARNING | IGNORE_ON_WARNING
-
XSD検証警告(範囲外の値など)を無視するか、エラーを生成します。デフォルト値はIGNORE_ON_WARNINGです。
- ERROR_ON_ERROR | IGNORE_ON_ERROR
-
XSD検証エラー(適合しない属性または要素など)を無視するか、エラーを生成します。デフォルト値はERROR_ON_ERRORです。
- ERROR_ON_FATAL_ERROR | IGNORE_ON_FATAL_ERROR
-
XSD検証の致命的エラー(不正なXMLなど)を無視するか、エラーを生成します。デフォルト値はERROR_ON_FATAL_ERRORです。
- VERBOSE
-
エラーの詳細およびエラーが発生した行の番号をJavaコンソールに表示します。デフォルトでは、コンソールには何も表示されません。
WRITE MAPPING FILE
要素/属性名から表/表.列名へのマッピングを要素/属性ごとに指定されたファイルに書き出します。マッピング・ファイルは、XSD/DTDファイルに作成されたリレーショナル構造を理解するために役立ちます。このコマンドは、スキーマがv3モードで作成されているときにのみ使用できます。そうでない場合は例外がスローされます。
WRITEMAPPINGFILE FILE <file-path> [FROM SCHEMA <schema-name>] [JAVA_ENCODING <java_encoding> XML_ENCODING <xml-encoding>]
パラメータ
- file_p ath
-
生成されるマッピング・ファイルの名前。
- FROM_SCHEMA
-
オプションのFROM SCHEMAパラメータを指定しない場合、現在のスキーマが使用されます。
- JAVA_ENCODING
-
ISO8859_1
など、生成されたファイルのエンコーディング。サポートされているエンコーディングのリストは、次のURLにあります。http://download.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html
。Javaエンコーディングを指定する場合は、XMLエンコーディングも指定する必要があります。
- XML_ENCODING
-
生成されたファイルのxmlタグのエンコーディング。
生成されるタグの例:
<?xml version="1.0" encoding="ISO-8859-1"?>
サポートされているエンコーディングのリストは、次のURLにあります。
http://download.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html
。XMLエンコーディングを指定する場合は、Javaエンコーディングも指定する必要があります。
例B-1 マッピング・ファイル
<?xml version = '1.0' encoding = 'UTF-8'?> <personnel xmlns:x2r="http://www.oracle.com/odi/xml-mapping" x2r:tableName="PERSONNEL"> <person x2r:tableName="PERSON" id="ID" select="SELECT_"> <email x2r:tableName="EMAIL"></email> <link x2r:tableName="LINK" manager="MANAGER" subordinates="SUBORDINATES"></link> <name x2r:tableName="NAME"> <given x2r:columnName="GIVEN"></given> <family x2r:columnName="FAMILY"></family> </name> <url x2r:tableName="URL" href="HREF"></url> </person> </personnel>
SQL構文
この項に示す文は、組込みエンジンを使用してXMLスキーマを格納する場合に使用できます。これらの文を使用すると、標準のSQL文を介してスキーマのデータおよびデータ構造を管理できます。
この項では、次の項目について説明します。
注意:
外部データベースを使用している場合は、この構文のかわりにデータベース・エンジンの問合せ構文を使用できます。
SQL文
任意の数のコマンドを組み合せることができます。セミコロン(;)を使用して各コマンドを区切っても構いません。
この項では、次のコマンドについて説明します。
CREATE TABLE
リレーショナル・スキーマに表およびその制約を作成します。
CREATE TABLE <table_name> ( <columnDefinition> [, ...] [, <constraintDefinition>...])
<columnDefinition> ::=
<column_name> <datatype> [(anything)] [[NOT] NULL] [IDENTITY] [PRIMARY KEY]
<constraintDefinition> ::=
[ CONSTRAINT <constraint_name> ]
UNIQUE ( <column_name> [,<column>...] ) |
PRIMARY KEY ( <column_name> [,<column_name>...] ) |
FOREIGN KEY ( <column_name> [,<column_name>...] )
REFERENCES <referenced_table> ( <column_name> [,<column_name>...] )
備考
-
IDENTITY列は、自動的に増加する整数の列です。接続に対してIDENTITY列に最後に挿入された値は、IDENTITY()ファンクションを使用して取得できます。
-
有効なデータ型は、BIT、TINYINT、BIGINT、LONGVARBINARY、VARBINARY、BINARY、LONGVARCHAR、CHAR、NUMERIC、DECIMAL、INTEGER、SMALLINT、FLOAT、REAL、DOUBLE、VARCHAR、DATE、TIME、TIMESTAMP、OBJECTです。
DELETE
リレーショナル・スキーマの表の行を削除します。このファンクションでは標準のSQL構文が使用されます。
DELETE FROM <table_name> [ WHERE <expression> ]
DISCONNECT
この接続を終了します。
DISCONNECT
備考
-
JDBCインタフェースを使用している場合は、このコマンドをコールする必要はありません。接続が閉じる際に自動的にコールされます。
-
切断後は、この接続で他の問合せを実行することはできません。
INSERT INTO
1つ以上の新しいデータ行を表に挿入します。
INSERT INTO <table_name> [ ( <column_name> [,...] ) ]
{ VALUES (<expression> [,...]) | <SELECT Statement> }
SELECT
スキーマ内の1つ以上の表から情報を取得します。
SELECT [DISTINCT] { <select_expression> | <table_name>.* | * } [, ... ] [ INTO <new_table> ] FROM <table_list> [ WHERE <expression> ] [ GROUP BY <expression> [, ...] ] [ ORDER BY <order_expression> [, ...] ] [ { UNION [ALL] | {MINUS|EXCEPT} | INTERSECT } <select_statement> ]
<table_list> ::=
<table_name> [ { INNER | LEFT [OUTER] } JOIN <table_name>
ON <expression> ] [, ...]
<select_expression> ::=
{ <expression> | COUNT(*) | {COUNT | MIN | MAX | SUM | AVG}
(<expression>) <column_alias>}
<order_expression> ::=
{ <column_number> | <column_alias> | <select_expression> } [ ASC | DESC ]
SET AUTOCOMMIT
接続の自動コミット・モードをオンまたはオフに切り替えます。オンにすると、すべての文が個別のトランザクションとしてコミットされます。オフにすると、文はCOMMITまたはROLLBACKのどちらかで終了するトランザクションにグループ化されます。デフォルトでは、新しい接続は自動コミット・モードです。
SET AUTOCOMMIT { TRUE | FALSE }
式、条件および値
<expression> ::=
[NOT] <condition> [ { OR | AND } <condition> ]
<condition> ::=
{ <value> [ || <value> ]
| <value> { = | < | <= | > | >= | <> | != | IS [NOT] } <value>
| EXISTS(<select_statement>)
| <value> BETWEEN <value> AND <value>
| <value> [NOT] IN ( {<value> [, ...] | selectStatement } )
| <value> [NOT] LIKE <value> [ESCAPE] value }
<value> ::=
[ + | - ] { term [ { + | - | * | / } term ]
| ( condition )
| function ( [parameter] [,...] )
| selectStatement_giving_one_value
<term> ::=
{ 'string' | number | floatingpoint | [table.]column | TRUE | FALSE | NULL }
<string> ::=
-
開始および終了には、単一の「'」を使用します。「'」で開始した文字列内に「'」を作成するには、「''」を使用します。
-
LIKEでは、任意の数(0を含む)の文字と一致させる場合は%を使用し、1つの文字と完全に一致させる場合は_を使用します。%自体の検索には\%、_自体の検索には\_を使用するか、ESCAPE句を使用してその他の任意のエスケープ文字を設定できます。
<name> ::=
-
名前の先頭は文字で、後に任意の数の文字または数字が続きます。文字列および引用符で囲まれた識別子以外の小文字は、大文字に変換されます。名前では大/小文字は区別されません。
-
識別子(表または列など)を引用符で囲んで、名前として使用できます。引用符で囲まれた識別子は、「"」で始まり「"」で終わります。引用符で囲まれた識別子の中に「"」を作成するには、「""」を使用します。引用符で囲まれた識別子を使用することで、大/小文字が混在する表および表名を作成できます。例: CREATE TABLE "Address" ("Nr" INTEGER, "Name" VARCHAR); SELECT * FROM "Address"。引用符で囲まれた識別子は文字列ではありません。
<values> ::=
-
日付値は「'」で始まり「'」で終わります。書式はyyyy-mm-ddです(java.sql.Dateを参照)。
-
時間値は「'」で始まり「'」で終わります。書式はhh:mm:ssです(java.sql.Timeを参照)。
-
バイナリ・データは「'」で始まり「'」で終わります。書式は16進値です。たとえば'0004ff'は、最初が0、2番目が4、最後が255 (0xff)の3バイトです。
SQLファンクション
表B-3に数値ファンクションをリストします。
表B-3 数値ファンクション
ファンクション | 説明 |
---|---|
ABS(d) |
double値の絶対値を戻します。 |
ACOS(d) |
角度のアーク・コサインを戻します。 |
ASIN(d) |
角度のアーク・サインを戻します。 |
ATAN(d) |
角度のアーク・タンジェントを戻します。 |
ATAN2(a,b) |
a/bのタンジェントを戻します。 |
CEILING(d) |
d以上の最小整数を戻します。 |
COS(d) |
角度のコサインを戻します。 |
COT(d) |
角度のコタンジェントを戻します。 |
DEGREES(d) |
ラジアンを角度に変換します。 |
EXP(d) |
e (2.718...)のd乗を戻します。 |
FLOOR(d) |
d以下の最大整数を戻します。 |
LOG(d) |
eを底とする自然対数を戻します。 |
LOG10(d) |
10を底とする対数を戻します。 |
MOD(a,b) |
aをbで割った剰余を戻します。 |
PI() |
円周率(3.1415...)を戻します |
POWER(a,b) |
aのb乗を戻します。 |
RADIANS(d) |
角度をラジアンに変換します。 |
RAND() |
0.0以上1.0未満の乱数xを戻します。 |
ROUND(a,b) |
aを小数点以下b桁に丸めます。 |
SIGN(d) |
dが0未満の場合は-1、dが0の場合は0、dが0より大きい場合は1を戻します。 |
SIN(d) |
角度のサインを戻します。 |
SQRT(d) |
平方根を戻します。 |
TAN(d) |
角度の三角関数タンジェントを戻します。 |
TRUNCATE(a,b) |
aを小数点以下b桁に切り捨てます。 |
BITAND(a,b) |
a & bを戻します |
BITOR(a,b) |
a | bを戻します |
表B-4に文字列ファンクションをリストします。
表B-4 文字列ファンクション
ファンクション | 説明 |
---|---|
ASCII(s) |
sの左端の文字のASCIIコードを戻します。 |
CHAR(c) |
ASCIIコードがcの文字を戻します。 |
CONCAT(str1,str2) |
str1とstr2を連結して戻します |
DIFFERENCE(s1,s2) |
s1とs2の発音の差を戻します。 |
INSERT(s,start,len,s2) |
startからlen文字分をs2に置き換えて、文字列を戻します。 |
LCASE(s) |
sを小文字に変換します。 |
LEFT(s,count) |
sの左端からcount文字分を戻します。 |
LENGTH(s) |
sの文字数を戻します。 |
LOCATE(search,s,[start]) |
startから開始して、s内でsearchが検出された最初の索引(1=左、0=見つからない)を戻します。 |
LTRIM(s) |
sの先頭の空白をすべて削除します。 |
REPEAT(s,count) |
sをcount回分繰り返して戻します。 |
REPLACE(s,replace,s2) |
sに出現するすべてのreplaceをs2に置き換えます。 |
RIGHT(s,count) |
sの右端からcount文字分を戻します。 |
RTRIM(s) |
末尾の空白をすべて削除します。 |
SOUNDEX(s) |
sの発音を表す4文字のコードを戻します。 |
SPACE(count) |
count個分のスペースで構成される文字列を戻します。 |
SUBSTRING(s,start[,len]) |
start (1=左)からlen文字分のサブストリングを戻します。 |
UCASE(s) |
sを大文字に変換します。 |
LOWER(s) |
sを小文字に変換します。 |
UPPER(s) |
sを大文字に変換します。 |
表B-5に日時ファンクションをリストします。
日付値は一重引用符(')で始まり、一重引用符(')で終わります。書式はyyyy-mm-dd
です(java.sql.Dateを参照)。時間値は一重引用符(')で始まり、一重引用符(')で終わります。書式はhh:mm:ss
です(java.sql.Timeを参照)。
表B-5 日時ファンクション
ファンクション | 説明 |
---|---|
CURDATE() |
現在の日付を戻します。 |
CURTIME() |
現在の時間を戻します。 |
DAYNAME(date) |
曜日の名前を戻します。 |
DAYOFMONTH(date) |
月の日付(1から31)を戻します。 |
DAYOFWEEK(date) |
週の曜日(1は日曜日)を戻します。 |
DAYOFYEAR(date) |
その年の何日目か(1から366)を戻します。 |
HOUR(time) |
時間(0から23)を戻します |
MINUTE(time) |
分(0から59)を戻します |
MONTH(date) |
月(1から12)を戻します |
MONTHNAME(date) |
月の名前を戻します。 |
NOW() |
現在の日時をタイムスタンプとして戻します。 |
QUARTER(date) |
四半期(1から4)を戻します |
SECOND(time) |
秒(0から59)を戻します |
WEEK(date) |
その年の何週目か(1から53)を戻します。 |
YEAR(date) |
年を戻します |
表B-6にシステム・ファンクションをリストします。
表B-6 システム・ファンクション
ファンクション | 説明 |
---|---|
IFNULL(exp,value) |
expがNULLの場合はvalueを戻し、NULLでない場合はexpを戻します。 |
CASEWHEN(exp,v2,v2) |
expがtrueの場合はv1を戻し、trueでない場合はv2を戻します。 |
CONVERT(term,type) |
expを別のデータ型に変換します。 |
CAST(term AS type) |
expを別のデータ型に変換します。 |
実装されるJDBC API機能
表B-7に、Oracle Data Integrator Driver for XMLに実装されているJDBC API機能をリストします。
表B-7 JDBC APIの機能
機能グループ | JDBCのバージョン | サポート |
---|---|---|
バッチ更新 |
2.0コア |
はい |
Blob/Clob |
2.0コア |
はい |
JNDIデータソース |
2.0 オプション |
はい |
フェイルオーバー・サポート |
- |
はい |
トランザクション・セーブポイント |
3.0 |
はい |
Unicodeサポート |
- |
いいえ |
分散トランザクション |
2.0 オプション |
いいえ |
接続プーリング |
2.0 オプション |
いいえ |
クラスタ・サポート |
- |
いいえ |
表B-8にJDBC Javaクラスをリストします。
表B-8 JDBC Javaクラス
JDBCクラス | JDBCのバージョン | サポート |
---|---|---|
Array |
2.0コア |
いいえ |
Blob |
2.0コア |
はい |
CallableStatement |
1.0 |
はい |
Clob |
2.0コア |
はい |
Connection |
1.0 |
はい |
ConnectionPoolDataSource |
2.0 オプション |
いいえ |
DatabaseMetaData |
1.0 |
はい |
DataSource |
2.0 オプション |
いいえ |
Driver |
1.0 |
はい |
Ref |
2.0コア |
いいえ |
ResultSet |
1.0 |
はい |
ResultSetMetaData |
1.0 |
はい |
RowSet |
2.0 オプション |
いいえ |
Statement |
1.0 |
はい |
Struct |
2.0コア |
いいえ |
PreparedStatement |
1.0 |
はい |
XAConnection |
2.0 オプション |
いいえ |
XADataSource |
2.0 オプション |
いいえ |
リッチ・メタデータ
XMLスキーマに基づくRDB構造を作成する場合は、ドライバにメタデータを提供できる柔軟性が必要です。たとえば、要素/属性が同じローカル名を持つ場合、RDB表/列の名前が競合する可能性があります。
ODI XMLドライバは、x2rネームスペース(http://www.oracle.com/odi/xml-mapping
)の属性を要素/属性(x2r:tableName/x2r:columnName)にアタッチします。競合する名前がメタデータ属性を持たない場合は、競合しない表/列の名前が取得されるまで、増分する番号がそれらに追加されます。
新しいオブジェクト・モデルは、要素/属性ごとにxpathとtable/table.columnの名前の間のマップを保持します。
2つの異なる場所に同じ名前および同じタイプの要素が2つ存在する場合、データの格納には同じ表が使用されますが、データを区別するために親要素へのFK参照が使用されます。新しい実装によって新しい表が作成されます。表B-9に表の属性をリストします。
表B-9 表の属性
属性 | タイプ | 説明 |
---|---|---|
x2r:tableName |
文字列 |
ローカル名が一致するリストまたは列挙であるRDB表/属性に解決される要素にアタッチされます。 |
x2r:columnName |
文字列 |
ローカル名が一致する属性にアタッチされるか、列にマップされるが、ローカル名が互いに一致するか、それを包含するタイプの属性と一致する要素の属性にアタッチされます。 |
x2r:columnDataType |
文字列 |
提供されるマッピング表からデータ型情報を文字列として提供できます。 ドライバが列または属性にマップする要素にのみアタッチできます。このパラメータが指定されている場合、ユーザーはデータ型に必要なx2r:columnLengthまたはx2r:columnPrecision (あるいはその両方)を指定する必要もあります。 |
x2r:columnLength |
整数 |
列の長さ。 デフォルトでは、ドライバにハードコードされている値が使用されます。JDBC URLでは、VARCHARとNUMERICのグローバル・オーバーライド・オプションがあります。この属性を指定した場合、デフォルト値とグローバル・オーバーライドの両方がオーバーライドされます。 ドライバが列または属性にマップする要素にのみアタッチできます。 |
x2r:columnPrecision |
整数 |
列の精度。これを使用できるデータ型の場合のみ、ドライバによって使用されます。適用される値の決定時には、columnLengthと同じロジックが使用されます。 ドライバが列または属性にマップする要素にのみアタッチできます。 |
次の例に、リッチ・メタデータを含むXSDを示します。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:x2r="http://www.oracle.com/odi/xml-mapping"> <xs:element name="root"> <xs:complexType> <xs:sequence> <!-- Example for redefining table name --> <xs:element name="person" maxOccurs="unbounded" x2r:tableName="CUSTOMER"> <xs:complexType> <xs:sequence> <!-- Example for redefining column name --> <xs:element name="given" type="xs:string" x2r:columnName="FIRST"/> <xs:element name="last" type="xs:string"/> <!-- Example for redefining column length --> <xs:element name="address" type="xs:string" x2r:columnLength="400"/> <!-- Example for redefining column type --> <xs:element name="notes" type="xs:string" x2r:columnDataType="CLOB"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
様々なデータベースに対してサポートされているユーザー指定型
表B-10に、様々なデータベースに対してサポートされているユーザー指定型の詳細を示します。これ以外の型名を使用すると、例外が発生します。
表B-10 各データベースに対してサポートされているユーザー指定型
タイプ | HSQL | Oracle | MySQL | MS SQL Server |
---|---|---|---|---|
SMALLINT |
X |
X |
X |
|
INTEGER |
X |
X |
||
REAL |
X |
X |
||
NUMERIC |
X |
X |
||
NUMBER |
X |
|||
FLOAT |
X |
X |
X |
|
DOUBLE |
X |
X |
||
DECIMAL |
X |
X |
||
CHAR |
X |
X |
X |
X |
NCHAR |
X |
X |
X |
|
VARCHAR |
X |
X |
X |
X |
VARCHAR2 |
X |
|||
NVARCHAR2 |
X |
|||
BLOB |
X |
X |
X |
|
CLOB |
X |
X |
||
NCLOB |
X |
|||
TEXT |
X |
X |
||
DATE |
X |
X |
X |
|
TIME |
X |
X |
X |
|
TIMESTAMP |
X |
X |
X |
X |
サポートされているXMLスキーマの機能
ドライバでは、XMLスキーマ(XSD)仕様の一部がサポートされています。この項では、サポートされている要素をリストします。
XMLスキーマ仕様の詳細は、W3Cの仕様(http://www.w3.org/TR/xmlschema-1/
)を参照してください。
この項では、次の項目について説明します。
データ型
サポートされているデータ型は次のとおりです。
-
文字列に変換されるデータ型: string、normalizedString、token、nmtoken、nmtokens、anyUri、id、idref、date、datetime、time、hexBinary
-
整数列に変換されるデータ型: int、positiveInteger、negativeInteger、nonNegativeInteger、onPositiveInteger、long、unsignedLong、unsignedInt、short、unsignedShort、byte、unsignedByte、boolean(ブール値は0または1の数値列に変換されますが、入力ファイルからtrueまたはfalseの値を取得できます。)
-
小数列に変換されるデータ型(小数点以下2桁): decimal、float、double
サポートされている要素
この項では、スキーマのすべての要素をリストします。サポートされている構文要素は、太字で表記されています。サポートされていない構文要素は、通常のフォントで表記されています。これらは、ドライバによって無視されます。
この項では、次のスキーマ要素について説明します。
注意:
理想としては、XMLドライバを使用して生成または更新されたXMLファイルは、生成後にVALIDATEコマンドを使用して、対応するXSDファイルと照合して検証する必要があります。
All
この要素は、子要素を順序付けせずに、それぞれ0回または1回出現させることができることを示します。
子要素の必須プロパティ(minOccurs=1)は、ドライバでは管理されないため注意してください。データのチェック、およびXSDとの照合によるXMLコンテンツの検証を実行することで、これを管理する必要があります。
<all id=ID maxOccurs=1 minOccurs=0|1 any attributes > (annotation?,element*) </all>
Any
この要素を使用すると、スキーマで指定されていない要素を使用してXMLドキュメントを拡張できます。
<any id=ID maxOccurs=(nonNegativeInteger|unbounded):1 minOccurs=nonNegativeInteger:1 namespace=((##any|##other)|List of (anyURI|(##targetNamespace|##local))):##any processContents=(lax|skip|strict):strict any attributes > (annotation?) </any>
AnyAttribute
この要素を使用すると、スキーマで指定されていない属性を使用してXMLドキュメントを拡張できます。
<anyAttribute id=ID namespace=((##any|##other)|List of (anyURI|(##targetNamespace|##local))):##any processContents=(lax|skip|strict):strict any attributes > (annotation?) </anyAttribute>
属性
この要素は属性を定義します。
<attribute default=string id=ID name=NCName type=QName use=optional|prohibited|required ref=QName fixed=string form=qualified|unqualified any attributes > (annotation?,(simpleType?)) </attribute>
この要素のuse
属性は、属性に対してドライバによってマップされる列が必須かどうかを定義します。
AttributeGroup
この要素は、一連の属性を定義します。
<attributeGroup id=ID name=NCName ref=QName any attributes > (annotation?),((attribute|attributeGroup)*,anyAttribute?)) </attributeGroup>
選択
この要素では、中に含まれている要素のうち1つのみが出現可能になります。
<choice id=ID maxOccurs=nonNegativeInteger|unbounded minOccurs=nonNegativeInteger any attributes > (annotation?,(element|group|choice|sequence|any)*) </choice>
子要素の一意性は、ドライバでは管理されません。データのチェック、およびXSDとの照合によるXMLコンテンツの検証を実行することで、これを管理する必要があります。
ComplexContent
この要素は、複合型での拡張または制限を定義します。
<complexContent id=ID mixed=true|false any attributes > (annotation?,(restriction|extension)) </complexContent>
ComplexType
この要素は、複合型を定義します。
<complexType name=NCName id=ID abstract=true|false mixed=true|false block=(#all|list of (extension|restriction)) final=(#all|list of (extension|restriction)) any attributes > (annotation?,(simpleContent|complexContent|((group|all|choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?)))) </complexType>
Element
この要素は、XMLファイルの要素を定義します。
<element name=NCName maxOccurs=nonNegativeInteger|unbounded minOccurs=nonNegativeInteger type=QName id=ID ref=QName substitutionGroup=QName default=string fixed=string form=qualified|unqualified nillable=true|false abstract=true|false block=(#all|list of (extension|restriction)) final=(#all|list of (extension|restriction)) any attributes > annotation?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
注意:
この要素のmaxOccursおよびminOccurs属性は、XMLからSQLへのマッピングに使用されます。子要素が単純型で単一値(1回のみ出現)の場合、この要素は、親要素に対応する表の単純列にマップされます。それ以外の場合は、親要素の表にリンクされる表が作成されます。
要素内にminOccursまたはmaxOccursへの参照が記述されていない場合、その要素は単一値とみなされ、列に変換されます。この動作は、useImplicitMaxValue
URLプロパティを使用して変更できます。このプロパティをyesに設定した場合、XSDでmaxOccursが指定されていない要素は、複数値(maxOccurs ="unbounded")とみなされます。
注意:
名前が同じで型が異なる複数のサブ要素の使用は、XMLドライバではサポートされていません。そのような構造を持つXSDは、正しく処理されません。
Extension
この要素は、既存のsimpleTypeまたはcomplexType要素を拡張します。
<extension id=ID base=QName any attributes > (annotation?,((group|all|choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))) </extension>
Group
この要素は、複合型の定義で使用される要素のグループを定義します。
<group id=ID name=NCName ref=QName maxOccurs=nonNegativeInteger|unbounded minOccurs=nonNegativeInteger any attributes > (annotation?,(all|choice|sequence)?) </group>
Import
この要素は、ターゲット名前空間が異なる複数のスキーマをドキュメントに追加します。
<import id=ID namespace=anyURI schemaLocation=anyURI any attributes > (annotation?) </import>
Include
この要素は、ターゲット名前空間が同じ複数のスキーマをドキュメントに追加します。
<include id=ID schemaLocation=anyURI any attributes > (annotation?) </include>
List
この要素は、単純型要素を、指定されたデータ型の値のリストとして定義します。
<list id=ID itemType=QName any attributes > (annotation?,(simpleType?)) </list>
Restriction
この要素は、simpleType、simpleContentまたはcomplexContentでの制限を定義します。
<restriction id=ID base=QName any attributes > Content for simpleType: (annotation?,(simpleType?,(minExclusive|minInclusive|maxExclusive|maxInclusive| totalDigits|fractionDigits|length|minLength|maxLength|enumeration|whiteSpace| pattern)*)) Content for simpleContent: (annotation?,(simpleType?,(minExclusive|minInclusive|maxExclusive|maxInclusive| totalDigits|fractionDigits|length|minLength|maxLength|enumeration|whiteSpace| pattern)*)?, ((attribute|attributeGroup)*,anyAttribute?)) Content for complexContent: (annotation?,(group|all|choice|sequence)?, ((attribute|attributeGroup)*,anyAttribute?)) </restriction>
Schema
この要素は、スキーマのルート要素を定義します。
<schema id=ID attributeFormDefault=qualified|unqualified elementFormDefault=qualified|unqualified blockDefault=(#all|list of (extension|restriction|substitution)) finalDefault=(#all|list of (extension|restriction|list|union)) targetNamespace=anyURI version=token xmlns=anyURI any attributes > ((include|import|redefine|annotation)*,(((simpleType|complexType|group| attributeGroup)|element|attribute|notation),annotation*)*) </schema>
Sequence
この要素は、子要素を順序に従って表示する必要があることを指定します。各子要素は0回以上出現可能です。
<sequence id=ID maxOccurs=nonNegativeInteger|unbounded minOccurs=nonNegativeInteger any attributes > (annotation?,(element|group|choice|sequence|any)*) </sequence>
次の点に注意してください。
-
順序は、ドライバでは管理されません。ドライバによって生成されるxxx_ORDER列をロードして、順序を管理する必要があります。
-
maxOccursおよびminOccurs属性はドライバでは管理されません。データのチェック、およびXSDとの照合によるXMLコンテンツの検証を実行することで、これを管理する必要があります。
SimpleContent
この要素には、テキストのみの複合型または単純型に関する拡張または制限がコンテンツとして含まれます。
<simpleContent id=ID any attributes > (annotation?,(restriction|extension)) </simpleContent>
サポートされていない機能
XMLドライバでは、次の要素および機能はサポートおよび実装されていません。
サポートされていない要素
次のスキーマ要素は、XMLドライバではサポートされていません。
-
Key/keyRef/Unique: これらの要素を使用すると、スキーマで制約を定義できます。これらの要素およびその子要素(selector、field)は、無視されます。
-
Redefine: redefine要素は、単純型、複合型、グループおよび属性グループを外部スキーマから再定義します。この要素はサポートされていません。
v3モードで、サポートされていないXSD要素が検出された場合には、エラーが発生します。
警告:
XSDに含まれるAny句またはAnyAttribute句によって許可されるXMLファイル内の要素および属性は、ファイルをロードする際にエラーを引き起こす可能性があります。