dポイントプレゼントキャンペーン実施中!

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>

A 回答 (4件)

くー


ダメだわ。
Domにすると読み込めるけど
変換ができなかったわ。

もっとJavaとXSLをガンガンやっている人なら
何か知っているのかもしれないわね。
ここで言うのはちょっとアレだけど
もっと上級者向けのフォーラムやメーリングリストで
質問してみるのはどうかしら。

ゴメンね
役に立てなくて。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/09 15:11

/* <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を使った方が簡単です。
    • good
    • 0

以下のサイトが参考になります。


http://dev.ektron.com/kb_article.aspx?id=482

コマンドラインから打ち込めるXSLT変換ユーティリティ“msxsl.exe”などはこちらを
http://www.atmarkit.co.jp/misc/search/marker.php …
なをJavaScriptの部分には間違いがありますのでコンパイルエラーがでます。
    • good
    • 0
この回答へのお礼

ontojava様、回答ありがとうございます。

>以下のサイトが参考になります。
>​http://dev.ektron.com/kb_article.aspx?id=482

との事でしたが、この中のソースをTransformerしても
結果は同じでした。(DOMでは読み込めるけど変換は出来ていない)

お礼日時:2009/03/09 19:11

あらホントね。


StreamSourceだと例外が出るわ。
でもDomSourceだと起きないようよ。

Javaが対応していないのかも?

この回答への補足

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

補足日時:2009/03/06 20:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!