Java (oracle xdk) で XML ドキュメントをパラメータとして XSL 変換に渡す方法は?

StackOverflow https://stackoverflow.com/questions/2001548

  •  18-09-2019
  •  | 
  •  

質問

XML ドキュメントを XSLT スタイルシートにパラメータとして渡そうとしています。コードは変換に oracle XDK を使用していると思います (JDK 1.4.2 と Spring を使用していますが、私はコードベースを初めて使用するため、最終的に何がロードされるのかわかりません)。最初の試みでは、ドキュメント オブジェクトを作成し、これをトランスフォーマーのパラメーターとして設定しましたが、変数をツリーにコピーしようとしても結果は得られませんでした。頭に浮かぶ疑問は次のとおりです。

  1. XSLT トランスフォーマーの一般的な場合でもこれは可能ですか?(一般的に XSLT 変数/パラメータにはノードセットを含めることができるため、そうあるべきだと思われます)

  2. 特にoracle XDK(またはクラスパスにあるxalan)で可能ですか?

  3. もしそうなら、どうすればそれを機能させることができますか?

役に立ちましたか?

解決

答えはしかし、それは、少なくとものOracle XSLプロセッサ用、非直観的で、これが可能であるということです。私は(名前は無実を保護するために変更)、次の(非稼働)の呼び出しを試してみました。

Document x = createDocumentForMe();
transformer.addParameter("param",x);

Document x = createDocumentForMe();
transformer.addParameter("param",new DOMSource(x));

(それはDOMにjava.xml.transformインターフェースだったので多分DOMSourceが働くだろう基づいてこの第二)。最後に私のために働いたの呼び出しは、XSLはXPathを使用し、変数の有効なタイプは、基本的に文字列やnodesetsであり、XPathがnodesetsを返すという洞察を取ることでした。私にとっては、次の作品ます:

Document x = createDocumentForMe();
XPathExpression xpe = XPathFactory.newInstance().newXPath().compile("/");
transformer.addParameter("param",xpe.evaluate(x, XPathConstants.NODESET));

どの基本的にDOMオブジェクトに渡されたの唯一のルート文書を含むノードセットを取得するためにXPathを使用しています。しかし、これはハックのビットのように思えるし、他のXSLプロセッサで動作しない場合がありますので、YMMV ...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top