Oracle XSLProcessorを使用して、複数の XSL 変換を連鎖させようとしています。
最初の変換は正常に実行されます。2 番目の変換も実行されているように見えますが、出力はまったく変更されません。
これは、最初の変換に使用しているコードです。
private static XMLDocumentFragment Transform(InputStream xslt_stream, InputStream src_xml_stream) throws XSLException, MalformedURLException{
XSLProcessor proc = new XSLProcessor();
XSLStylesheet stylesheet = proc.newXSLStylesheet(xslt_stream);
XMLDocumentFragment frag = proc.processXSL(stylesheet, src_xml_stream, null);
return frag;
}
その変換の出力を取得し、2 番目のメソッドにパイプします。
private static XMLDocumentFragment Transform(InputStream xslt_stream, XMLDocumentFragment src_frag) throws XSLException, MalformedURLException{
XSLProcessor proc = new XSLProcessor();
XSLStylesheet stylesheet = proc.newXSLStylesheet(xslt_stream);
XMLDocumentFragment frag = proc.processXSL(stylesheet, src_frag);
return frag;
}
これが流れです。
// get XSL input stream from ZD
xslt_stream = getFromZD(conn, "SELECTFF", zd_xslt_chain_1);
// first overload
XMLDocumentFragment transformed = Transform(xslt_stream, xml_stream);
if (zd_xslt_chain_2 != null){
// run second in transform chian
xslt_stream = getFromZD(conn, "SELECTFF", zd_xslt_chain_2);
// second overload
transformed = Transform(xslt_stream, transformed);
}
私は明らかに間違ったことをしていますか? XSLT チェーンを実行するためのより良い方法はありますか? 私が Oracle の XSL プロセッサを使用しているふりをしましょう。