- ベストアンサー
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 < 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>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
くー ダメだわ。 Domにすると読み込めるけど 変換ができなかったわ。 もっとJavaとXSLをガンガンやっている人なら 何か知っているのかもしれないわね。 ここで言うのはちょっとアレだけど もっと上級者向けのフォーラムやメーリングリストで 質問してみるのはどうかしら。 ゴメンね 役に立てなくて。
その他の回答 (3)
- ontojava
- ベストアンサー率61% (8/13)
/* <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)
以下のサイトが参考になります。 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の部分には間違いがありますのでコンパイルエラーがでます。
お礼
ontojava様、回答ありがとうございます。 >以下のサイトが参考になります。 >http://dev.ektron.com/kb_article.aspx?id=482 との事でしたが、この中のソースをTransformerしても 結果は同じでした。(DOMでは読み込めるけど変換は出来ていない)
- askaaska
- ベストアンサー率35% (1455/4149)
あらホントね。 StreamSourceだと例外が出るわ。 でもDomSourceだと起きないようよ。 Javaが対応していないのかも?
補足
回答ありがとうございます。 恥ずかしながらDomSourceの場合、どの様に直せば良いのか 理解が出来ておりません。 よろしければ修正イメージをいただけないでしょうか。
お礼
askaaska様 回答ありがとうございます。 役に立てないなんてとんでもないです。 たくさんのヒントを頂きました。 いろいろ調べてみてDomで読み込めるようになりました。 が、書かれている通り変換が出来ません。 で、<msxsl:script ~>の部分がマイクロソフト独自要素 らしく、この書き方だとjava側でjavascriptとして認識できない んではないかな?と思ってます。(全く見当違いかも しれませんが。) 本当にありがとうございました。