- PR -

XSLTからJavaを使うには

1
投稿者投稿内容
みー
会議室デビュー日: 2008/07/05
投稿数: 11
投稿日時: 2008-07-05 15:41
はじめまして。XSLTからJavaのメソッドを使いたいと試行錯誤しています。
すいませんが分かる方いらしたら教えてください。


やりたいこと
-------------------------------------------------------------------------------
schoolクラスのsetNameメソッドを使って、XSL文書のtestにsaitamaという値をセットしたい。ですが、setNameメソッドの引数をどう設定したら良いかが分かりません。

<xsl:if test="java:setName ($school,@name)"/>
XSL文書のこの箇所です。
-------------------------------------------------------------------------------

XSL文書
-------------------------------------------------------------------------------
<?xml version="1.0"encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:java="http://xml.apache.org/xslt/java/test">

<xsl:output method="xml" encoding="UTF-8"/>

<xsl:variable name="school" select="school"/>

<xsl:template match="school">

<xsl:if test="@name">
<xsl:if test="java:setName ($school,@name)"/>

</xsl:stylesheet>
-------------------------------------------------------------------------------

処理対象のXML文書
-------------------------------------------------------------------------------
<?xml version="1.0" encoding="Shift_JIS" ?>

<school name="saitama">
</school>
-------------------------------------------------------------------------------

schoolクラス
-------------------------------------------------------------------------------
public class school
{
public String setName(){
return name;
/*引数の設定が分からない*/
}
}
-------------------------------------------------------------------------------

Xalanからのコマンド入力
-------------------------------------------------------------------------------
>java -Djava.endorsed.dirs=C:\\xalan-j_2_5_1\\bin org.apache.xalan.xslt.Process -IN school1.xml -XSL school2.xsl -OUT test.xml


classpathはschoo1.xmlとschool2.xslがあるフォルダには通しています。

-------------------------------------------------------------------------------

エラー内容
-------------------------------------------------------------------------------
XSLTエラー(javax.xml.transform.TransformerException):
java:lang.NoSuchMethodException:For extension function,
could not find method school.setName([ExpressionContent,]#NODESET,#NODESET)
-------------------------------------------------------------------------------


1

スキルアップ/キャリアアップ(JOB@IT)