2010年3月3日水曜日

Oracle BPEL/複数のXML変数をXSLTに渡す

BPELで、二つの変数を XSLT の入力として使いたい場合、11g なら doXSLTransform を使えば良いけど、10g だと未サポートなので bpelx:append で要素をひとつにまとめて processXSLT 関数に渡すことになる。

このとき追加先となる BPEL変数は、スキーマ定義から逸脱して well-formed ではあっても valid ではない形にもなるが、非valid な XMLでも、内部の処理で変数として使う分には、別段、問題ないらしい。(さすがに外部に公開するサービスではまずいだろうけど。)

実は、自分の場合、内部の処理でも valid なXMLでないと駄目だと思い込んでしまって、若干はまった。XMLスキーマを変更して内部処理用の新たな型を追加しようとしたものの、最近入った現場ではそれがしにくい事情があって、けっこう悩んだ。valid でなくても良いんだと気づいたら本当にしょうもない話だが…

ちなみに JDeveloper の XSL デザイナの恩恵は得られないけど、もともと大して便利なツールじゃないし、これは別にいいや。<annotation> を取り除いて、Transform じゃない単なる Assign の xpath 関数にしてした上でソースを直接編集しても、それほど手間は変わらない。

0 件のコメント:

コメントを投稿