- ベストアンサー
Transformのエラー
お世話になります。 XMLを本を見ながら勉強中、Javaを利用してXSLを適用しなくてはならない箇所があり、本に記載の方法で初めてJavaなるものを利用してみたのですが、エラーが出てしまって本来の目的であるXMLの勉強が進まない状況に陥ってしまいました。 解決方法についてご助言いただければ幸いです。 ■環境 J2SE JDK1.5.0_06 OS:Win2K ■状況 DOSより以下のコマンドを走らせました。 C\hoge>java Transform sample1.xml sample1.xsl result.xml エラーは Exception in thread "main" java.lang.NoClassDefFoundError: Transform とのことです。 Transformというクラスファイル(?)が必要なのかと、本の発行者HPに訪れたら"Transform.class"というバイナリファイルが存在していたので、サンプルのxmlファイルがある同一フォルダに落としてから、再度コマンドを打ってみましたが、問題が解決されません。 コンパイル前のTransform.javaも念のため記載します。 よろしくお願い致します。 [Transform.java] import java.io.*; import javax.xml.transform.*; import javax.xml.transform.stream.*; public class Transform { public static void main(String args[]) throws Exception { StreamSource in = new StreamSource(new File(args[0])); StreamSource ss = new StreamSource(new File(args[1])); StreamResult out = new StreamResult(new File(args[2])); TransformerFactory tff = TransformerFactory.newInstance(); Transformer tf = tff.newTransformer(ss); tf.transform(in,out); System.out.println(args[2] + "Output OK!"); } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
エラーを見るとXSLの定義が間違ってるみたいですね。 >エラー: '入力文書はスタイルシートではありません (XSL ネーム・スペースはルート・ エレメント内で宣言されていません)。' <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ではないでしょうか?
その他の回答 (2)
- FlossenEngel
- ベストアンサー率77% (132/170)
QuickTime入れてませんか? 環境変数 CLASSPATH が "C:\~\QTJava.zip" になってたら ".;C:\~\QTJava.zip" にするとか、あるいは java -cp . Transform ~ で実行してみてください。
お礼
ご回答有難うございます。 QuickTimeはインストールしております。 CLASSPATHの環境変数に、ご指摘の通り"C:\~\QTJava.zip"が記載されておりましたので、このパスの先頭に".(ドット)"と";(セミコロン)"を加えて保存し、再度コマンドをたたいてみましたがやはり同様のエラーが発生します。 次にご指導いただきましたコマンド C:\hoge>java -cp . Transform sample1.xml sample1.xsl result.xml を実行しました。 エラーは出るのですが、出力エラーの表記が以下のようになりました。 --------------------------------------- エラー: '入力文書はスタイルシートではありません (XSL ネーム・スペースはルート・ エレメント内で宣言されていません)。' 致命的エラー: 'スタイルシートをコンパイルできませんでした' Exception in thread "main" javax.xml.transform.TransformerConfigurationException : スタイルシートをコンパイルできませんでした at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.n ewTemplates(Unknown Source) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.n ewTransformer(Unknown Source) at Transform.main(Transform.java:15) --------------------------------------- XSLについての指摘がエラーに出ていますが、本に記載の内容をそのまま持ってきて、さらにValidatorというツールに構文チェックしてもらったので、問題は無いと思うのですが・・・ 念のためにxslソースを記載します。 --------------------------------------- <?xml version="1.0" encoding="Shift_JIS" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/19999/XSL/Transform"> <xsl:output method="xml" encoding="Shift_JIS" /> <!-- 文書 --> <xsl:template match="/"> <root> </root> </xsl:template> </xsl:stylesheet> --------------------------------------- "Unknown Source"と言う箇所も気になりますが、、入力コマンドの方法では引数の指定がうまくできていないのでしょうか? 醜い長文申し訳ございません。 引き続きよろしくお願い致します。
C\hogeには、 Transform.cass sample1.xml sample1.xsl result.xml がありますか?
お礼
ご回答ありがとうございます。 result.xmlを除く、Transform.cass sample1.xml sample1.xsl の3ファイルは存在しております。 result.xmlは、sample1.xmlにsample1.xslをTransformで適用し、新たに作成されるものと認識しております。
お礼
ご回答有難うございます。 無事解決いたしました。 私の名前空間宣言では19999になっていたんですね(滝汗 まったく気づきませんでした(泣 (30分ファイルを見続けてやっと気づきました・・・) お騒がせ致しました。 重ね重ねですが有難うございます。