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

3.4.6 CDATAセクションを含むデータを出力する

出力形式の自由化機能を利用して、XML形式の入力データを別のXML用の表現形式に変換する場合、xml_convert関数を使います。しかし、CDATAセクションを含むXML形式の入力データに対して、xml_convert関数を使って別のXML用の表現形式に変換すると、CDATAセクション内の文字列も変換対象となってしまいます。イメージを以下に示します。


CDATAセクションで書かれたXML形式の入力データを変換対象とせず、そのままのデータ値で出力する場合は、以下の関数を指定します。

以下に、CDATAセクションを含むXML形式の入力データの処理例を示します。

入力ジャーナルファイル

\data配下に以下の2ファイルがあるとします。

連結条件

入力項目定義
(ListDef)
{document(Journal)
               {$date     /doc/basic/@date,
                $yoken    /doc/detail/purpose/text(),
                $rep1     asis_text(/doc/report/text()),
$rep2 /doc/report/text() } }
リターン式
(OutputDef)
{"DATA{<doc>
  <No>%1%</No>
  <日付>%2%</日付>
  <要件>%3%</要件>
  <レポート1>%4%</レポート1>
  <レポート2>%5%</レポート2>
</doc>\n}"
row_number(),$date,$yoken,$rep1,xml_convert($rep2) }

ListDefパラメタで、$rep1にはasis_text関数を指定し、$rep2では何も指定しません。
OutputDefパラメタで、$rep2にxml_convert関数を指定します。


動作環境ファイル

replace用動作環境ファイル
# 入力ファイル
JnlFile      Journal "..\data\"
# 出力ファイル
OutFile    "..\result\out_result1.xml"
# ログファイル
LogFile    "..\log\Replace.log"
# ジョイン警告:正常終了
JoinAlert        0

連結結果(out_result1.xml)

<doc>
  <No>1</No>
  <日付>2011年10月30日</日付>
  <要件>Data Effector販売推進会議</要件>
  <レポート1><![CDATA[検索レスポンス<10秒以内>を要求]]></レポート1>     ・・・(注1)
  <レポート2>検索レスポンス&lt;10秒以内&gt;を要求</レポート2>           ・・・(注2)
</doc>
<doc>
  <No>2</No>
  <日付>2011年11月02日</日付>
  <要件>Interstage定例会議</要件>
  <レポート1><![CDATA[事前検証は統括部&営業部の承認が必要]]></レポート1>・・・(注1)
  <レポート2>事前検証は統括部&amp;営業部の承認が必要</レポート2>        ・・・(注2)
</doc>

注1)レポート1は、変換されずそのまま出力されます。
注2)レポート2は、CDATAセクションが削除され、実体参照文字列に変換されます。


参照

  • asis_text関数の詳細については、“リファレンス集”の“連結条件ファイル”を参照してください。

  • xml_convert関数の詳細については、“リファレンス集”の“単一行関数(変換関数)”を参照してください。

  • 実体参照については“2.4.1 実体参照の扱い”を参照してください。