2010-12-20 12 views
0

JavaでXSLテンプレートを使用していますが、Javaコードを呼び出すカスタムタグを作成しようとしています。 XMLエンジンとしてXOMを使用しています。私はXOMとXSLの両方で新しくなっているので、これがスマートなアイデアであるかどうかはわかりません。テンプレート内からJavaコードを呼び出すJava + XSL

my_nsは、私が呼び出しの伴う代替方法のための提案に開いている方法custom tag

<xsl:template name="foo"> 
<my_ns:custom_tag /> 
</xsl:template> 

public Node custom_tag() { 
    return Node("<a/>"); 
} 

#result of calling the template foo 
<a/> 

ことを「custom_tag」がカスタム名前空間です私がやりたい何かの非常に単純な例は、これですXSLテンプレートからのJava。

答えて

3

これは、XSLTプロセッサがXMLエンジン/ parser/api以上のテンプレート内でJavaコードを実行/呼び出しできるかどうかについて、より多くの質問です。 Java用のデフォルトのXSLTプロセッサは、Apache Software FoundationのXalan-CまたはXalan-J(どちらが覚えていないか)です。私は両方の拡張機能がメソッド内でJavaコードを実行することができると信じています。 xalan-j拡張関数を使用する前に、XSLスタイルシート内でJDBC SQLクエリを実行しました。私はまた、Saxon XSLTプロセッサもこの機能を可能にすることを読んでいることを思い出してください。 XSLTプロセッサを検索して、これを実装するための詳細を取得します。

これは良いアイデアかどうかという疑問は、本当に問題に依存します。上記のSQL拡張関数を使用していても、その場合の請求書に合っていましたが、その後は本当に汚いと感じました。なぜなら、ベンダー固有の拡張機能を追加すると、XSLTプロセッサ間の移植性が失われるからです。

あなたの例では、単純に出力に新しいノードを作成していることを示しています。この場合、XSLTの主な機能の1つであるJavaの必要はありません。ノードの作成。あなたの本当の問題は単純にノードを作成するよりも複雑であると思われますので、探している結果を得るためにjavaのすべての作業を行うか、javaで作業をしてパラメータを渡すことをお勧めします(xsl:param要素を使用した名前と値のペア)を実行時のXSLスタイルシートに追加します。

は、ここであなたが始めるためにいくつかの簡単なサイトです

関連する問題