• ベストアンサー

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!"); } }

  • Java
  • 回答数3
  • ありがとう数5

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

  • ベストアンサー
noname#18558
noname#18558
回答No.3

エラーを見るとXSLの定義が間違ってるみたいですね。 >エラー: '入力文書はスタイルシートではありません (XSL ネーム・スペースはルート・ エレメント内で宣言されていません)。' <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ではないでしょうか?

myosuke
質問者

お礼

ご回答有難うございます。 無事解決いたしました。 私の名前空間宣言では19999になっていたんですね(滝汗 まったく気づきませんでした(泣 (30分ファイルを見続けてやっと気づきました・・・) お騒がせ致しました。 重ね重ねですが有難うございます。

その他の回答 (2)

回答No.2

QuickTime入れてませんか? 環境変数 CLASSPATH が "C:\~\QTJava.zip" になってたら ".;C:\~\QTJava.zip" にするとか、あるいは java -cp . Transform ~ で実行してみてください。

myosuke
質問者

お礼

ご回答有難うございます。 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"と言う箇所も気になりますが、、入力コマンドの方法では引数の指定がうまくできていないのでしょうか? 醜い長文申し訳ございません。 引き続きよろしくお願い致します。

noname#18558
noname#18558
回答No.1

C\hogeには、 Transform.cass sample1.xml sample1.xsl result.xml がありますか?

myosuke
質問者

お礼

ご回答ありがとうございます。 result.xmlを除く、Transform.cass sample1.xml sample1.xsl の3ファイルは存在しております。 result.xmlは、sample1.xmlにsample1.xslをTransformで適用し、新たに作成されるものと認識しております。

関連するQ&A

  • XMLを出力する時のエラー原因

    以下のように実行したところエラーとなるのですが 何が原因でしょうか? C:\Documents and Settings\Administrator\デスクトップ\test>java Transform Sample. xml Sample1.xsl result.xml Exception in thread "main" javax.xml.transform.TransformerException: java.io.Fil eNotFoundException: file:\C:\Documents%20and%20Settings\Administrator\デスクトッ プ\test\result.xml (ファイル名、ディレクトリ名、またはボリューム ラベルの構文が 間違っています。) at org.apache.xalan.transformer.TransformerImpl.createResultContentHandl er(TransformerImpl.java:1146) at org.apache.xalan.transformer.TransformerImpl.createResultContentHandl er(TransformerImpl.java:1055) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp l.java:1170) at Transform.main(Transform.java:16) Caused by: java.io.FileNotFoundException: file:\C:\Documents%20and%20Settings\Ad ministrator\デスクトップ\test\result.xml (ファイル名、ディレクトリ名、またはボリ ューム ラベルの構文が間違っています。) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at org.apache.xalan.transformer.TransformerImpl.createResultContentHandl er(TransformerImpl.java:1131) ... 3 more --------- java.io.FileNotFoundException: file:\C:\Documents%20and%20Settings\Administrator \デスクトップ\test\result.xml (ファイル名、ディレクトリ名、またはボリューム ラベ ルの構文が間違っています。) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at org.apache.xalan.transformer.TransformerImpl.createResultContentHandl er(TransformerImpl.java:1131) at org.apache.xalan.transformer.TransformerImpl.createResultContentHandl er(TransformerImpl.java:1055) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp l.java:1170) at Transform.main(Transform.java:16) ***以下ソースです*** Sample.xml********************** <?xml version="1.0" encoding="Shift_JIS" ?> <cars> <car> <name>乗用車 </name> <price>100 </price> </car> </cars> Sample1.xsl********************** <?xml version="1.0" encoding="Shift_JIS" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="Shift_JIS"/> <!-- 文書 --> <xsl:template match="/"> <root> </root> </xsl:template> </xsl:stylesheet> 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]+"出力"); } }

    • 締切済み
    • XML
  • Eclispe上でXML書込み可能が、E以外出来ず

    Eclispe上では、任意の値を、例えば(ex.xml等)に書込み可能なのですが、 ランナブルjarにして、デスクトップ上に他ファイルも含めて置き、jarを起動して、 XMLに書込みしようとしても書込みできません。 XMLは標準で作成してます(windows7 Home edition 管理者権限で動作 JDK1.7.0_05)。 色々調査しましたが原因不明です。 読み込みは問題ありません。XSLTにも関連していないようです。 何が違うのでしょうか? みなさま、よろしくお願いいたします。 ソースは以下の通り、 import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; public class XMLBasic { /*-------------------------* * Variables. * *-------------------------*/ /*----- For XML -----*/ /* XSL */ final static String XSL_FILE="resource\\style.xsl"; /**/ static Element element; /*-------------------------* * Methods. * *-------------------------*/ /*----- Rewrite -----*/ public static void rw(String value, String tagName, int itemNum, String xmlFileName, String xslFileName) { Document document=null; try { document=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(xmlFileName)); } catch (SAXException e) { } catch (IOException e) { } catch (ParserConfigurationException e) {} document.getElementsByTagName(tagName).item(itemNum).getFirstChild().setNodeValue(value); TransformerFactory tfactory=TransformerFactory.newInstance(); Transformer transformer=null; try { transformer=tfactory.newTransformer(new StreamSource(new File(xslFileName))); } catch (TransformerConfigurationException e) {} try { transformer.transform(new DOMSource(document), new StreamResult(new File(xmlFileName))); } catch (TransformerException e) {} } }

    • ベストアンサー
    • Java
  • csv作成エラー

    CSVファイルを作ろうとcsvフォルダを作り、xmlファイル・xslファイルを入れました。 C:\csv\aaa.xml C:\csv\bbb.xsl コマンドプロンプトで C:\csv>java org..apache.xalan.xslt.Process -in aaa.xml -xsl bbb.xsl -out ddd.csv と入力したら、 file:/C:/csv/bbb.xsl;行番号1;列番号-1;XSLTエラー(javax..xml.transform.TransformerConfigurationException):javax..xml.transform.TransformerException: org.xml.sax.SAXParseException: ドキュメントのルート要素がありません。 と表示されてうまくいきません。 xslファイルの1行目には、<?xml version="1.0" encoding="utf-8"?>と記載されています。 教えていただけたらうれしいです。

    • ベストアンサー
    • XML
  • 構文がエラーになる

    Exception in thread"main"java.lang.NoClassDefFoundError という文章でエラーになります。 import java.io.*; class Sample34 { public static void main (String args[])throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if(res == 1){ System.out.println("1が入力されました。"); } else if(res == 2){ System.out.println("2が入力されました。"); } else{ System.out.println("1か2を入力してください。"); } } }

  • あるコード(JSP)のエラー

    htmlからフォームで、JSPのファイルにsubmitする、という流れを実装しているのですが、JSPのコンパイルのところ(?)で、下記のようなエラーが出てしまいます。フォームに入力させた、文字をXMLファイルに書き込むという処理です。 org.apache.jasper.JasperException: Exception in JSP: /day01-1/add.jsp:9 コードは以下のとおりです。 <%@ page contentType="text/html;charset=Windows-31J" import="java.io.*, javax.xml.parsers.*,javax.xml.transform.*,javax.xml.transform.dom.*, javax.xml.transform.stream.*,org.w3c.dom.*"%> <% request.setCharacterEncoding("Windows-31J"); //String[] string="meigen"; DocumentBuilderFactory objDbf = DocumentBuilderFactory.newInstance(); DocumentBuilder objDb = objDbf.newDocumentBuilder(); Document objDoc = objDb.parse(application.getRealPath("jsp10/day01-1/meigenuser.xml"));//解析するXML指定 Element elmmeigen = objDoc.createElement("meigen");//meigen要素 Text txt = objDoc.createTextNode(request.getParameter("meigen"));//htmlから送られてくる名言を格納 elmmeigen.appendChild(txt);//名言要素に、↑の名言テキストを挿入 //***属性挿入 Attr atr_id = objDoc.createAttribute("id");//属性 Attr atr_name = objDoc.createAttribute("name");//たち Attr atr_syutten = objDoc.createAttribute("syutten"); atr_id.setValue("1");//本当は1じゃ困るけど… atr_name.setValue(request.getParameter("name")); atr_syutten.setValue(request.getParameter("syutten")); elmmeigen.setAttributeNode(atr_id); elmmeigen.setAttributeNode(atr_name); elmmeigen.setAttributeNode(atr_syutten); objDoc.getDocumentElement().appendChild(elmmeigen);//最後にelmmeigenをルートノード配下に配置 //***出力 TransformerFactory fac = TransformerFactory.newInstance(); Transformer tran = fac.newTransformer(); StreamResult result = new StreamResult(new FileOutputStream(application.getRealPath("jsp10/day01-1/meigenuser.xml"))); tran.transform(new DOMSource(objDoc.getDocumentElement()),result); response.sendRedirect("meigen.html"); //xmlの構造は //<meigen id = "ID" name = "ハンドルネーム" syutten = "出展作品など">とする %> よろしくお願いします。

  • xalan でエラーが出るんですが。

     xalanを使うと、よくエラーが出ます。うまく、XMLファイルをはきだしてくれる事もあるんですが、体外エラーが出ます。  エラー内容は、いつも同じで、以下の通りです。 SystemId Unknown; Line -1; Column -1; XSLT Error (javax.xml.transform.Transforme rConfigurationException): javax.xml.transform.TransformerException: javax.xml.tr ansform.TransformerException: xsl:stylesheet is not allowed in this position in the stylesheet! 誰か、原因の分かる人がいましたら、返事の方よろしくお願いします。

    • ベストアンサー
    • XML
  • サンプルプログラムのエラー

    お世話になります。 「Eclipseで学ぶはじめてのJava」と言う本を購入しました。その本のSample10_10において、 Exception in thread "main" java.lang.Error: コンパイル問題が未解決です。 at Sample10_10.main(Sample10_10.java:8) と表示されてエラーになります。Eclipseの設定なのかもしれませんが対処法が分らないので先に進むことができません。 ソフトバンククリエイティブの問い合わせに質問しても全然取り合ってもらえず困っています。 package sample.sample10; import java.util.Arrays; public class Sample10_10 { public static int a; public static void main(String[] args) { int[] array = { 298, 827, 8348, 29, 892, 327, 8, 9, 2, 809, 32 }; System.out.println("配列の要素を表示します。" + Arrays.toString(array)); System.out.println("Arraysクラスを利用しないと、" + array + "となってしまう"); } }

    • ベストアンサー
    • Java
  • javaの画像の表示のプログラムとmouselistenerのプログラ

    javaの画像の表示のプログラムとmouselistenerのプログラム(それぞれ↓にあります)をひとつに合わせたいのですがどうすればいいでしょうか? import java.awt.event.*; import javax.swing.*; class MyPanel extends JPanel implements MouseListener{ public MyPanel() { addMouseListener(this); } public void mouseClicked(MouseEvent e) { int x=e.getX(); int y=e.getY(); System.out.println("マウスがクリックされました (" + e.getX() + ", " + e.getY() + ")"); if((x<100&&x>40)&&(y<100&&y>40)){ System.out.println("範囲内"); }else{ System.out.println("aaa"); } } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } } public class MouseEventExample extends JFrame { public static void main(String[] args) { new MouseEventExample(); } MouseEventExample() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(new MyPanel()); setSize(300, 200); setVisible(true); } } ======↑のプログラムと↓のプログラムを合わせたいのです package novel; import java.awt.*; import java.awt.geom.*; import java.awt.event.*; import javax.swing.*; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import java.io.IOException; public class Java2dTest extends JFrame{ public static void main(String[] args){ Java2dTest test = new Java2dTest(); test.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);} }); test.setBounds( 0, 0, 200, 200); test.setVisible(true); } public void paint(Graphics g){ Graphics2D g2 = (Graphics2D)g; BufferedImage readImage = null; try { readImage = ImageIO.read(new File("sample.png")); } catch (Exception e) { e.printStackTrace(); readImage = null; } if (readImage != null){ g2.drawImage(readImage, 0, 0, this); } } }

  • サーブレット-エラー(404)

    書籍にあるサンプルを自分のEclipse3.5の環境にて実行させているのですが、書籍の通りに行ってはいるのですが、表題のようなエラー画面になってしまい悩んでおります。以下の記述をしているので何か間違いがありましたらご指摘をよろしくお願い致します。 ※他に類似の質問がありましたが、理解に苦しみ解決できませんでした。 ■パッケージエクスプローラー TEST LWEB-INF/src   Lcom.gokui   |  LSample026.java   Lwork   L参照ライブラリー   |  Lservlet-api.jar   |  Ljasper.jar   |  Ljsp-api.jar   |  Lel-api.jar   |  Lannotations-api.jar   Lbin   Lsrc   LWEB-INF   |  Llib   |  Lweb.xml   Lindex.html ■web.xmlの記述 <web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  version="2.5">     <servlet>          <servlet-name>Sample026</servlet-name>          <servlet-class>com.gokui.Sample026</servlet-class>          <load-on-startup>1</load-on-startup>     </servlet>     <servlet-mapping>          <servlet-name>Sample026</servlet-name>          <url-pattern>/Sample026</url-pattern>     </servlet-mapping>     <welcome-file-list>          <welcome-file>/index.html</welcome-file>          </welcome-file-list> </web-app> ■index.htmlの記述 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <title>Sample026</title> </head> <body> <form method="POST" action="./com.gokui/Sample026"> お名前: <input type="text" name="person" size="20"> <input type="submit" value="OK" > </form> </body> </html> ■Sample026.javaの記述 package com.gokui; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Sample026 extends HttpServlet {     private static final long serialVersionUID = 1L;     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {          //エンコード指定          request.setCharacterEncoding("JISAutoDetect");          //パラメータ取得          String person = request.getParameter("person");          //出力          response.setContentType("text/html;charset=Shift_JIS");          PrintWriter out = response.getWriter();          out.println("<html><head><title>サンプル026</title></head><body>");          out.println(person + "さん、ようこそ!");          out.println("</body></html>");          out.close();     } } 未熟の為、分からぬことばかりなのですが何卒宜しくお願い致します。

    • ベストアンサー
    • Java
  • BufferedReaderなどについて

    今JAVAを勉強しているのですが。 少しつまづいてしまいました。 ---------------------------------------------- import java.io.*; class Cat { public static void main(String args[]) throws IOException { File inputFile = new File(args[0]); FileReader in = new FileReader(inputFile); BufferedReader br = new BufferedReader(in); //・・・続く ---------------------------------------------- 上のプログラム全て、といいますか import java.io.*; や BufferedReader のことが特によく分かりません。いろいろサイトや本などを見てみたのですが、それでもいまいち理解できませんでした。どなたか、教えてください、お願い致します

    • ベストアンサー
    • Java

専門家に質問してみよう