定位置および区切りの混合の例

このタスクについて

ここでは、フラット・ファイル・スキーマを作成して定位置データと区切りデータの混合を解析する方法を例示します。 フラット・ファイル・スキーマを作成するには、最初にフラット・ファイル・データを分析して、 フラット・ファイル・スキーマに追加するフィールドおよびノードを決定する必要があります。 ここで示す例では、以下の 2 行のデータに対してフラット・ファイル・スキーマを作成します。

BuyRight Pharmacy;USACAMVI334;!389!22;34980;

Taylor Drugs;USANJWLB128;!778!23!523;5667;

以下の手順に示すように、 フラット・ファイル・スキーマのレコードおよびフィールドを定義するためのトップダウン方法を使用します。

手順

  1. ルート・ノードを作成します。
    1. 「プロジェクト」タブで 「フラット・ファイル・スキーマ (Flat File Schemas)」フォルダーを右クリックし、 「新規フラット・ファイル・スキーマ」を選択します。基本ウィザード (Basic Wizard)」ダイアログ・ボックスが開きます。
    2. 「名前」フィールドに Order と入力します。
    3. 「OK」をクリックします。 フラット・ファイル・スキーマ・エディターが開き、フラット・ファイル・スキーマが「プロジェクト」タブの「フラット・ファイル・スキーマ (Flat File Schemas)」フォルダーの下に表示されます。 さらに、同じ名前のルート・ノードが「スキーマ・レイアウト」タブに表示されます。
  2. データ内の最上位レベルの構造を決定します。 この例では、最も大きい構造は、それぞれがレコードを表す 2 つの行です。 このフラット・ファイル・データ内の 2 つのレコードは、図 1 に示すように、2 つのレコードの間にある行末コードで区切られています。
    図 1. 混合の例 1: ファイルのレコードが、レコードを構成する文字列と文字列の間にある行末コードで 区切られています。
  3. 以下の基準を使用して、子反復レコードを解析するようにルート・ノード Order を構成します。
    • 区切り文字を使用してデータをレコード単位に分けます。
    • 最後のレコードは区切り文字で終了しないため、文書の最後は EOS (ストリームの終わり) であると予期します。
    • 行末区切りコードを使用して、すべての子レコードを区切ります。
    • データとデータの間には区切り文字があると予期します。
    • 反復子レコードを予期します。
    • 行末区切りコードを使用して子反復レコードを区切ります。

    これらの基準を使用して、図 2に示すように、Order ノードの 「基本プロパティー」ペインおよび「区切り文字」ペインに以下の値を指定します。

    図 2. 「構造」が「区切り (Delimited)」となっていて、「文書は EOS で終了する (Delimited and Document ends with EOS)」にチェック・マークが付いている混合の例のペイン 1。 「行の末尾」オプションが選択され、「子区切り文字の位置」が「間 (In Between)」に設定されています。
  4. レコードを表すように下位ノードをルート・ノードに追加します。 「スキーマ・レイアウト」タブで Order ノードを右クリックします。 メニューから「新規の子」 > 「レコード」を 選択して、purchaseOrder と入力し、「OK」をクリックします。
  5. データにおける次のレベルの構造を決定します。 この例では、図 3 に示すように、次のレベルの構造はセミコロンで区切られたフィールドです。
    図 3. 混合の例 2: レコードの個々のフィールドはセミコロンで区切られています。
  6. 以下の基準の説明に従って、これらのフィールドを解析するように purchaseOrder ノードを構成します。
    • purchaseOrder ノードには 1 つ以上のオカレンスを指定できます。
    • 区切り文字を使用して、子フィールドになるレコードのデータを解析します。
    • データ間の区切り文字としてセミコロンを使用します。
    • データの後には区切り文字があると予期します。

    これらの基準を使用して、図 4に示すように、purchaseOrder ノードの 「基本プロパティー」ペインおよび「区切り文字」ペインに以下の値を指定します。

    図 4. 混合の例のペイン 2: 「構造」が「区切り (Delimited)」に設定されていて、 「最大」が「上限なし」に設定されていて、「文字」オプションが選択されています。 「子区切り文字の位置」は「後」に設定されています。
  7. 「スキーマ・レイアウト」タブで purchaseOrder ノードを右クリックし、 リストから「新規の子」オプションを選択して、purchaseOrder ノードのフィールドを追加します。 「一括追加」ダイアログ・ボックスが表示されます。
  8. 「一括追加」ダイアログ・ボックスで purchaseOrder ノードのすべての子レコードおよびフィールドを追加します。
    • 「追加」をクリックして、 「field1」「storeName」に変更します。 「ノード・タイプ」「フィールド」に設定したままにします。
    • 「追加」をクリックして、 「field2」「originCode」に変更します。 「ノード・タイプ」レコード に変更します。
    • 「追加」をクリックして、 「field3」「items」に変更します。 「ノード・タイプ」レコード に変更します。
    • 「追加」をクリックして、 「field4」「orderID」に変更します。 「ノード・タイプ」「フィールド」に設定したままにします。
    • 「OK」をクリックします。
  9. データにおける次のレベルの構造を決定します。 この例では、図 5 に示すように、次のレベルの構造は originCode レコードで見つかった定位置データ・セットです。
    図 5. 混合の例 3: originCode は、区切りレコードの定位置データのセクションです。
  10. 定位置になるように originCode レコードを構成します。
    1. 「スキーマ・レイアウト」タブで originCode ノードを選択します。 「基本プロパティー」が表示されます。
    2. 「構造」リストで「定位置 (Positional)」を選択します。
  11. 「スキーマ・レイアウト」タブで originCode ノードを右クリックして、 リストから「新規の子」オプションを選択して、originCode ノードの定位置フィールドを 追加します。一括追加」ダイアログ・ボックスが開きます。
  12. 一括追加」ダイアログ・ボックスで originCode ノードのすべての子レコードおよびフィールドを追加します。
    1. 「追加」をクリックして、 「field1」「countryCode」に変更します。 「ノード・タイプ」「フィールド」に設定したままにします。
    2. 「追加」をクリックして、 「field2」「stateCode」に変更します。 「ノード・タイプ」「フィールド」に設定したままにします。
    3. 「追加」をクリックして、 「field3」「cityCode」に変更します。 「ノード・タイプ」「フィールド」に設定したままにします。
    4. 「追加」をクリックして、 「field4」「storeCode」に変更します。 「ノード・タイプ」「フィールド」に設定したままにします。
    5. 「OK」をクリックします。
  13. 各定位置フィールドの「定位置プロパティー」を構成します。 originCode ノードの下位ノードごとに、「スキーマ・レイアウト」タブでノードを クリックして、以下のリストに示すように、「プロパティー」ペインの下部にある 「フィールド・オフセット」および「フィールド長」の値を設定します。
    • countryCode -
    • stateCode -
    • cityCode -
    • storeCode -

    「フィールド・オフセット」は、 各フィールドの originCode ストリングの先頭からではなく、originCode ストリングが 処理されているときの現行文字位置から調整されます。 この例では、countryCode が処理され、originString の 先頭の 3 文字が countryCode に割り当てられます。 stateCode が処理されると、図 6 に示すように、現行文字の位置はすでに 3 文字目の 位置にあるため、stateCode ストリングを処理するための開始点を 取得するために stateCode「フィールド・オフセット」の 1 が 現行文字位置に追加されます。

    図 6. 混合の例 4 は、現行のカーソル位置およびフィールド・オフセットを示します。
  14. データにおける次のレベルの構造を決定します。 この例では、図 7 に示すように、次のレベルの構造は感嘆符で区切られた反復フィールドです。
    図 7. 区切りデータが感嘆符によって示される混合の例 5。
  15. 以下の基準を使用して、子反復レコードを解析するように items ノードを構成します。
    • 区切り文字を使用してデータをフィールド単位に分けます。
    • 感嘆符を区切り文字として使用して、すべての子フィールドを区切ります。
    • データの前には区切り文字があると予期します。
    • 1 つ以上の反復子フィールドを予期します。
    • 感嘆符を区切り文字として使用して子反復フィールドを区切ります。

    これらの基準を使用して、図 8 に示すように、items ノードの 「基本プロパティー」ペインおよび「区切り文字」ペインに以下の値を指定します。

    図 8. 「子区切り文字の位置」が「前」に設定されている混合の例のペイン 3。
  16. 「スキーマ・レイアウト」タブで items ノードを右クリックし、 リストから「新規の子」 > 「フィールド」オプションを 選択して、items ノードに反復子フィールドを追加します。新規フィールド」ダイアログ・ボックスが開きます。
  17. 「フィールド名」item と入力して、 「OK」をクリックします。
  18. 図 9 に示すように、1 つ以上のオカレンスが含まれるように item ノードを構成します。
    図 9. 「最大反復 (Maximum Repeat)」が「上限なし」に設定されている混合の例のペイン 4。
    フラット・ファイル・スキーマが完成し、テストの準備が整いました。
  19. 以下のテキストをテスト・ペインの左サブペインに貼り付けます。

    BuyRight Pharmacy;USACAMVI334;!389!22;34980;

    Taylor Drugs;USANJWLB128;!778!23!523;5667;

    このデータは、mixedData.txt ファイルでも提供されています。 Studio のインストール時にデフォルトを受け入れた場合、 このファイルはディレクトリー C:¥Program Files¥IBM¥WebSphere Cast Iron Studio 3.X¥Samples¥FlatFileSchema にあります。
    重要: 最後の行の後に復帰を追加しないでください。
  20. 「テスト」アイコンをクリックします。
    テスト・アイコン
    保存の確認」ダイアログ・ボックスが開きます。
  21. 「はい」をクリックします。 以下のデータの XML 表現が、テスト・ペインに表示されます。
    <?xml version="1.0" encoding="UTF-8"?>
    <Order>
    	<purchaseOrder>
    		<storeName>BuyRight Pharmacy</storeName>
    		<originCode>
    			<countryCode>USA</countryCode>
    			<stateCode>CA</stateCode
    			<cityCode>MVI</cityCode>
    			<storeCode>334</storeCode>
    		</originCode>
    		<items>
    			<item>389</item>
    			<item>22</item>
    		</items>
    		<orderId>34980</orderId>
    	</purchaseOrder>
    	<purchaseOrder>
    		<storeName>Taylor Drugs</storeName>
    		<originCode>
    			<countryCode>USA</countryCode>
    			<stateCode>NJ</stateCode>
    			<cityCode>WLB</cityCode>
    			<storeCode>128</storeCode>
    		</originCode>
    		<items>
    			<item>778</item>
    			<item>23</item>
    			<item>523</item>
    		</items>
    		<orderId>5667</orderId>
    	</purchaseOrder>
    </Order>
  22. 「スキーマ・レイアウト」タブで item ノードをクリックします。 図 10 に示すように、テスト・ペインの右サブペインで、解析されて item ノードに入れられたデータが 強調表示されます。
    図 10. 強調表示された item ノード
  23. state ノードをクリックして、state ノードに割り当てられたデータを表示します。
    注: Order フラット・ファイル・スキーマの参照実装が、FlatFileSchemasExample プロジェクトに用意されています。 FlatFileSchemasExample プロジェクトを表示したり開いたりするには、『グループの例』の ステップ 1 と 2 に従って、Order フラット・ファイル・スキーマをダブルクリックします。 Order フラット・ファイル・スキーマのノードが、「スキーマ・レイアウト」タブに 表示され、Order ルート・ノードのプロパティーが右ペインに示されます。