| Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド 10g (10.1.3.1.0) B31889-01 |
|
![]() 戻る |
![]() 次へ |
この章では、トランスレーションに使用されるネイティブ・スキーマを作成できる、ネイティブ・フォーマット・ビルダー・ウィザードを説明します。スキーマの使用例やコンストラクトも用意されています。
この章には、次の項目が含まれます。
Oracle BPEL Process ManagerおよびOracle Enterprise Service Busには、XMLスキーマに基づいた、トランスレーション用のネイティブ・スキーマが必要です。ただし、一般的に使用されるフォーマットのすべてでXMLスキーマ・ファイルが使用されるわけではありません。 この状況に対応するために、Oracle BPEL Process ManagerおよびOracle Enterprise Service Busではネイティブ・フォーマット・ビルダー・ウィザードを提供しています。 図7-1に示す「アダプタ構成ウィザード」の「メッセージ」ダイアログ・ボックスで「ネイティブ・フォーマットのスキーマの定義」ボタンをクリックすると、ネイティブ・フォーマット・ビルダー・ウィザードが表示されます。 「メッセージ」ウィンドウは、「アダプタ構成ウィザード」で「終了」ウィンドウの前に表示される最後のウィンドウです。
ネイティブ・フォーマット・ビルダー・ウィザードでは、図7-2に示されているフォーマットからのネイティブ・スキーマ・ファイルの作成を支援します。選択されたタイプのサンプル・データのファイル形式はすでに存在している必要があり、ファイル形式なしでネイティブ・スキーマを作成することはできません。 また、Document Type Definition(DTD)またはCOBOLコピーブックから生成されたものを除き、このウィザードを使用して以前作成された既存のネイティブ・スキーマの変更を選択することもできます。
このオプションを選択すると、ユーザーが指定したCOBOLコピーブック定義からネイティブ・スキーマを生成できます。
COBOLメインフレーム・アプリケーションでは、通常COBOLコピーブック・ファイルを使用してデータ・レイアウトを定義します。 実行時トランスレータが、関連するデータ・ファイルを解析できるように、コンバータがコピーブックからネイティブ・スキーマを作成します。
COBOLコピーブックは、グループ・アイテム(構造)のコレクションです。これらのグループ・アイテムには、グループまたは基本アイテムであるその他のアイテムが含まれます。基本アイテムはそれ以上分割できないアイテムです。次に例を示します。
01 Purchase-Order
05 Buyer
10 BuyerName PIC X(5) USAGE DISPLAY.
04 Seller
08 SellerName PICTURE XXXXX.
Purchase-orderは、2つの子グループ・アイテム(Buyer、Seller)を持つグループ・アイテムです。01、05、04などの数値は、グループのレベル(そのグループ内のデータの階層)を示します。グループは、階層の同じレベルに異なるレベル番号を持つように定義することもできます。たとえば、BuyerおよびSellerには異なるレベル番号がありますが、階層内では同じレベルです。グループ・アイテムには、そのグループのレベル番号以下のレベル番号が発生するまで続く、すべてのグループと基本アイテムが含まれます。
各グループ・アイテム(BuyerおよびSeller)には子の基本アイテムがあります。PICまたはPICTURE句でデータ・レイアウトが定義されています。たとえば、BuyerNameではサイズが5文字の英数字が定義されています。SellerNameのデータ・レイアウトはBuyerNameとまったく同じです。
COBOLのグループ・アイテムは、complexType型を使用してXMLスキーマの要素にマッピングできます。同じように、基本アイテムは、実行時トランスレータによる対応するデータ・ファイルの解析に役立つ、特定のネイティブ・フォーマットの注釈を使用した単純型の要素にマッピングできます。たとえば、Buyerアイテムは次の定義にマッピングできます。
<!--COBOL declaration : 05 Buyer-->
<element name="Buyer">
<complexType>
<sequence>
<!--COBOL declaration : 10 Name PIC X(5)-->
<element name="Name" type="string" nxsd:style="fixedLength"
nxsd:padStyle="tail" nxsd:paddedBy=" " nxsd:length="5"/>
</sequence>
</complexType>
</element>
ユーザー入力
生成されるネイティブ・スキーマのターゲット・ネームスペース。
データ・ファイルが生成されたホスト・コンピュータのキャラクタ・セット。デフォルトではEBCDICに設定されます(ebcdic-cp-us)。
データ・ファイルが生成されたホスト・コンピュータのバイト順。 デフォルトではビッグ・エンディアンに設定されます。
レコード・デリミタ(通常は改行文字)、デリミタなし、またはユーザー指定の文字列。
生成されたネイティブ・スキーマのコンテナ・タグの名前。デフォルトではRoot-Elementに設定されます。
表7-1に、COBOL句を説明します。 表7-1に出現する数値タイプは、1桁ごとに1文字として保存されます。句のサポートは次のように定義されています。
Yは、句がサポートされていることを意味します。
Nは、句がサポートされていないことを意味します。
Iは、句が無視されることを意味します。
表7-1 COBOL句(数値タイプを1桁ごとに1文字として保存)
| COBOL句 | 設計時のサポート | 実行時のサポート | サポートされているシノニム | コメント |
|---|---|---|---|---|
|
|
|
|
|
英数字: コンピュータのキャラクタ・セットで許可されている文字。 Xはそれぞれ1バイトに対応します。 |
|
|
|
|
|
アルファベット: アルファベットまたは空白の任意の文字。 Aはそれぞれ1バイトに対応します。 |
|
|
|
|
|
数字を含む任意の文字位置。 9はそれぞれアイテムのサイズに含められます。 |
|
|
|
|
固定長配列。 |
|
|
|
|
|
|
|
|
|
|
|
同じコンピュータのメモリー領域を異なるデータ・アイテムで表すことができます。 |
|
|
|
|
|
サイズは、 |
|
|
|
|
|
該当なし |
|
|
|
|
|
無視されます。 |
|
|
|
N |
N |
COBOLコピーブックではあまり使用されません。 |
|
|
|
N |
N |
4バイトの索引です。 |
|
|
|
|
I |
|
該当なし |
|
|
|
|
該当なし |
|
|
|
該当なし |
|||
|
|
|
|
該当なし |
表7-1に出現する数値タイプは、1桁ごとに1文字として保存されます。 表7-2に、より効率的に保存される数値タイプを説明します。
表7-2 COBOL句(より効率的に保存される数値タイプ)
| COBOL句 | 設計時のサポート | 実行時のサポート | サポートされているシノニム | コメント |
|---|---|---|---|---|
|
|
Y |
Y |
これらのキーワードはどちらもオプションです。 |
|
|
|
Y |
Y |
|
|
|
|
Y |
Y |
|
4バイトの長さの単精度の浮動小数点数。 |
|
|
|
|
|
8バイトの長さの倍精度の浮動小数点数。 |
|
|
|
|
|
2つの数字は各バイトに保存されます。最後のその他の半バイトは、値が無署名でも署名用に割り当てられます。 |
|
|
|
|
|
|
|
|
|
|
ネイティブ・バイナリ表現の容量。 |
|
|
|
|
|
|
デフォルトで、最も右端のニブルに署名します。 |
|
|
|
|
|
|
|
|
|
|
該当なし |
|
|
|
|
|
長さは |
|
|
|
|
|
長さは、 |
SIGN IS LEADING
署名されたゾーンの数値とともに使用します。
SIGN IS TRAILING
署名されたゾーンの数値とともに使用します。
SIGN IS LEADING SEPARATE
文字Sがサイズに含まれます。
SIGN IS TRAILING SEPARATE
文字Sがサイズに含まれます。
|
注意: 数値がIBM COBOLフォーマットで保存されることを前提としています。 異なるデータ保存フォーマットのその他のプラットフォーム用に生成されている場合は、そのタイプのカスタム・データ・ハンドラを記述する必要があります。 |
表7-3に、ピクチャ編集タイプを説明します。
表7-3 編集済ピクチャ
| 編集済ピクチャ | サポートされている編集タイプ | サポートされていない編集タイプ |
|---|---|---|
|
編集済英数字 |
単純な挿入: B(空白) |
|
|
編集済浮動数値 |
特殊な挿入: |
|
|
編集済数値 |
|
|
編集済ピクチャは、プレゼンテーション目的でデータ・ファイルではほとんど使用されません。記号の編集もデータで行うことを前提としています。たとえば、次のようなフィールドがあるとします。
05 AMOUNT PIC 999.99
このフィールドの幅は6バイトで、データに小数点があります。
単純、特殊および固定挿入はこの方法で処理されます。浮動挿入、ゼロ抑止および置換挿入はサポートされていません。
デリミタ付きファイルおよび固定長ファイルでは、ダイアログ・ボックスの要求に従って、ネイティブ・スキーマ・フォーマットに定義を作成するための次の情報を入力します。
サンプリングするデータ・ファイル(ネイティブ・スキーマの作成元)およびエンコード
スキップする行数およびファイルでサンプリングする行数
ファイルに複数のレコードが含まれている場合は、レコードのタイプが同じであるかどうか
ターゲット・ネームスペース、コンテナ要素名およびレコード名
レコード・デリミタ(行末など)と、フィールド・デリミタ(カンマや番号記号(#)など)またはフィールド長
フィールド・プロパティ(名前、data_type、デリミタおよび長さなど)
DTDおよびCOBOLコピーブック・ファイルでは、定義があらかじめネイティブ・フォーマットに含まれています。これらのフォーマットの場合、ネイティブ・フォーマット・ビルダー・ウィザードでは、それらの定義にネイティブ・スキーマ・バージョンを作成するための次の情報が要求されます。
DTDまたはCOBOLコピーブック定義のファイル名、ネームスペースおよびルート要素
キャラクタ・セット、バイト順およびレコード・デリミタ(COBOLコピーブックの場合のみ)
ウィザードのダイアログ・ボックスを進めていくと、作成されるネイティブ・スキーマ・ファイルがウィンドウの下部に表示されます。これにより、作成されるネイティブ・スキーマ・ファイルを参照できます。 図7-3に示すように、最後のウィンドウには、ネイティブ・フォーマットの生成されたネイティブ・スキーマが表示されます。「次へ」をクリックする前に、このフォーマットを編集できます。
「終了」をクリックすると、図7-1に示す、「アダプタ構成ウィザード」の「メッセージ」ダイアログ・ボックスに戻ります。「スキーマ・ファイルのURL」および「スキーマ要素」フィールドには、新たに作成したネイティブ・スキーマ・ファイルの詳細が入力されています。 これで、「アダプタ構成ウィザード」を使用して、BPELプロセスまたはESBサービスと通信するアダプタのWSDLファイルを作成できます。
この項では使用例を示し、ネイティブ・フォーマット・データをXMLに変換するネイティブ・スキーマの様々なコンストラクトを説明します。
この項には、次の項目が含まれます。
|
注意: すべてのネイティブ・スキーマをネイティブ・フォーマット・ビルダー・ウィザードで生成できるわけではありません。このウィザードで対応できるのは、基本的なシナリオのみです。この項では、様々な例と使用例でネイティブ・スキーマの機能を説明します。 |
この項には、次の項目が含まれます。
カンマ区切り値(CSV)ファイルは、一般的なXML以外のファイル構造です。 CSVファイルには、ヘッダーとしての最初の数行がある場合とない場合がありますが、無視します。
変換されるネイティブ・データ・フォーマット
次のようなネイティブ・データ・フォーマットがあります。
Name,Street,City,State,Country ABC Private Limited, Street 1, Bangalore, Karnataka, India XYZ Private Limited, Street 2, Bangalore, Karnataka, India
ネイティブ・スキーマ
対応するネイティブ・スキーマの定義は次のように定義できます。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
xmlns:tns="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:encoding="US-ASCII"
nxsd:headerLines="1"
nxsd:stream="chars"
nxsd:version="NXSD"> <xsd:element name="AddressBook">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Address" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:string" nxsd:style="terminated"
nxsd:terminatedBy="," >
</xsd:element>
<xsd:element name="Street" type="xsd:string" nxsd:style="terminated"
nxsd:terminatedBy="," >
</xsd:element>
<xsd:element name="City" type="xsd:string" nxsd:style="terminated"
nxsd:terminatedBy="," >
</xsd:element>
<xsd:element name="State" type="xsd:string" nxsd:style="terminated"
nxsd:terminatedBy="," > </xsd:element>
<xsd:element name="Country" type="xsd:string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" >
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
xsd:schemaコンストラクトにあるこのスキーマのnxsd:headerLines="1"は、実際に残りのデータを変換する前に、ネイティブ・データを1行スキップすることを意味します。これは1行目がヘッダー行であるためです。 nxsd:stream="chars"のようにnxsd:streamとしてcharsが指定されている場合は、データが文字列として読み取られることを意味します。 nxsd:stream="bytes"のようにnxsd:streamとしてbytesが指定されている場合は、ネイティブ・データがバイトとして読み取られることを意味します。対応するスカラー・データを持つName、Street、City、State、Countryの各要素の宣言では、nxsd:style="terminated"によって対応するデータがterminatedスタイルで保存されていることが定義されています。実際の終了文字は、コンストラクトに指定されているnxsd:terminatedBy=","属性で定義されています。 terminatedスタイルの詳細は、第7.2.2.2項「終了データの定義」を参照してください。
ネイティブ・スキーマを使用して変換したXML
対応するネイティブ・スキーマ・フォーマットを使用したネイティブ・データは、次のXMLに変換されます。
<AddressBook xmlns="http://www.oracle.com/ias/processconnect">
<Address>
<Name>ABC Private Limited</Name>
<Street>Street 1</Street>
<City>Bangalore</City>
<State>Karnataka</State>
<Country>India</Country>
</Address>
<Address>
<Name>XYZ Private Limited</Name>
<Street>Street 2</Street>
<City>Bangalore</City>
<State>Karnataka</State>
<Country>India</Country>
</Address>
</AddressBook>
前述の例で定義された使用例は、*SVクラスの一例です。ワイルド・カードは、任意の文字または文字列に置き換えられます。 たとえば、プラス(+)で区切られた値を含むネイティブ・データなどです。
変換されるネイティブ・データ・フォーマット
次のようなネイティブ・データ・フォーマットがあります。
a+b+c+d+e f+g+h+i+j
ネイティブ・スキーマ
nxsd:terminatedBy=","のかわりにterminated byフォーマットをnxsd:terminatedBy="+"として定義することを除き、対応するネイティブ・スキーマ定義は前の使用例と似ています。 terminatedスタイルの詳細は、第7.2.2.2項「終了データの定義」を参照してください。
この例では、使用されるネイティブ・データはCSVの場合と同じです。唯一の違いは、データがCSVではなく固定長であることです。
変換されるネイティブ・データ・フォーマット
次のようなネイティブ・データ・フォーマットがあります。
Name Street City State Country ABC Private Limited Street1 Bangalore Karnataka India XYZ Private Limited Street1 Bangalore Karnataka India
ネイティブ・スキーマ
対応するネイティブ・スキーマ定義はCSVの定義と似ていますが、固定長スタイルの関連する属性とともに、styleがnxsd:style="terminated"からnxsd:style="fixedLength"に変わります。 固定長スタイルでは、必須属性はlength: nxsd:lengthです。nxsd:lengthの値は、読み取られる実際のデータの長さです。 変換するネイティブ・データの固定長スタイルの完全な定義は、次のように定義できます。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
xmlns:tns="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:encoding="US-ASCII"
nxsd:headerLines="1"
nxsd:stream="chars"
nxsd:version="NXSD">
<xsd:element name="AddressBook">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Address" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:string" nxsd:style="fixedLength"
nxsd:length="31">
</xsd:element>
<xsd:element name="Street" type="xsd:string" nxsd:style="fixedLength"
nxsd:length="19">
</xsd:element>
<xsd:element name="City" type="xsd:string" nxsd:style="fixedLength"
nxsd:length="10">
</xsd:element>
<xsd:element name="State" type="xsd:string" nxsd:style="fixedLength"
nxsd:length="10">
</xsd:element>
<xsd:element name="Country" type="xsd:string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
固定長スタイルの詳細は、第7.2.2.1項「固定長データの定義」を参照してください。
請求書は、前述のCSV、*SVおよび固定長の使用例の構造よりも複雑な構造です。通常、請求書には購入者の情報、販売者の情報および明細項目が含まれます。
変換されるネイティブ・データ・フォーマット
請求書の次のようなネイティブ・データ・フォーマットがあります。
6335722^Company One^First Street 999 San Jose 95129USCA650-801-6250
^Oracle^Bridge Parkway 1600 Redwood Shores 94065USCA650-506-7000
001|BPEL Process Manager Enterprise Edition|20000,2,+40000+
002|BPEL Process Manager Standard Edition|10000,5,+50000+
003|BPEL Process Manager Developer Edition|1000,20,+20000+#110000
ネイティブ・データの1行目は購入者の詳細で、販売者の詳細、明細項目および明細項目の合計が続きます。 購入者と販売者のどちらも次のように同じ構造です。
最初の7文字はUIDです。
これには、^で囲まれた購入者/販売者の名前が続きます。
この後には、行末まで住所が続きます。
この住所には、固定長の番地、市区町村などが含まれます。 最後の明細項目は、番号記号#の後に明細項目の合計が続いて終了しています。
ネイティブ・スキーマ
前述のネイティブ・データに対応するネイティブ・スキーマの定義は、次のように定義できます。
<schema attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://xmlns.oracle.com/ias/pcbpel/fatransschema/demo"
xmlns:tns="http://xmlns.oracle.com/ias/pcbpel/fatransschema/demo"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
nxsd:version="NXSD" nxsd:stream="chars">
<element name="invoice" type="tns:invoiceType" />
<complexType name="invoiceType">
<sequence>
<element name="purchaser" type="tns:partnerType" />
<element name="seller" type="tns:partnerType" />
<element name="line-item" type="tns:line-itemType"
maxOccurs="unbounded" nxsd:style="array"
nxsd:cellSeparatedBy="${eol}" nxsd:arrayTerminatedBy="#"/>
<element name="total" type="double" nxsd:style="terminated"
nxsd:terminatedBy="${eol}"/>
</sequence>
</complexType>
<complexType name="partnerType">
<sequence>
<element name="uid" type="string" nxsd:style="fixedLength"
nxsd:length="7" nxsd:padStyle="tail" nxsd:paddedBy=" "/>
<element name="name" type="string" nxsd:style="surrounded"
nxsd:surroundedBy="^"/>
<element name="address" type="tns:addressType" />
</sequence>
</complexType>
<complexType name="addressType">
<sequence>
<element name="street1" type="string" nxsd:style="fixedLength"
nxsd:length="15" nxsd:padStyle="tail" nxsd:paddedBy=" "/>
<element name="street2" type="string" nxsd:style="fixedLength"
nxsd:length="10" nxsd:padStyle="tail" nxsd:paddedBy=" "/>
<element name="city" type="string" nxsd:style="fixedLength"
nxsd:length="15" nxsd:padStyle="tail" nxsd:paddedBy=" "/>
<element name="postal-code" type="string" nxsd:style="fixedLength"
nxsd:length="5" nxsd:padStyle="none"/>
<element name="country" type="string" nxsd:style="fixedLength"
nxsd:length="2" nxsd:padStyle="none"/>
<element name="state" type="string" nxsd:style="fixedLength"
nxsd:length="2" nxsd:padStyle="none"/>
<element name="phone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}"/>
</sequence>
</complexType>
<complexType name="line-itemType">
<sequence>
<element name="uid" type="string" nxsd:style="fixedLength"
nxsd:length="3" nxsd:padStyle="none"/>
<element name="description" type="string" nxsd:style="surrounded"
nxsd:surroundedBy="|"/>
<element name="price" type="double" nxsd:style="terminated"
nxsd:terminatedBy=","/>
<element name="quantity" type="integer" nxsd:style="terminated"
nxsd:terminatedBy=","/>
<element name="line-total" type="double" nxsd:style="surrounded"
nxsd:surroundedBy="+"/>
</sequence>
</complexType>
</schema>
ネイティブ・スキーマを使用して変換したXML
変換されたXMLは次のようになります。
<invoice xmlns="http://xmlns.oracle.com/pcbpel/demoSchema/invoice-nxsd">
<purchaser>
<uid>6335722</uid>
<name>Company One</name>
<address>
<street1>First Street</street1>
<street2>999</street2>
<city>San Jose</city>
<postal-code>95129</postal-code>
<country>US</country>
<state>CA</state>
<phone>650-801-6250</phone>
</address>
</purchaser>
<seller>
<uid/>
<name>Oracle</name>
<address>
<street1>Bridge Parkway</street1>
<street2>1600</street2>
<city>Redwood Shores</city>
<postal-code>94065</postal-code>
<country>US</country>
<state>CA</state>
<phone>650-506-7000</phone>
</address>
</seller>
<line-item>
<uid>001</uid>
<description>BPEL Process Manager Enterprise Edition</description>
<price>20000</price>
<quantity>2</quantity>
<line-total>40000</line-total>
</line-item>
<line-item>
<uid>002</uid>
<description>BPEL Process Manager Standard Edition</description>
<price>10000</price>
<quantity>5</quantity>
<line-total>50000</line-total>
</line-item>
<line-item>
<uid>003</uid>
<description>BPEL Process Manager Developer Edition</description>
<price>1000</price>
<quantity>20</quantity>
<line-total>20000</line-total>
</line-item>
<total>110000</total>
</invoice>
ネイティブ・データがXMLでそのXMLにネームスペースがない場合は、ネイティブ・フォーマット・トランスレータを使用してインバウンドXMLドキュメントにネームスペースを追加できます。また、アウトバウンドXMLドキュメントからネームスペースを削除することもできます。
次のいずれかに該当する場合、XMLにはネームスペースがありません。
XMLに対応するXMLスキーマがあり、そのXMLスキーマにターゲット・ネームスペースが指定されていない場合。
XMLに対応するDTDがあり、それがXMLスキーマに変換されたDTDである場合。
どちらの場合も、targetNamespaceが指定されたラッパー・スキーマを作成し、そのラッパー・スキーマに実際のスキーマを含める必要があります。また、ラッパー・スキーマにはDTDに設定されたnxsd:version属性も必要です。次に例を示します。
--wrapper.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="myNamespace"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
nxsd:version="DTD">
<include schemaLocation="actual.xsd"/>
</schema>
|
注意: 実際のスキーマにelementFormDefault="qualified"が指定されていることを確認してください。 |
actual.xsdのかわりにこのwrapper.xsdを使用すると、インバウンドXMLにmyNamespaceネームスペースが追加され、アウトバウンドXMLからmyNamespaceネームスペースが削除されます。
トランスレーション用のネイティブ・スキーマ・ファイルを作成するために、ファイルおよびFTPアダプタが(ネイティブ・フォーマット・ビルダー・ウィザードを使用して)COBOLコピーブック・フォーマットのファイルをどのように処理するかを示すデモが用意されています。 ネイティブ・フォーマット・ビルダー・ウィザードを使用して、COBOLコピーブック・ファイルをネイティブ・スキーマ・ファイルに変換するデモを参照するには、次の場所へ移動します。
Oracle_Home\integration\orabpel\samples\tutorials\121.FileAdapter\CobolCopyBook
また、次のCOBOLコピーブックの例も提供されています。
COBOLコピーブックには、複数のルート・レベルを含めることができます。 すべてのルート・レベルが01のレベルの場合、各グループは暗黙的に他のグループを再定義します。
01 PAYROLL-E-RECORD. 05 PAYROLL-E-EMPLOYEE-NUMBER PIC X(10). 05 PAYROLL-E-TRANS-CODE PIC X(02).
05 PAYROLL-E-NAME PIC X(08).
05 FILLER PIC X(25).
01 PAYROLL-F-RECORD. 05 PAYROLL-F-EMPLOYEE-NUMBER PIC X(10). 05 PAYROLL-F-TRANS-CODE PIC X(02). 05 PAYROLL-F-IDENTIFIER-VALUE PIC X(03). 05 PAYROLL-F-NAME PIC X(30).
01 PAYROLL-H-RECORD. 05 PAYROLL-H-EMPLOYEE-NUMBER PIC X(10). 05 PAYROLL-H-TRANS-CODE PIC X(02). 05 PAYROLL-H-HED-NUMBER PIC 9(03). 05 FILLER PIC X(30).
生成されるスキーマは次のようになります。
<?xml version="1.0" encoding="UTF-8" ?>
<!--Native format was generated from COBOL copybook : D:\work\jDevProjects\CCB\Copybooks\payroll.cpy-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:extn="http://xmlns.oracle.com/pcbpel/nxsd/extensions"
targetNamespace="http://TargetNamespace.com/ccb/implicitRedefines"
xmlns:tns="http://TargetNamespace.com/ccb/implicitRedefines"
elementFormDefault="qualified" attributeFormDefault="unqualified"
nxsd:version="NXSD" nxsd:encoding="cp037" nxsd:byteOrder="bigEndian"
nxsd:stream="chars">
<xsd:element name="Payroll-Records">
<xsd:complexType>
<!--Please add values for nxsd:lookAhead attributes for the elements in the
choice model group.-->
<xsd:choice minOccurs="1" maxOccurs="unbounded">
<!--COBOL declaration : 01 PAYROLL-E-RECORD -->
<xsd:element name="PAYROLL-E-RECORD" nxsd:lookAhead="" nxsd:lookFor="">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 05 PAYROLL-E-EMPLOYEE-NUMBER PIC X(10)-->
<xsd:element name="PAYROLL-E-EMPLOYEE-NUMBER" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="10"/>
<!--COBOL declaration : 05 PAYROLL-E-TRANS-CODE PIC X(02)-->
<xsd:element name="PAYROLL-E-TRANS-CODE" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="2"/>
<!--COBOL declaration : 05 PAYROLL-E-NAME PIC X(08)-->
<xsd:element name="PAYROLL-E-NAME" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="8"/>
<!--COBOL declaration : 05 FILLER PIC X(25)-->
<xsd:element name="FILLER" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="25"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!--COBOL declaration : 01 PAYROLL-F-RECORD -->
<xsd:element name="PAYROLL-F-RECORD" nxsd:lookAhead="" nxsd:lookFor="">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 05 PAYROLL-F-EMPLOYEE-NUMBER PIC X(10)-->
<xsd:element name="PAYROLL-F-EMPLOYEE-NUMBER" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="10"/>
<!--COBOL declaration : 05 PAYROLL-F-TRANS-CODE PIC X(02)-->
<xsd:element name="PAYROLL-F-TRANS-CODE" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="2"/>
<!--COBOL declaration : 05 PAYROLL-F-IDENTIFIER-VALUE PIC X(03)-->
<xsd:element name="PAYROLL-F-IDENTIFIER-VALUE" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="3"/>
<!--COBOL declaration : 05 PAYROLL-F-NAME PIC X(30)-->
<xsd:element name="PAYROLL-F-NAME" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="30"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!--COBOL declaration : 01 PAYROLL-H-RECORD -->
<xsd:element name="PAYROLL-H-RECORD" nxsd:lookAhead="" nxsd:lookFor="">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 05 PAYROLL-H-EMPLOYEE-NUMBER PIC X(10)-->
<xsd:element name="PAYROLL-H-EMPLOYEE-NUMBER" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="10"/>
<!--COBOL declaration : 05 PAYROLL-H-TRANS-CODE PIC X(02)-->
<xsd:element name="PAYROLL-H-TRANS-CODE" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="2"/>
<!--COBOL declaration : 05 PAYROLL-H-HED-NUMBER PIC 9(03)-->
<xsd:element name="PAYROLL-H-HED-NUMBER" type="xsd:long"
nxsd:style="fixedLength" nxsd:padStyle="head"
nxsd:paddedBy="0" nxsd:length="3"/>
<!--COBOL declaration : 05 FILLER PIC X(30)-->
<xsd:element name="FILLER" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="30"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
最上位のペイロード・レコードは、choiceモデル・グループに囲まれています。各ペイロード・レコードには、実行時のデータ・ファイルの処理中におけるレコード・タイプの識別に役立つnxsd:lookAheadおよびnxsd:lookForの2つの属性もあります。 そのため、これらの属性に値を追加する必要があります。たとえば、PAYROLL-F-TRANS-CODEフィールドにFRという値がある場合にPAYROLL-F-RECORDが発生するとします。レコード要素は次のようになります。
<xsd:element name="PAYROLL-F-RECORD" nxsd:lookAhead="10" nxsd:lookFor="FR">
値10はlookaheadフィールドの位置を示します。
次のCOBOLコピーブックでは、05レベルに複数のルート要素があります。
05 ORG-NUM PIC 99.05 EMP-RECORD. 10 EMP-SSN PIC 9(4)V(6). 10 EMP-WZT PIC 9(6).
生成されるスキーマは次のとおりです。
<?xml version="1.0" encoding="UTF-8" ?>
<!--Native format was generated from COBOL copybook :
D:\work\jDevProjects\CCB\Copybooks\multipleRoot.cpy-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:extn="http://xmlns.oracle.com/pcbpel/nxsd/extensions"
targetNamespace="http://TargetNamespace.com/ccb/multipleRoots"
xmlns:tns="http://TargetNamespace.com/ccb/multipleRoots"
elementFormDefault="qualified" attributeFormDefault="unqualified"
nxsd:version="NXSD" nxsd:encoding="ASCII"
nxsd:byteOrder="littleEndian" nxsd:stream="chars">
<xsd:element name="emp-info">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<!--COBOL declaration : 05 ORG-NUM PIC 99-->
<xsd:element name="ORG-NUM" type="xsd:long" nxsd:style="fixedLength"
nxsd:padStyle="head" nxsd:paddedBy="0" nxsd:length="2"/>
<!--COBOL declaration : 05 EMP-RECORD-->
<xsd:element name="EMP-RECORD">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 10 EMP-SSN PIC 9(4)V(6)-->
<xsd:element name="EMP-SSN" type="xsd:decimal"
nxsd:style="virtualDecimal" extn:assumeDecimal="4"
extn:picSize="9"/>
<!--COBOL declaration : 10 EMP-WZT PIC 9(6)-->
<xsd:element name="EMP-WZT" type="xsd:long"
nxsd:style="fixedLength" nxsd:padStyle="head"
nxsd:paddedBy="0" nxsd:length="6"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
この場合(01レベル以外の場合)、バインドされていない一連のルート・レベル・アイテムが生成されます。
単一のルート・レベル、仮想小数点、固定長配列
次のCOBOLコピーブックには、単一のルート・レベル・アイテムPO-RECORDがあります。 単一のルート・レベルの場合には、コンバータの動作は同じであるためレベル番号は問題ではありません。 このCOBOLコピーブックでは、仮想小数点として宣言されたフィールド(PO-ITEM-PRICE)の例も示しています。
05 PO-RECORD.
10 PO-BUYER.
15 PO-UID PIC 9(7).
15 PO-NAME PIC X(15).
15 PO-ADDRESS.
20 PO-STREET PIC X(15).
20 PO-CITY PIC X(10).
20 PO-ZIP PIC 9(5).
20 PO-STATE PIC X(2).
10 PO-ITEM.
15 POITEM OCCURS 3 TIMES.
20 PO-LINE-ITEM.
25 PO-ITEM-ID PIC 9(3).
25 PO-ITEM-NAME PIC X(40).
25 PO-ITEM-QUANTITY PIC 9(2).
25 PO-ITEM-PRICE PIC 9(5)V9(2).
10 PO-TOTAL PIC 9(7)V9(2).
生成されるスキーマは次のようになります。
<?xml version="1.0" encoding="UTF-8" ?>
<!--Native format was generated from COBOL copybook : D:\work\
jDevProjects\CCB\Copybooks\po-ccb.cpy-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:extn="http://xmlns.oracle.com/pcbpel/nxsd/extensions"
targetNamespace="http://TargetNamespace.com/ccb/singleRoot"
xmlns:tns="http://TargetNamespace.com/ccb/singleRoot"
elementFormDefault="qualified" attributeFormDefault="unqualified"
nxsd:version="NXSD" nxsd:encoding="cp037" nxsd:byteOrder="bigEndian"
nxsd:stream="chars">
<xsd:element name="Root-Element">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 05 PO-RECORD -->
<xsd:element name="PO-RECORD" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 10 PO-BUYER-->
<xsd:element name="PO-BUYER">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 15 PO-UID PIC 9(7)-->
<xsd:element name="PO-UID" type="xsd:long"
nxsd:style="fixedLength" nxsd:padStyle="head"
nxsd:paddedBy="0" nxsd:length="7"/>
<!--COBOL declaration : 15 PO-NAME PIC X(15)-->
<xsd:element name="PO-NAME" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="15"/>
<!--COBOL declaration : 15 PO-ADDRESS-->
<xsd:element name="PO-ADDRESS">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 20 PO-STREET PIC X(15)-->
<xsd:element name="PO-STREET" type="xsd:string"
nxsd:style="fixedLength"
nxsd:padStyle="tail" nxsd:paddedBy=" "
nxsd:length="15"/>
<!--COBOL declaration : 20 PO-CITY PIC X(10)-->
<xsd:element name="PO-CITY" type="xsd:string"
nxsd:style="fixedLength"
nxsd:padStyle="tail" nxsd:paddedBy=" "
nxsd:length="10"/>
<!--COBOL declaration : 20 PO-ZIP PIC 9(5)-->
<xsd:element name="PO-ZIP" type="xsd:long"
nxsd:style="fixedLength"
nxsd:padStyle="head" nxsd:paddedBy="0"
nxsd:length="5"/>
<!--COBOL declaration : 20 PO-STATE PIC X(2)-->
<xsd:element name="PO-STATE" type="xsd:string"
nxsd:style="fixedLength"
nxsd:padStyle="tail" nxsd:paddedBy=" "
nxsd:length="2"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!--COBOL declaration : 10 PO-ITEM-->
<xsd:element name="PO-ITEM">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 15 POITEM OCCURS 3 TIMES-->
<xsd:element name="POITEM" minOccurs="3" maxOccurs="3">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 20 PO-LINE-ITEM-->
<xsd:element name="PO-LINE-ITEM">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 25 PO-ITEM-ID PIC 9(3)-->
<xsd:element name="PO-ITEM-ID" type="xsd:long"
nxsd:style="fixedLength"
nxsd:padStyle="head"
nxsd:paddedBy="0" nxsd:length="3"/>
<!--COBOL declaration : 25 PO-ITEM-NAME PIC X(40)--> <xsd:element name="PO-ITEM-NAME"
type="xsd:string"
nxsd:style="fixedLength"
nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="40"/>
<!--COBOL declaration : 25 PO-ITEM-QUANTITY PIC 9(2)--> <xsd:element name="PO-ITEM-QUANTITY"
type="xsd:long"
nxsd:style="fixedLength"
nxsd:padStyle="head"
nxsd:paddedBy="0" nxsd:length="2"/>
<!--COBOL declaration : 25 PO-ITEM-PRICE PIC 9(5)V9(2)-->
<xsd:element name="PO-ITEM-PRICE"
type="xsd:decimal"
nxsd:style="virtualDecimal"
extn:assumeDecimal="5"
extn:picSize="7"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!--COBOL declaration : 10 PO-TOTAL PIC 9(7)V9(2)-->
<xsd:element name="PO-TOTAL" type="xsd:decimal"
nxsd:style="virtualDecimal" extn:assumeDecimal="7"
extn:picSize=" "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
可変長配列
05 EMP-RECORD .
10 EMP-NAME PIC X(30).
10 EMP-DIV-NUM PIC 9(5).
10 DIV-ENTRY OCCURS 1 TO 50 TIMES
DEPENDING ON EMP-DIV-NUM.
20 DIV-CODE PIC X(30).
<?xml version="1.0" encoding="UTF-8" ?>
<!--Native format was generated from COBOL copybook : D:\work\
jDevProjects\CCB\Copybooks\odo.cpy-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:extn="http://xmlns.oracle.com/pcbpel/nxsd/extensions"
targetNamespace="http://TargetNamespace.com/ccb/varLengthArray"
xmlns:tns="http://TargetNamespace.com/ccb/varLengthArray"
elementFormDefault="qualified" attributeFormDefault="unqualified"
nxsd:version="NXSD" nxsd:encoding="cp037" nxsd:byteOrder="bigEndian"
nxsd:stream="chars">
<xsd:element name="Root-Element">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration :05 EMP-RECORD -->
<xsd:element name="EMP-RECORD" minOccurs="1" maxOccurs="unbounded">
<xsd:annotation>
<xsd:appinfo>
<nxsd:variables>
<nxsd:variable name="DIV-ENTRY_var0"/>
</nxsd:variables>
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 10 EMP-NAME PIC X(30)-->
<xsd:element name="EMP-NAME" type="xsd:string"
nxsd:style="fixedLength" nxsd:padStyle="tail"
nxsd:paddedBy=" " nxsd:length="30"/>
<!--COBOL declaration : 10 EMP-DIV-NUM PIC 9(5)-->
<xsd:element name="EMP-DIV-NUM" type="xsd:long"
nxsd:style="fixedLength" nxsd:padStyle="head"
nxsd:paddedBy="0" nxsd:length="5">
<xsd:annotation>
<xsd:appinfo>
<nxsd:variables> <nxsd:assign name="DIV-ENTRY_var0" value="${0}"/> </nxsd:variables> </xsd:appinfo> </xsd:annotation> </xsd:element> <!--COBOL declaration : 10 DIV-ENTRY OCCURS 1 TO 50 TIMES DEPENDING ON
EMP-DIV-NUM--> <xsd:element name="DIV-ENTRY" nxsd:style="array" nxsd:arrayLength="${DIV-ENTRY_var0}" minOccurs="1" maxOccurs="50"> <xsd:complexType> <xsd:sequence> <!--COBOL declaration : 20 DIV-CODE PIC X(30)--> <xsd:element name="DIV-CODE" type="xsd:string" nxsd:style="fixedLength" nxsd:padStyle="tail" nxsd:paddedBy=" " nxsd:length="30"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
数値のタイプ
01 NUMERIC-FORMATS.
05 Salary PIC 9(5) COMP-3.
05 Rating PICTURE S9(5).
05 Age PIC 9(3) USAGE COMP.
05 Revenue PIC 9(3)V9(2).
05 Growth PIC S9(3) SIGN IS LEADING.
05 Computation COMP-1.
<?xml version="1.0" encoding="UTF-8" ?>
<!--Native format was generated from COBOL copybook :
D:\work\jDevProjects\CCB\Copybooks\numeric.cpy-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:extn="http://xmlns.oracle.com/pcbpel/nxsd/extensions"
targetNamespace="http://TargetNamespace.com/ccb/numeric"
xmlns:tns="http://TargetNamespace.com/ccb/numeric"
elementFormDefault="qualified" attributeFormDefault="unqualified"
nxsd:version="NXSD" nxsd:encoding="cp037" nxsd:byteOrder="bigEndian"
nxsd:stream="bytes">
<xsd:element name="Numerics">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration :01 NUMERIC-FORMATS-->
<xsd:element name="NUMERIC-FORMATS" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<!--COBOL declaration : 05 Salary PIC 9(5) COMP-3-->
<xsd:element name="Salary" type="xsd:long" nxsd:style="comp3"
extn:sign="unticked" extn:picSize="5"/>
<!--COBOL declaration : 05 Rating PICTURE S9(5)-->
<xsd:element name="Rating" type="xsd:string"
nxsd:style="signZoned" extn:sign="ticked"
extn:picSize="5" extn:signPosn="tailUpperNibble"/>
<!--COBOL declaration : 05 Age PIC 9(3) USAGE COMP--> <xsd:element name="Age" type="xsd:long" nxsd:style="comp"
extn:picSize="3" extn:sign="unticked"/>
<!--COBOL declaration : 05 Revenue PIC 9(3)V9(2)-->
<xsd:element name="Revenue" type="xsd:decimal"
nxsd:style="virtualDecimal" extn:assumeDecimal="3"
extn:picSize="5"/>
<!--COBOL declaration : 05 Growth PIC S9(3) SIGN IS LEADING-->
<xsd:element name="Growth" type="xsd:string"
nxsd:style="signZoned" extn:sign="ticked"
extn:picSize="3" extn:signPosn="headUpperNibble"/>
<!--COBOL declaration : 05 Computation COMP-1-->
<xsd:element name="Computation" type="xsd:float"
nxsd:style="comp1" extn:sign="ticked"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
この場合、すべての数値のタイプはIBM COBOLフォーマットに応じて指定されたフォーマットに従います。 異なるレイアウトを使用して異なるシステムで作成されたデータ・ファイルの場合は、生成されたスキーマを変更する必要があります。
この項には、次の項目が含まれます。
ネイティブ・フォーマットの固定長データは、固定長スタイルを使用してネイティブ・スキーマに定義できます。固定長には次の3つのタイプがあります。
余白あり
余白なし
ネイティブ・データから実際の長さも読み取られるタイプ
変換されるネイティブ・データ・フォーマット: 余白あり
実際のデータが指定された長さに満たない場合があります。 この場合には、headまたはtailとしてpaddedByおよびpadStyleを指定できます。データが読み取られると、余白はそれに従って削除されます。
GBP*UK000012550.00
ネイティブ・スキーマ: 余白あり
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="fixedlength">
<complexType>
<sequence>
<element name="currency_code" nxsd:style="fixedLength" nxsd:length="4"
nxsd:padStyle="tail" nxsd:paddedBy="*">
<simpleType>
<restriction base="string">
<maxLength value="4" />
</restriction>
</simpleType>
</element>
<element name="country_code" nxsd:style="fixedLength" nxsd:length="2"
nxsd:padStyle="none">
<simpleType>
<restriction base="string">
<length value="2" />
</restriction>
</simpleType>
</element>
<element name="to_usd_rate" nxsd:style="fixedLength" nxsd:length="12"
nxsd:padStyle="head" nxsd:paddedBy="0">
<simpleType>
<restriction base="string">
<maxLength value="12" />
</restriction>
</simpleType>
</element>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML: 余白あり
<fixedlength xmlns="http://www.oracle.com/ias/processconnect"> <currency_code>GBP</currency_code> <country_code>UK</country_code> <to_usd_rate>12550.00</to_usd_rate> </fixedlength>
変換されるネイティブ・データ・フォーマット: 余白なし
ネイティブ・スキーマに固定長データを定義するには、固定長スタイルを使用できます。実際のデータが指定された長さに満たない場合、空白は削除されません。
GBP*UK000012550.00
ネイティブ・スキーマ: 余白なし
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="fixedlength">
<complexType>
<sequence>
<element name="currency_code" nxsd:style="fixedLength" nxsd:length="4">
<simpleType>
<restriction base="string">
<maxLength value="4" />
</restriction>
</simpleType>
</element>
<element name="country_code" nxsd:style="fixedLength" nxsd:length="2">
<simpleType>
<restriction base="string">
<length value="2" />
</restriction>
</simpleType>
</element>
<element name="to_usd_rate" nxsd:style="fixedLength" nxsd:length="12">
<simpleType>
<restriction base="string">
<maxLength value="12" />
</restriction>
</simpleType>
</element>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML: 余白なし
<fixedlength xmlns="http://www.oracle.com/ias/processconnect"> <currency_code>GBP*</currency_code> <country_code>UK</country_code> <to_usd_rate>000012550.00</to_usd_rate> </fixedlength>
変換されるネイティブ・データ・フォーマット: ネイティブ・データから実際の長さも読み取られる場合
データの長さもネイティブ・ストリームに保存される場合、まず長さの読取り、次に読み取られた長さに応じたデータの読取りにこのスタイルが使用されます。
03joe13DUZac.1HKVmIY
ネイティブ・スキーマ: ネイティブ・データから実際の長さも読み取られる場合
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="fixedlength">
<complexType>
<sequence>
<element name="user" type="string" nxsd:style="fixedLength"
nxsd:identifierLength="2" />
<element name="encr_user" type="string" nxsd:style="fixedLength"
nxsd:identifierLength="2" />
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML: ネイティブ・データから実際の長さも読み取られる場合
<fixedlength xmlns="http://www.oracle.com/ias/processconnect"> <user>joe</user> <encr_user>DUZac.1HKVmIY</encr_user> </fixedlength>
このフォーマットは、終了マーク自体をデリミタではなく、実際のデータとして処理する場合に使用されます。マークが実際のデータの一部であるかどうかが不明な場合は、念のためにnxsd:quotedByを使用できます。 nxsd:quotedByを指定すると、対応するネイティブ・データが引用符で囲まれる場合と囲まれない場合があります。 囲まれている場合、実際のデータは、nxsd:quotedByでの指定に応じて開始の引用符から終了の引用符まで読み取られます。 囲まれていない場合は、terminatedBy文字が検出されるまで読み取られます。
以降の各項では、引用符付き(オプション)と引用符なしのシナリオを示します。
変換されるネイティブ・データ・フォーマット: 引用符付き(オプション)
Fred,"2 Old Street, Old Town,Manchester",20-08-1954,0161-499-1718
ネイティブ・スキーマ: 引用符付き(オプション)
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="terminated">
<complexType>
<sequence>
<element name="PersonName" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," />
<element name="Address" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy="""/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," />
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
</sequence>
</complexType>
</element>
ネイティブ・スキーマを使用して変換したXML: 引用符付き(オプション)
<terminated xmlns="http://www.oracle.com/ias/processconnect"> <PersonName>Fred</PersonName> <Address>2 Old Street, Old Town,Manchester</Address> <DOB>20-08-1954</DOB> <Telephone>0161-499-1718</Telephone> </terminated>
変換されるネイティブ・データ・フォーマット: 引用符なし
データが特定の文字列または文字で終了する場合に使用されます。
1020,16,18,,1580.00
ネイティブ・スキーマ: 引用符なし
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="terminated">
<complexType>
<sequence>
<element name="product" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," />
<element name="ordered" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," />
<element name="inventory" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," />
<element name="backlog" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," />
<element name="listprice" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML: 引用符なし
<terminated xmlns="http://www.oracle.com/ias/processconnect"> <product>1020</product> <ordered>16</ordered> <inventory>18</inventory> <backlog></backlog> <listprice>1580.00</listprice> </terminated>
ネイティブ・データがマークで囲まれている場合に使用されます。
次のような例が用意されています。
左右の囲みマークが異なる場合
左右の囲みマークが同じ場合
変換されるネイティブ・データ・フォーマット: 左右の囲みマークが異なる場合
(Ernest Hemingway Museum){Whitehead St.}
ネイティブ・スキーマ: 左右の囲みマークが異なる場合
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:tns="http://www.oracle.com/ias/processconnect"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="limstring">
<complexType>
<sequence>
<element name="Landmark" type="string" nxsd:style="surrounded" nxsd:leftSurroundedBy="(" nxsd:rightSurroundedBy=")" />
<element name="Street" type="string" nxsd:style="surrounded" nxsd:leftSurroundedBy="{" nxsd:rightSurroundedBy="}" />
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML: 左右の囲みマークが異なる場合
<limstring xmlns="http://www.oracle.com/ias/processconnect"> <Landmark>Ernest Hemingway Museum</Landmark> <Street>Whitehead St.</Street> </limstring>
変換されるネイティブ・データ・フォーマット: 左右の囲みマークが同じ場合
.FL..Florida Keys.+Key West+
ネイティブ・スキーマ: 左右の囲みマークが同じ場合
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:tns="http://www.oracle.com/ias/processconnect"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="limstring">
<complexType>
<sequence>
<element name="State" type="string" nxsd:style="surrounded" nxsd:surroundedBy="."/>
<element name="Region" type="string" nxsd:style="surrounded" nxsd:surroundedBy="." />
<element name="City" type="string" nxsd:style="surrounded" nxsd:surroundedBy="+" />
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML: 左右の囲みマークが同じ場合
<limstring xmlns="http://www.oracle.com/ias/processconnect"> <State>FL</State> <Region>Florida Keys</Region> <City>Key West</City> </limstring>
このフォーマットは、次の特性のあるリストに適用されます。
すべてのアイテムが同じマークで区切られているが最後のアイテムが異なるマークで終了している場合(バインド済)
以降の各項では、変換されるデータのフォーマット、ネイティブ・スキーマおよび変換済XMLについて説明します。
変換されるネイティブ・データ・フォーマット:
125,200,255
ネイティブ・スキーマ:
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:tns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="list" type="tns:Colors" />
<complexType name="Colors" nxsd:style="list" nxsd:itemSeparatedBy=","
nxsd:listTerminatedBy="${eol}">
<sequence>
<element name="Red" type="string" />
<element name="Green" type="string" />
<element name="Blue" type="string" />
</sequence>
</complexType>
</schema>
ネイティブ・スキーマを使用して変換したXML
<list xmlns="http://www.oracle.com/ias/processconnect"> <Red>125</Red> <Green>200</Green> <Blue>255</Blue> </list>
最後のアイテムを含みすべてのアイテムが同じマークで区切られている場合(バインドなし)
以降の各項では、変換されるデータのフォーマット、ネイティブ・スキーマおよび変換済XMLについて説明します。
変換されるネイティブ・データ・フォーマット:
configure;startup;runtest;shutdown;
ネイティブ・スキーマ:
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:tns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="list" type="tns:CommandSet" />
<complexType name="CommandSet" nxsd:style="list" nxsd:itemSeparatedBy=";">
<sequence>
<element name="Cmd1" type="string" />
<element name="Cmd2" type="string" />
<element name="Cmd3" type="string" />
<element name="Cmd4" type="string" />
</sequence>
</complexType>
</schema>
ネイティブ・スキーマを使用して変換したXML
<list xmlns="http://www.oracle.com/ias/processconnect"> <Cmd1>configure</Cmd1> <Cmd2>startup</Cmd2> <Cmd3>runtest</Cmd3> <Cmd4>shutdown</Cmd4> </list>
これは、個々のセルが区切り文字で区切られていて、配列の最後のセルが終了文字で終了している複合型の配列用です。
次のような例が用意されています。
すべてのセルが同じマークで区切られているが最後のセルが異なるマークで終了している場合(バインド済)
以降の各項では、変換されるデータのフォーマット、ネイティブ・スキーマおよび変換済XMLについて説明します。
変換されるネイティブ・データ・フォーマット:
"Smith, John","1 Old Street, Old Town, Manchester",,"0161-499-1717". Fred,"2 Old Street, Old Town,Manchester","20-08-1954","0161-499-1718". "Smith, Bob",,,0161-499-1719.#
ネイティブ・スキーマ:
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD"><element name="array">
<complexType>
<sequence>
<element name="Member" maxOccurs="unbounded"
nxsd:style="array" nxsd:cellSeparatedBy="${eol}"
nxsd:arrayTerminatedBy="#">
<complexType>
<sequence>
<element name="Name" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Address" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="." nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<array xmlns="http://www.oracle.com/ias/processconnect">
<Member>
<Name>Smith, John</Name>
<Address>1 Old Street, Old Town, Manchester</Address>
<DOB></DOB>
<Telephone>0161-499-1717</Telephone>
</Member>
<Member>
<Name>Fred</Name>
<Address>2 Old Street, Old Town,Manchester</Address>
<DOB>20-08-1954</DOB>
<Telephone>0161-499-1718</Telephone>
</Member>
<Member>
<Name>Smith, Bob</Name>
<Address></Address>
<DOB></DOB>
<Telephone>0161-499-1719</Telephone>
</Member>
</array>
最後のセルを含み、すべてのセルが同じマークで区切られている場合(バインドなし)
以降の各項では、変換されるデータのフォーマット、ネイティブ・スキーマおよび変換済XMLについて説明します。
変換されるネイティブ・データ・フォーマット:
"Smith, John","1 Old Street, Old Town, Manchester",,"0161-499-1717". Fred,"2 Old Street, Old Town,Manchester","20-08-1954","0161-499-1718". "Smith, Bob",,,0161-499-1719.
ネイティブ・スキーマ:
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="array">
<complexType>
<sequence>
<element name="Member" maxOccurs="unbounded"
nxsd:style="array" nxsd:cellSeparatedBy="\r\n">
<complexType>
<sequence>
<element name="Name" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Address" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="." nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<array xmlns="http://www.oracle.com/ias/processconnect">
<Member>
<Name>Smith, John</Name>
<Address>1 Old Street, Old Town, Manchester</Address>
<DOB></DOB>
<Telephone>0161-499-1717</Telephone>
</Member>
<Member>
<Name>Fred</Name>
<Address>2 Old Street, Old Town,Manchester</Address>
<DOB>20-08-1954</DOB>
<Telephone>0161-499-1718</Telephone>
</Member>
<Member>
<Name>Smith, Bob</Name>
<Address></Address>
<DOB></DOB>
<Telephone>0161-499-1719</Telephone>
</Member>
</array>
セルはマークで区切られていないが最後のセルがマークで終了している場合(バインド済)
以降の各項では、変換されるデータのフォーマット、ネイティブ・スキーマおよび変換済XMLについて説明します。
変換されるネイティブ・データ・フォーマット:
"Smith, John","1 Old Street, Old Town, Manchester",,"0161-499-1717" Fred,"2 Old Street, Old Town,Manchester","20-08-1954","0161-499-1718" "Smith, Bob",,,0161-499-1719 #
ネイティブ・スキーマ:
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="array">
<complexType>
<sequence>
<element name="Member" maxOccurs="unbounded"
nxsd:style="array" nxsd:arrayTerminatedBy="#">
<complexType>
<sequence>
<element name="Name" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/> <element name="Address" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="\r\n" nxsd:quotedBy='"'/> </sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<array xmlns="http://www.oracle.com/ias/processconnect">
<Member>
<Name>Smith, John</Name>
<Address>1 Old Street, Old Town, Manchester</Address>
<DOB></DOB>
<Telephone>0161-499-1717</Telephone>
</Member>
<Member>
<Name>Fred</Name>
<Address>2 Old Street, Old Town,Manchester</Address>
<DOB>20-08-1954</DOB>
<Telephone>0161-499-1718</Telephone>
</Member>
<Member>
<Name>Smith, Bob</Name>
<Address></Address>
<DOB></DOB>
<Telephone>0161-499-1719</Telephone>
</Member>
</array>
ネイティブ・データからセルの数が読み取られる場合
以降の各項では、変換されるデータのフォーマット、ネイティブ・スキーマおよび変換済XMLについて説明します。
変換されるネイティブ・データ・フォーマット:
3"Smith, John","1 Old Street, Old Town, Manchester",,"0161-499-1717" Fred,"2 Old Street, Old Town,Manchester","20-08-1954","0161-499-1718" "Smith, Bob",,,0161-499-1719
ネイティブ・スキーマ:
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="arrayidentifierlength">
<complexType>
<sequence>
<element name="Member" maxOccurs="unbounded" nxsd:style="array"
nxsd:arrayIdentifierLength="1">
<complexType>
<sequence>
<element name="Name" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Address" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="\r\n" nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<arrayidentifierlength xmlns="http://www.oracle.com/ias/processconnect">
<Member>
<Name>Smith, John</Name>
<Address>1 Old Street, Old Town, Manchester</Address>
<DOB></DOB>
<Telephone>0161-499-1717</Telephone>
</Member>
<Member>
<Name>Fred</Name>
<Address>2 Old Street, Old Town,Manchester</Address>
<DOB>20-08-1954</DOB>
<Telephone>0161-499-1718</Telephone>
</Member>
<Member>
<Name>Smith, Bob</Name>
<Address></Address>
<DOB></DOB>
<Telephone>0161-499-1719</Telephone>
</Member>
</arrayidentifierlength>
明示的な配列長
以降の各項では、変換されるデータのフォーマット、ネイティブ・スキーマおよび変換済XMLについて説明します。
変換されるネイティブ・データ・フォーマット:
3;John;Steve;Paul;Todd;
ネイティブ・スキーマ:
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="array">
<annotation>
<appinfo>
<nxsd:variables>
<nxsd:variable name="len" />
</nxsd:variables>
</appinfo>
</annotation>
<complexType>
<sequence>
<element name="TotalMembers" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";">
<annotation>
<appinfo>
<nxsd:variables>
<nxsd:assign name="len" value="${0}" />
</nxsd:variables>
</appinfo>
</annotation>
</element>
<element name="Member" type="string" minOccurs="0" maxOccurs="unbounded"
nxsd:style="array,terminated" nxsd:arrayLength="${len}"
nxsd:terminatedBy=";" />
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<array xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <TotalMembers>3</TotalMembers> <Member>John</Member> <Member>Steve</Member> <Member>Paul</Member> </array>
この項では、条件付き処理に関する次のような例が用意されています。
条件に基づきsequenceモデル・グループ内の複数の要素を処理する場合
条件に基づきchoiceモデル・グループ内の1つの要素を処理する場合
以降の各項では、変換されるデータのフォーマット、ネイティブ・スキーマおよび変換済XMLについて説明します。
変換されるネイティブ・データ・フォーマット:
PO28/06/2004^|ABCD Inc.|Oracle OracleApps025070,000.00 Database 021230,000.00 ProcessCon021040,000.00 PO01/07/2004^|EFGH Inc.|Oracle Websphere 025070,000.00 DB2 021230,000.00 Eclipse 021040,000.00 SO29/06/2004|Oracle Apps|5 Navneet Singh PO28/06/2004^|IJKL Inc.|Oracle Weblogic 025070,000.00 Tuxedo 021230,000.00 JRockit 021040,000.00 IN30/06/2004;Navneet Singh;Oracle;Oracle Apps;5;70,000.00;350,000.00
ネイティブ・スキーマ:
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:tns="http://www.oracle.com/ias/processconnect"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="container">
<complexType>
<choice maxOccurs="unbounded" nxsd:choiceCondition="fixedLength"
nxsd:length="2">
<element ref="tns:PurchaseOrder" nxsd:conditionValue="PO" />
<element ref="tns:SalesOrder" nxsd:conditionValue="SO" />
<element ref="tns:Invoice" nxsd:conditionValue="IN" />
</choice>
</complexType>
</element>
<!-- PO -->
<element name="PurchaseOrder" type="tns:POType"/>
<complexType name="POType">
<sequence>
<element name="Date" type="string" nxsd:style="terminated"
nxsd:terminatedBy="^" />
<element name="Buyer" type="string" nxsd:style="surrounded"
nxsd:surroundedBy="|" />
<element name="Supplier" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
<element name="Items">
<complexType>
<sequence>
<element name="Line-Item" minOccurs="3" maxOccurs="3">
<complexType>
<group ref="tns:LineItems" />
</complexType>
</element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
<group name="LineItems">
<sequence>
<element name="Id" type="string" nxsd:style="fixedLength" nxsd:length="10"
nxsd:padStyle="none"/>
<element name="Quantity" type="string" nxsd:style="fixedLength"
nxsd:identifierLength="2" />
<element name="Price" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
</sequence>
</group>
<!-- SO -->
<element name="SalesOrder" type="tns:SOType" />
<complexType name="SOType">
<sequence>
<element name="Date" type="string" nxsd:style="terminated"
nxsd:terminatedBy="|" />
<element name="Item" type="string" nxsd:style="terminated"
nxsd:terminatedBy="|" />
<element name="Quantity" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
<element name="Buyer" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
</sequence>
</complexType>
<!-- INV -->
<element name="Invoice" type="tns:INVType" />
<complexType name="INVType">
<sequence>
<element name="Date" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="Purchaser" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="Seller" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="Item" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="Price" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="Quantity" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="TotalPrice" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
</sequence>
</complexType>
</schema>
ネイティブ・スキーマを使用して変換したXML
<container xmlns="http://www.oracle.com/ias/processconnect">
<PurchaseOrder>
<Date>28/06/2004</Date>
<Buyer>ABCD Inc.</Buyer>
<Supplier>Oracle</Supplier>
<Items>
<Line-Item>
<Id>OracleApps</Id>
<Quantity>50</Quantity>
<Price>70,000.00</Price>
</Line-Item>
<Line-Item>
<Id>Database </Id>
<Quantity>12</Quantity>
<Price>30,000.00</Price>
</Line-Item>
<Line-Item>
<Id>ProcessCon</Id>
<Quantity>10</Quantity>
<Price>40,000.00</Price>
</Line-Item>
</Items>
</PurchaseOrder>
<PurchaseOrder>
<Date>01/07/2004</Date>
<Buyer>EFGH Inc.</Buyer>
<Supplier>Oracle</Supplier>
<Items>
<Line-Item>
<Id>Websphere </Id>
<Quantity>50</Quantity>
<Price>70,000.00</Price>
</Line-Item>
<Line-Item>
<Id>DB2 </Id>
<Quantity>12</Quantity>
<Price>30,000.00</Price>
</Line-Item>
<Line-Item>
<Id>Eclipse </Id>
<Quantity>10</Quantity>
<Price>40,000.00</Price>
</Line-Item>
</Items>
</PurchaseOrder>
<SalesOrder>
<Date>29/06/2004</Date>
<Item>Oracle Apps</Item>
<Quantity>5</Quantity>
<Buyer>Navneet Singh</Buyer>
</SalesOrder>
<PurchaseOrder>
<Date>28/06/2004</Date>
<Buyer>IJKL Inc.</Buyer>
<Supplier>Oracle</Supplier>
<Items>
<Line-Item>
<Id>Weblogic </Id>
<Quantity>50</Quantity>
<Price>70,000.00</Price>
</Line-Item>
<Line-Item>
<Id>Tuxedo </Id>
<Quantity>12</Quantity>
<Price>30,000.00</Price>
</Line-Item>
<Line-Item>
<Id>JRockit </Id>
<Quantity>10</Quantity>
<Price>40,000.00</Price>
</Line-Item>
</Items>
</PurchaseOrder>
<Invoice>
<Date>30/06/2004</Date>
<Purchaser>Navneet Singh</Purchaser>
<Seller>Oracle</Seller>
<Item>Oracle Apps</Item>
<Price>5</Price>
<Quantity>70,000.00</Quantity>
<TotalPrice>350,000.00</TotalPrice>
</Invoice>
</container>
条件に基づきsequenceモデル・グループ内の複数の要素を処理する場合
以降の各項では、変換されるデータのフォーマット、ネイティブ・スキーマおよび変換済XMLについて説明します。
変換されるネイティブ・データ・フォーマット:
PO28/06/2004^|ABCD Inc.|Oracle OracleApps025070,000.00 Database 021230,000.00 ProcessCon021040,000.00 PO01/07/2004^|EFGH Inc.|Oracle Websphere 025070,000.00 DB2 021230,000.00 Eclipse 021040,000.00 SO29/06/2004|Oracle Apps|5 Navneet Singh PO28/06/2004^|IJKL Inc.|Oracle Weblogic 025070,000.00 Tuxedo 021230,000.00 JRockit 021040,000.00 IN30/06/2004;Navneet Singh;Oracle;Oracle Apps;5;70,000.00;350,000.00
ネイティブ・スキーマ:
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:tns="http://www.oracle.com/ias/processconnect"
targetNamespace="http://www.oracle.com/ias/processconnect"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="container">
<complexType>
<sequence maxOccurs="unbounded">
<element ref="tns:PurchaseOrder" minOccurs="0" nxsd:startsWith="PO" />
<element ref="tns:SalesOrder" minOccurs="0" nxsd:startsWith="SO" />
<element ref="tns:Invoice" minOccurs="0" nxsd:startsWith="IN" />
</sequence>
</complexType>
</element>
<!-- PO -->
<element name="PurchaseOrder" type="tns:POType"/>
<complexType name="POType">
<sequence>
<element name="Date" type="string" nxsd:style="terminated"
nxsd:terminatedBy="^" /> <element name="Buyer" type="string" nxsd:style="surrounded"
nxsd:surroundedBy="|" />
<element name="Supplier" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
<element name="Items">
<complexType>
<sequence>
<element name="Line-Item" minOccurs="3" maxOccurs="3">
<complexType>
<group ref="tns:LineItems" />
</complexType>
</element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
<group name="LineItems">
<sequence>
<element name="Id" type="string" nxsd:style="fixedLength" nxsd:length="10"
nxsd:padStyle="none"/>
<element name="Quantity" type="string" nxsd:style="fixedLength"
nxsd:identifierLength="2" />
<element name="Price" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
</sequence>
</group>
<!-- SO -->
<element name="SalesOrder" type="tns:SOType" />
<complexType name="SOType">
<sequence>
<element name="Date" type="string" nxsd:style="terminated"
nxsd:terminatedBy="|" />
<element name="Item" type="string" nxsd:style="terminated"
nxsd:terminatedBy="|" />
<element name="Quantity" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
<element name="Buyer" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" /> </sequence>
</complexType>
<!-- INV -->
<element name="Invoice" type="tns:INVType" />
<complexType name="INVType">
<sequence>
<element name="Date" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="Purchaser" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="Seller" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="Item" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" /> <element name="Price" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="Quantity" type="string" nxsd:style="terminated"
nxsd:terminatedBy=";" />
<element name="TotalPrice" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
</sequence>
</complexType>
</schema>
ネイティブ・スキーマを使用して変換したXML
<container xmlns="http://www.oracle.com/ias/processconnect">
<PurchaseOrder>
<Date>28/06/2004</Date>
<Buyer>ABCD Inc.</Buyer>
<Supplier>Oracle</Supplier>
<Items>
<Line-Item>
<Id>OracleApps</Id>
<Quantity>50</Quantity>
<Price>70,000.00</Price>
</Line-Item>
<Line-Item>
<Id>Database </Id>
<Quantity>12</Quantity>
<Price>30,000.00</Price>
</Line-Item>
<Line-Item>
<Id>ProcessCon</Id>
<Quantity>10</Quantity>
<Price>40,000.00</Price>
</Line-Item>
</Items>
</PurchaseOrder>
<PurchaseOrder>
<Date>01/07/2004</Date>
<Buyer>EFGH Inc.</Buyer>
<Supplier>Oracle</Supplier>
<Items>
<Line-Item>
<Id>Websphere </Id>
<Quantity>50</Quantity>
<Price>70,000.00</Price>
</Line-Item>
<Line-Item>
<Id>DB2 </Id>
<Quantity>12</Quantity>
<Price>30,000.00</Price>
</Line-Item>
<Line-Item>
<Id>Eclipse </Id>
<Quantity>10</Quantity>
<Price>40,000.00</Price>
</Line-Item>
</Items>
</PurchaseOrder>
<SalesOrder>
<Date>29/06/2004</Date>
<Item>Oracle Apps</Item>
<Quantity>5</Quantity>
<Buyer>Navneet Singh</Buyer>
</SalesOrder>
<PurchaseOrder>
<Date>28/06/2004</Date>
<Buyer>IJKL Inc.</Buyer>
<Supplier>Oracle</Supplier>
<Items>
<Line-Item>
<Id>Weblogic </Id>
<Quantity>50</Quantity>
<Price>70,000.00</Price>
</Line-Item>
<Line-Item>
<Id>Tuxedo </Id>
<Quantity>12</Quantity>
<Price>30,000.00</Price>
</Line-Item>
<Line-Item>
<Id>JRockit </Id>
<Quantity>10</Quantity>
<Price>40,000.00</Price>
</Line-Item>
</Items>
</PurchaseOrder>
<Invoice>
<Date>30/06/2004</Date>
<Purchaser>Navneet Singh</Purchaser>
<Seller>Oracle</Seller>
<Item>Oracle Apps</Item>
<Price>5</Price>
<Quantity>70,000.00</Quantity>
<TotalPrice>350,000.00</TotalPrice>
</Invoice>
</container>
この例では日付の定義方法を示します。
変換されるネイティブ・データ・フォーマット
11/16/0224/11/02 11-20-2002 23*11*2002 01/02/2003 01:02 01/02/2003 03:04:05
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="dateformat">
<complexType>
<sequence>
<element name="StartDate" type="dateTime" nxsd:dateFormat="MM/dd/yy"
nxsd:style="fixedLength" nxsd:length="8" />
<element name="EndDate" type="dateTime" nxsd:dateFormat="dd/MM/yy"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="Milestone" type="dateTime" nxsd:dateFormat="MM-dd-yyyy"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="DueDate" type="dateTime" nxsd:dateFormat="dd*MM*yyyy"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="Date" type="dateTime" nxsd:dateFormat="MM/dd/yyyy hh:mm"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="Date" type="dateTime" nxsd:dateFormat="MM/dd/yyyy hh:mm:ss"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<dateformat xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <StartDate>2002-11-16T00:00:00</StartDate> <EndDate>2002-11-24T00:00:00</EndDate> <Milestone>2002-11-20T00:00:00</Milestone> <DueDate>2002-11-23T00:00:00</DueDate> <Date>2003-01-02T01:02:00</Date> <Date>2003-01-02T03:04:05</Date> </dateformat>
|
注意: 既存の日付フォーマットにnxsd:dateParsingMode="lax/strict"およびロケール・サポートが追加されています。 |
次の例に、nxsd:dateParsingMode="lax/strict"およびロケール・サポートの使用方法を示します。
変換されるネイティブ・データ・フォーマット
11/16/0224/11/02 11-20-2002 23*11*2002 01/02/2003 01:02 01/02/2003 03:04:05 Thu, 26 May 2005 15:50:11 India Standard Time Do, 26 Mai 2005 15:43:10 Indische Normalzeit 20063202
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="dateformat">
<complexType>
<sequence>
<element name="StartDate" type="date" nxsd:dateFormat="MM/dd/yy"
nxsd:localeLanguage="en" nxsd:style="fixedLength" nxsd:length="8" />
<element name="EndDate" type="date" nxsd:dateFormat="dd/MM/yy"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="Milestone" type="dateTime" nxsd:dateFormat="MM-dd-yyyy"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="DueDate" type="dateTime" nxsd:dateFormat="dd*MM*yyyy"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="Date" type="dateTime" nxsd:dateFormat="MM/dd/yyyy hh:mm"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="Date" type="dateTime" nxsd:dateFormat="MM/dd/yyyy hh:mm:ss"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="LongDateInEnglish" type="dateTime" nxsd:dateFormat="EEE, d
MMM yyyy HH:mm:ss zzzz" nxsd:localeLanguage="en" nxsd:localeCountry="US"
nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
<element name="LongDateInGerman" type="dateTime" nxsd:dateFormat="EEE, d
MMM yyyy HH:mm:ss zzzz" nxsd:localeLanguage="de" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" />
<element name="InvalidDate" type="dateTime" nxsd:dateParsingMode="lax"
nxsd:dateFormat="yyyyMMdd" nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
</sequence>
</complexType>
</element>
</schema>
変換済のXML
<dateformat xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <StartDate>2002-11-16</StartDate> <EndDate>2002-11-24</EndDate> <Milestone>2002-11-20T00:00:00</Milestone> <DueDate>2002-11-23T00:00:00</DueDate> <Date>2003-01-02T01:02:00</Date> <Date>2003-01-02T03:04:05</Date> <LongDateInEnglish>2005-05-26T15:50:11</LongDateInEnglish> <LongDateInGerman>2005-05-26T15:43:10</LongDateInGerman> <InvalidDate>2008-08-02T00:00:00</InvalidDate> </dateformat>
この例では変数の使用方法を示します。
変換されるネイティブ・データ・フォーマット
{,;}Fred,"2 Old Street, Old Town,Manchester","20-08-1954";"0161-499-1718"
phone-2
phone-3
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="variable">
<annotation>
<documentation>
1. var1 - variable declaration
2. var2 - variable declaration with default value
3. EOL - variable declaration with referencing a system variable
</documentation>
<appinfo>
<junkies/>
<nxsd:variables>
<nxsd:variable name="var1" />
<nxsd:variable name="var2" value="," />
<nxsd:variable name="SystemEOL" value="${system.line.separator}" />
</nxsd:variables>
<junkies/>
<junkies/>
<junkies/>
</appinfo>
</annotation>
<complexType>
<sequence>
<element name="delims" type="string" nxsd:style="surrounded"
nxsd:leftSurroundedBy="{" nxsd:rightSurroundedBy="}" >
<annotation>
<appinfo>
<junkies/>
<junkies/>
<junkies/>
<nxsd:variables>
<nxsd:assign name="var1" value="${0,1}"/>
<nxsd:assign name="var2" value="${1}" />
</nxsd:variables>
</appinfo>
</annotation>
</element>
<element name="PersonName" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${var1}" nxsd:quotedBy=""" />
<element name="Address" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${var1}" nxsd:quotedBy="""/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${var2}" nxsd:quotedBy='"'/>
<element name="Telephone1" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" nxsd:quotedBy='"'/>
<element name="Telephone2" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" nxsd:quotedBy='"'/>
<element name="Telephone3" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<variable xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <delims>,;</delims> <PersonName>Fred</PersonName> <Address>2 Old Street, Old Town,Manchester</Address> <DOB>20-08-1954</DOB> <Telephone1>0161-499-1718</Telephone1> <Telephone2>phone-2</Telephone2> <Telephone3>phone-3</Telephone3> </variable>
ネイティブ・フォーマットでは、データが読み取られるときに、次の例に示すように、指定のデータに接頭辞または接尾辞、あるいはその両方が追加されます。
変換されるネイティブ・データ
Fred,"2 Old Street, Old Town,Manchester","20-08-1954",0161-499-1718
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD"
>
<element name="terminated">
<complexType>
<sequence>
<element name="PersonName" type="string" nxsd:prefixWith="Mr."
nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy=""" />
<element name="Address" type="string" nxsd:suffixWith="]]"
nxsd:prefixWith="[[" nxsd:style="terminated" nxsd:terminatedBy=","
nxsd:quotedBy="""/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<terminated xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <PersonName>Mr.Fred</PersonName> <Address>[[2 Old Street, Old Town,Manchester]]</Address> <DOB>20-08-1954</DOB> <Telephone>0161-499-1718</Telephone> </terminated>
トランスレータは、次の例に示すように、skipModeに応じてデータの読取り前または読取り後にスキップします。
変換されるネイティブ・データ
Fred,"2 Old Street, Old Town,Manchester","20-08-1954",0161-499-1718
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD"
>
<element name="terminated">
<complexType>
<sequence>
<element name="PersonName" type="string" nxsd:skip="5"
nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy=""" />
<element name="Address" type="string" nxsd:skipMode="before" nxsd:skip="3"
nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="""/>
<element name="DOB" type="string" nxsd:skipMode="after" nxsd:skip="6"
nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<terminated xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <PersonName>Fred</PersonName> <Address>2 Old Street, Old Town,Manchester</Address> <DOB>20-08-1954</DOB> <Telephone>99-1718</Telephone> </terminated>
fixedおよびdefault値の定義nxsd注釈を付けずに要素を宣言し、値fixedまたはdefaultを指定すると、トランスレータはその値を使用して移動するのみで、例外をスローしません。
変換されるネイティブ・データ
Fred,"2 Old Street, Old Town,Manchester","20-08-1954","0161-499-1718"
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="terminated">
<annotation>
<appinfo>
<nxsd:variables>
<nxsd:variable name="x" value="hello" />
</nxsd:variables>
<junkies/>
<junkies/>
<junkies/>
</appinfo>
</annotation>
<complexType>
<sequence>
<element name="PersonName" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy=""" />
<element name="Age" type="string" fixed="16" />
<element name="Address" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy="""/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="salutation" type="string" default="${x}" />
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<terminated xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <PersonName>Fred</PersonName> <Age>16</Age> <Address>2 Old Street, Old Town,Manchester</Address> <DOB>20-08-1954</DOB> <salutation>hello</salutation> <Telephone>0161-499-1718</Telephone> </terminated>
writeの定義writeは、実際のデータの書込み前または書込み後に、出力ストリームの現在位置にリテラルを書き込みます。
入力XML
<terminated xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <PersonName>Fred</PersonName> <Address>2 Old Street, Old Town,Manchester</Address> <DOB>20-08-1954</DOB> <Telephone>0161-499-1718</Telephone> </terminated>
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD"
>
<element name="terminated">
<complexType>
<sequence>
<element name="PersonName" type="string" nxsd:writeMode="before"
nxsd:write="Mr." nxsd:style="terminated" nxsd:terminatedBy=","
nxsd:quotedBy=""" />
<element name="Address" type="string" nxsd:writeMode="after"
nxsd:write="Over." nxsd:style="terminated" nxsd:terminatedBy=","
nxsd:quotedBy="""/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したデータ
Mr.Fred,"2 Old Street, Old Town,Manchester",Over.20-08-1954,0161-499-1718
LookAheadの使用方法には、次の2つのタイプがあります。
タイプ1: LookAhead X charsは、スタイルを使用して位置から値を読み取り、指定のリテラルと照合します。
タイプ2: LookAhead X charsは、スタイルを使用して位置から値を読み取り、その値を後で使用できるように変数に格納します。
LookAhead: タイプ1
ネイティブ・スキーマではLookAhead X charsは、スタイルを使用して位置から値を読み取り、その値を後で使用できるように変数に格納します。
変換されるネイティブ・データ・フォーマット
Name1,"2 Old Street, Old Town,Manchester",20-08-1954,"0161-499-1718", YES Name2,"2 Old Street, Old Town,Manchester",20-08-1954,"0161-499-1718", NO Name3,"2 Old Street, Old Town,Manchester",20-08-1954,"0161-499-1718", NO Name4,"2 Old Street, Old Town,Manchester",20-08-1954,"0161-499-1718", YES
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<!--
nxsd:lookAhead="70" nxsd:scan="3"
-->
<element name="LookAhead">
<complexType>
<choice maxOccurs="unbounded" nxsd:choiceCondition="${x}" nxsd:lookAhead="70"
nxsd:scanLength="3" nxsd:assignTo="${x}">
<element name="Record1" type="string" nxsd:conditionValue="YES"
nxsd:style="terminated" nxsd:terminatedBy="," nxsd:skipMode="after"
nxsd:skipUntil="${eol}" />
<element name="Record2" type="string" nxsd:conditionValue="NO "
nxsd:style="terminated" nxsd:terminatedBy="," nxsd:skipMode="after"
nxsd:skipUntil="${eol}" />
</choice>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<LookAhead xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <Record1>Name1</Record1> <Record2>Name2</Record2> <Record2>Name3</Record2> <Record1>Name4</Record1> </LookAhead>
LookAhead: タイプ2
LookAhead X charsは、スタイルを使用して位置から値を読み取り、指定のリテラルと照合します。
変換されるネイティブ・データ・フォーマット
Fred,"2 Old Street, Old Town,Manchester","20-08-1954","0161-499-1718",YES
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD">
<element name="LookAhead">
<complexType>
<sequence minOccurs="0" nxsd:lookAhead="70" nxsd:lookFor="YES">
<element name="PersonName" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy=""" />
<element name="Address" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy="""/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</schema>
ネイティブ・スキーマを使用して変換したXML
<LookAhead xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <PersonName>Fred</PersonName> <Address>2 Old Street, Old Town,Manchester</Address> <DOB>20-08-1954</DOB> <Telephone>0161-499-1718</Telephone> </LookAhead>
outboundHeaderの定義outboundHeaderの実際の内容には変数(特に${eol})を使用できます。 headerLinesおよびoutboundHeaderの両方が使用可能な場合、アウトバウンドではoutboundHeaderが優先されます。
|
注意: インバウンド方向では、ヘッダー・スキップ機能がサポートされています。 他の変数はアクセスできないか、リテラルのみが含まれているため、ヘッダーで使用できるのは事前定義済の変数のみです。 |
入力XML
<terminated xmlns="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"> <PersonName>Fred</PersonName> <Address>2 Old Street, Old Town,Manchester</Address> <DOB>20-08-1954</DOB> <Telephone>0161-499-1718</Telephone> </terminated>
ネイティブ・スキーマ
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/smoketest"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
nxsd:stream="chars"
nxsd:version="NXSD"
nxsd:hasHeader="true"
nxsd:outboundHeader="This is a header ${eol}">
<element name="terminated">
<complexType>
<sequence>
<element name="PersonName" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy=""" />
<element name="Address" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy="""/>
<element name="DOB" type="string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy='"'/>
<element name="Telephone" type="string" nxsd:style="terminated"
nxsd:terminatedBy="${eol}" nxsd:quotedBy='"'/>
</sequence>
</complexType>
</element>
</schema>
変換されたデータ
This is a header Fred,"2 Old Street, Old Town,Manchester",20-08-1954,0161-499-1718
表7-4に、<schema>タグにのみ適用可能なコンストラクトを示します。
表7-4 <schema>タグにのみ適用可能なコンストラクト
| 構文 | 説明 |
|---|---|
|
ネイティブ・データのバイト順。 |
|
|
実際のデータが保存されるエンコーディング。 |
|
|
ネイティブ・データの変換前にスキップする行数を指定する正の整数。 |
|
|
ネイティブ・データの変換前に指定された文字列までスキップします。 |
|
|
宣言されている場合、 |
|
|
データが文字とバイトのどちらで保存されるかを示します。許可された値は |
|
|
メッセージが大量にある場合に、ネイティブ・データの一意のメッセージ・セパレータを指定する文字列。 |
|
|
ネイティブ・データのタイプ。可能な値は |
|
|
宣言されている場合、 |
表7-5に、<schema>タグ以外のすべてのタグに適用可能なコンストラクトを示します。
表7-5 <schema>タグ以外のすべてのタグに適用可能なコンストラクト
| 構文 | 説明 |
|---|---|
|
指定された長さを占有しているネイティブ・データに保存される配列の長さ。 |
|
|
このコンストラクトの値は、配列の長さとして使用されます。また、有効な数値に解決される変数の場合もあります。この値は、それが指定されているパーティクルの nxsd:style="array" nxsd:arrayLength="10" これは、配列の長さが |
|
|
指定された文字列で終了する配列の最後のアイテム。 |
|
|
すでに宣言された変数に値を割り当てます。 |
|
|
指定された文字列で区切られるネイティブ・データの配列のセル。 |
|
|
|
|
|
|
|
|
ネイティブ・データの日付を表すJava日付フォーマット。 |
|
|
実際のデータの長さが保存されている文字数およびバイト数。 |
|
|
指定された文字列で区切られているリストのアイテム。 |
|
|
囲まれているネイティブ・データ。 |
|
|
読み取られるネイティブ・データの長さ。 固定長スタイルで使用されます。 |
|
|
指定された文字列で終了するリストの最後のアイテム。 |
|
|
入力ストリームの現在の位置よりも先の一致を検索します。 一致が検出されると、このコンストラクトが指定されているノードが処理され、検出されない場合はスキップされます。この機能は次のように使用します。 nxsd:lookAhead="20" nxsd:lookFor="abc" これは、 |
|
|
余白に使用される文字列。 |
|
|
|
|
|
指定された文字列で囲まれるネイティブ・データ。 |
|
|
指定されたバイト数または文字数をスキップします。 |
|
|
指定された行数をスキップします。 |
|
|
指定された文字列までスキップします。 |
|
|
ネイティブ・データの指定された文字列を検索します。存在する場合は、それが指定されている要素の処理を続行し、存在しない場合はスキップして次の要素を処理します。 |
|
|
入力ストリームからのネイティブ・データの読取りに使用されるスタイル。許可された値は |
|
|
指定された文字列で囲まれるネイティブ・データ。 |
|
|
指定された文字列で終了するネイティブ・データ。 |
|
|
単一の変数を宣言します。 |
|
|
一連の変数を宣言するか、すでに宣言された変数に有効な値を割り当てます。 |