2012-03-08 13 views
1

私はXSLTをかなり使い慣れており、XSLTの中でJavaを使う方法についてはかなり混乱しています。 あるXMLを別のXMLに変換するXSLテンプレートがあります。私の要件は、私のXSLTの外部Javaクラスメソッドにアクセスすることです。 FileCopyというJavaクラスがあり、そのメソッドはcopyFile()です。 XSLT内のcopyFile()メソッドにアクセスする方法が必要です。XSLT- Javaのカスタムメソッドを参照

+0

であるXSL中にファイルのコピーを行うには他のいくつかの方法があります外部javaクラスを呼び出すよりも、トランスフォーメーションが必要ですか? XSLTはファイルコピーをサポートしていますか? – nishMaria

答えて

2

スタイルシートに拡張機能をバインドする必要があります。名前空間、クラス名、およびJavaクラスパスを使用する必要があります。例えば

、あなたのクラスを定義します。

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:filecopy="java:com.test.FileCopy" 
    exclude-result-prefixes="filecopy"> 

、その後、あなたはそれを使用することができます。

<xsl:value-of select="filecopy:copyFile($params)"/> 

詳しい情報はhere

+0

もちろん、クラスパスのコメントは重要です。上記の例では、上記の例では、スタイルシートを含むフォルダのサブフォルダcomのサブフォルダテストにjavaクラスを入れて、xsltエンジンによって見つけられるようにします。 – Kevan

+0

私のxslファイルがあります例えばC:/ transformである。私はjavaファイルをC:/ transform/com/testに配置しました。私はxslを実行した後、私はエラー - エラー: 'クラス' java:com.test.FileCopy 'を見つけることができません。' 致命的なエラー: 'スタイルシートをコンパイルできませんでした' 工場設定が無効 javax.xml.transform.TransformerConfigurationException:スタイラスをコンパイルできませんでした eet – nishMaria

+0

はFileCopyの "com.test"パッケージですか?私は例として追加しました。パッケージがない場合は、xmlns:filecopy = "java:FileCopy"を試すことができます。 –