• ベストアンサー

javaのTransformerでエラー

javaで以下のXSLとXMLをnewTransformerする際にエラーとなります。 user:formatstring(・・・)の部分でエラーになっていると思うのですが、これをどう変えればOKなのかがわかりません。 javascript付のXSLをTransformerする方法がわかる方がいらっしゃいましたらご教授の程よろしくお願いします。 ---エラーの内容--- エラー: '非 static Java 関数 'formatstring' への先頭引き数は有効なオブジェクト参照子でありません。 ---XSL--- <xsl:stylesheet version="1.0" xmlns:xsl="​http://www.w3.org/1999/XSL/Transform"​ xmlns:user="urn:my-scripts" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="user msxsl"> <msxsl:script language="JavaScript" implements-prefix="user"> function formatstring(nodelist, type){ var rtnStr = ""; if (nodelist.item(0) == null || nodelist.item(0).text == "") { return rtnStr; } var i = type.length - 1; var pos = nodelist.item(0).text.length - 1; while(1){ if ( i &lt; 0) { break; } if (type.charAt(i) == "#") { rtnStr = nodelist.item(0).text.charAt(pos) + rtnStr; pos --; }else { rtnStr = type.charAt(i) + rtnStr; } i --; } return rtnStr; } </msxsl:script> <xsl:template match="/"> <html> <body> <form name="form1"> <font style="font-size:12.00px;border:0px;position:absolute;top:90.50px;left:64.60px;width:22.80px;text-align:none;"> <xsl:value-of select="user:formatstring(/aaa/P04,'##-##-##')"/> </font> </form> </body> </html> </xsl:template> </xsl:stylesheet> ---XML--- <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet href="xxxxx.xsl" type="text/xsl"?> <aaa><P04>123456</P04></aaa>

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

くー ダメだわ。 Domにすると読み込めるけど 変換ができなかったわ。 もっとJavaとXSLをガンガンやっている人なら 何か知っているのかもしれないわね。 ここで言うのはちょっとアレだけど もっと上級者向けのフォーラムやメーリングリストで 質問してみるのはどうかしら。 ゴメンね 役に立てなくて。

ree111
質問者

お礼

askaaska様 回答ありがとうございます。 役に立てないなんてとんでもないです。 たくさんのヒントを頂きました。 いろいろ調べてみてDomで読み込めるようになりました。 が、書かれている通り変換が出来ません。 で、<msxsl:script ~>の部分がマイクロソフト独自要素 らしく、この書き方だとjava側でjavascriptとして認識できない んではないかな?と思ってます。(全く見当違いかも しれませんが。) 本当にありがとうございました。

その他の回答 (3)

  • ontojava
  • ベストアンサー率61% (8/13)
回答No.4

/* <msxsl:script ~>の部分がマイクロソフト独自要素 */ すでに質問者様がお気づきのとおりです。 Windows環境限定ですが、msxsl.exeを使う事になります。 どうしてもjavaでという事ですとxalanを使った方法があります。 私はxalan-j_2_7_1-bin.zipをダウンロードしました。 解凍した中にサンプルファイルがあります。 xalan-j_2_7_1/samples/extensions/2-basicJscript.xsl Windows環境ですとmsxsl.exeを使った方が簡単です。

  • ontojava
  • ベストアンサー率61% (8/13)
回答No.3

以下のサイトが参考になります。 http://dev.ektron.com/kb_article.aspx?id=482 コマンドラインから打ち込めるXSLT変換ユーティリティ“msxsl.exe”などはこちらを http://www.atmarkit.co.jp/misc/search/marker.php?query=xslt&pg=www.atmarkit.co.jp/fxml/tanpatsu/10xslt/xslt07.html なをJavaScriptの部分には間違いがありますのでコンパイルエラーがでます。

ree111
質問者

お礼

ontojava様、回答ありがとうございます。 >以下のサイトが参考になります。 >​http://dev.ektron.com/kb_article.aspx?id=482​ との事でしたが、この中のソースをTransformerしても 結果は同じでした。(DOMでは読み込めるけど変換は出来ていない)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

あらホントね。 StreamSourceだと例外が出るわ。 でもDomSourceだと起きないようよ。 Javaが対応していないのかも?

ree111
質問者

補足

回答ありがとうございます。 恥ずかしながらDomSourceの場合、どの様に直せば良いのか 理解が出来ておりません。 よろしければ修正イメージをいただけないでしょうか。

関連するQ&A

専門家に質問してみよう