ページの先頭行へ戻る
Big Data Integration ServerV1.4.0 加工編導入・運用ガイド
FUJITSU Software

3.4.4 自由な形式で出力する

出力形式の自由化機能を利用することで、XML形式またはCSV形式の入力ファイルを、自由な形式に変換して出力できます。

ここでは、XML形式の入力ファイルを3つの入力マスタファイルと連結して、新たに別のXML形式のデータに変換する例について説明します。

入力ジャーナルファイル

<Jnl>
     <Head>
        <Kbn>01</Kbn>
        <Number>1000</Number>
     </Head>
     <Body>
        <Meisai>
          <Code>AAA</Code>
          <Name>ブロックA</Name>
          <Value>1000</Value>
        </Meisai>
        <Meisai>
          <Code>BBB</Code>
          <Name>ブロックB</Name>
          <Value>1200</Value>
        </Meisai>
       <Meisai>
         <Code>CCC</Code>
         <Name>ブロックC</Name>
         <Value>800</Value>
       </Meisai>
    </Body>
    <Tail>
      <Total>3000</Total>
      <Biko>備考:稟議番号  第4023号</Biko>
    </Tail>
</Jnl>

入力マスタファイル1

<Mst1>
   <Kbn>01</Kbn>
   <KbnName>区分α</KbnName>
</Mst1>
<Mst1>
   <Kbn>02</Kbn>
   <KbnName>区分β</KbnName>
</Mst1>
<Mst1>
   <Kbn>03</Kbn>
   <KbnName>区分γ</KbnName>
</Mst1>

入力マスタファイル2

<Mst2>
   <DivCode>1000</DivCode>
   <DivName>第1開発部</DivName>
</Mst2>

入力マスタファイル3

<Mst3>
   <BlkCode>AAA</BlkCode>
   <BlkName>ブロックA</BlkName>
</Mst3>
<Mst3>
   <BlkCode>BBB</BlkCode>
   <BlkName>ブロックB</BlkName>
</Mst3>
<Mst3>
   <BlkCode>CCC</BlkCode>
   <BlkName>ブロックC</BlkName>
</Mst3>

連結条件

入力項目定義
(ListDef)
  {document(Journal)/Jnl/Body/Meisai{
      $Kbn    (../../Head/Kbn/text())[1],
      $Number (../../Head/Number/text())[1],
      $Code   (./Code/text())[1],
      $KbnP    (../../Head/Kbn)[1],
      $NumberP (../../Head/Number)[1],
      $CodeP  (./Code)[1],
      $ValueP (./Value)[1],
      $Bottom (../../Tail)[1]
  },
	  document(Master1){
      $M1kbn         /Mst1/Kbn/text(),
      $M1KbnNameP    /Mst1/KbnName
      },
	  document(Master2){
      $M2DivCode     /Mst2/DivCode/text(),
      $M2DivNameP    /Mst2/DivName
  },
	  document(Master3){
      $M3BlkCode /Mst3/BlkCode/text(),
      $M3BlkNameP  /Mst3/BlkName
   }
}
連結条件式  
(Jcondition)
  {join (Journal, Master1, $Kbn == $M1kbn, "LEFT OUTER"),
   join (Journal, Master2, $Number == $M2DivCode, "LEFT OUTER"),
   join (Journal, Master3, $Code == $M3BlkCode, "LEFT OUTER")
}
リターン式
(OutputDef)
{
"DATA{<Doc>\n\t<Head>%1%%2%%3%%4%</Head>
\t<Meisai>%5%%6%%7%</Meisai>
\t%8%\n</Doc>\n}"
$KbnP,$M1KbnNameP,$NumberP,$M2DivNameP,$CodeP,$M3BlkNameP,$ValueP,$Bottom}

連結結果

<Doc>
    <Head><Kbn>01</Kbn><KbnName>区分α</KbnName><Number>1000</Number><DivName>第1開発部</DivName></Head>
    <Meisai><Code>AAA</Code><BlkName>ブロックA</BlkName><Value>1000</Value></Meisai>
    <Tail>
      <Total>3000</Total>
      <Biko>備考:稟議番号  第4023号</Biko>
    </Tail>
</Doc>
<Doc>
    <Head><Kbn>01</Kbn><KbnName>区分α</KbnName><Number>1000</Number><DivName>第1開発部</DivName></Head>
    <Meisai><Code>BBB</Code><BlkName>ブロックB</BlkName><Value>1200</Value></Meisai>
    <Tail>
      <Total>3000</Total>
      <Biko>備考:稟議番号  第4023号</Biko>
    </Tail>
</Doc>
<Doc>
    <Head><Kbn>01</Kbn><KbnName>区分α</KbnName><Number>1000</Number><DivName>第1開発部</DivName></Head>
    <Meisai><Code>CCC</Code><BlkName>ブロックC</BlkName><Value>800</Value></Meisai>
    <Tail>
      <Total>3000</Total>
      <Biko>備考:稟議番号  第4023号</Biko>
    </Tail>
</Doc>

ポイント

繰返し項目のあるXMLを連結する場合、連結条件ファイルのListDefパラメタでは、レコードノード指定を使って定義します。

  1. 基点とするコンテキストノードを定義します。

  2. K略称には、出力したいデータによって、相対テキスト式、相対パス式または相対属性式を定義します。

出力する内容は、OutputDefパラメタに定義します。

  1. 出力する項目を、リターン項目に定義します。この例では、8個定義しています。

  2. 出力する形式を、出力形式のHEAD部、DATA部、TAIL部を使って定義します。この例では、HEAD部とTAIL部は省略し、DATA部だけを使って自由なXML形式を指定しています。リターン式に定義した8つの項目を埋め込んでいます。