内容が単純だったこともあって、
思っていたよりXSLTの作成には時間は掛かりませんでした。
参考サイトは↓こちら。
で、XSLTを作成し、Javaプログラム内で変換ロジックを実装して、
テストコードを走らせてみる、、、
// XSLファイルからtranceformerを取得
Transformer transformer =
factory.newTransformer(new StreamSource("sample.xsl"));
// 出力するエンコーディングを設定
transformer.setOutputProperty("encoding", "UTF-8");
// XMLファイルをXSLTで変換して出力
transformer.transform(new StreamSource("sample.xml"),
new StreamResult(System.out));
が、うまくいかず。
正しい整形式のXMLを使用しているにもかかわらず<aiueo value="123"/>というタグがあると、
変換して出力するロジックの箇所で「</aiueo>で終わらんとアカンで」と言われて失敗。
また、スタンドアロンのJavaプログラム(mainから)ではうまくいくのに、
Webアプリで試すと失敗する。
という訳の分からんエラーで丸1日潰れました。
今日は木曜日。
そろそろリミットなので、XSLTは諦めて元に戻すかなぁという考えが頭をよぎり始めた頃、
下記のページでXSLTの記述を発見!!(つーか見落としていた)
⇒新しくなった DB2 バージョン 9.5 での pureXML 機能強化の概要 - developerWorks
まさに神のお告げのような内容でした。
さっそくDB2のXSLTRANSFORMスカラー関数を実装する。
変換元となるターゲットのXML文書は、生データとする為にタグの脚色を削ぎ落としてテーブルへ格納。
そして、XSLTスタイル・シートを格納するテーブルを新たに用意。
それらを以下のように結合して、DB2のXSLTエンジンを利用することにしました。
-- XSLTTABLE:XSLTDOC(XSLTスタイル・シートを格納)
SELECT XSLTRANSFORM(XMLDOC USING XSLTDOC) FROM XMLTABLE, XSLTTABLE WHERE ......
するとXSLTで記述した変換内容に沿って見事に新しいXML文書が!!
ギリギリで解答を見つけることができて、ホッとしました。
これで、理論上は様々なクライアントアプリに対応するXML文書を吐き出すことができるようになりました。
もう提出まであまり時間が無いので、これから他のクライアントを追加するかどうかは少し考えますが、とりあえずドキュメントの作成を開始します。
あとちょっとだぁ!!
参考URL
:XMLプログラミング・コンテスト
:新しくなった DB2 バージョン 9.5 での pureXML 機能強化の概要 - developerWorks
:XSLTRANSFORM スカラー関数 - DB2 Version 9.5 for Linux, UNIX, and Windows
:演習 8: XSLT スタイルシートを使用した変換 - DB2 Version 9.5 for Linux, UNIX, and Windows