xalanでのエラー:XSLTエラーが発生

このQ&Aのポイント
  • xalanを使用すると、XMLファイルの出力に問題があります。
  • 常に同じエラーが発生し、エラーメッセージは"SystemId Unknown; Line -1; Column -1; XSLT Error (javax.xml.transform.TransformerConfigurationException): javax.xml.transform.TransformerException: javax.xml.transform.TransformerException: xsl:stylesheet is not allowed in this position in the stylesheet!"です。
  • 原因を知っている人がいる場合、回答をお願いします。
回答を見る
  • ベストアンサー

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
  • 回答数2
  • ありがとう数5

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

  • ベストアンサー
回答No.1

えっと… エラーメッセージを見ると xsl:stylesheet is not allowed in this position in the stylesheet! ("xsl:stylesheet"をこんなとこに書いちゃいかん)とハッキリ言っているわけなので、XSLを見直すのがまず第一じゃないかと思うんですが。 以下の環境でちょっと試してみた限りでは、"xsl:stylesheet"が2箇所記述されているような不正なXSLでないと上記エラーは出せませんでした(^^; OS:Windows98SP1 Java:1.4.0_01 Runtime Xalan:2.4.D1 (但しjarをlib/endorsedにcopy) 実行方法:コマンドラインよりjava org.apache.xalan.xslt.Processを起動 (何故 "SystemId Unknown; Line -1; Column -1;" なのかは判りませんが...。コマンドラインからだとXSLファイル名と行位置、桁位置がちゃんと表示されるので。) 環境とか実行方法とかXSLは間違ってないぞ~とかIEならちゃんと表示できるのに~とかXalan付属のサンプルはOKなのに~とかもっと書いた方がいいですよ(^^;。このエラーメッセージだけだと「XSLが間違ってます」としか答えられないので...。

kamkamkam3
質問者

お礼

どうも、ご回答ありがとうございます。環境としては、 OS:WindowsXP HomeEdition Java: j2sdk1.4.0_01 Xalan: 2.2.D11 実行方法:コマンドラインから、以下を記述して起動。 D:\>java -Duser.language=en org.apache.xalan.xslt.Process -in Sample1.xml -xsl S ample6-5.xsl -out result.xml です。この辺は、本に忠実にやったので、間違いはないと思います。 たまに、成功するファイルもあるので、やはりXSLファイルがおかしいのでしょうか?XMLファイルは同じものを使い、XSLファイルを変えて色々試しています。 ほとんどの、XSLファイルで、例のエラーばかり出るのです。一応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> <xsl:apply-templates select="cars/car" /> </root> </xsl:template> <!-- 車 --> <xsl:template match="car"> <car> <num> <xsl:number /> </num> <xsl:apply-templates select="name" /> <xsl:apply-templates select="price" /> </car> </xsl:template> <!-- 品名 --> <xsl:template match="name"> <xsl:copy-of select="."/> </xsl:template> <!-- 価格 --> <xsl:template match="price"> <xsl:copy-of select="."/> </xsl:template> <xsl:stylesheet> もし分かったら、ご回答ください。どうも、長々と読んでいただき、ありがとうございました。 です。

その他の回答 (1)

回答No.2

最後の行が <xsl:stylesheet> になってます。正しくは </xsl:stylesheet> ですよね(^^)。

kamkamkam3
質問者

お礼

ご回答ありがとうございます。 すみません。。。こんな事なんて。。。情けないです。どうもくだらない質問にお付き合いいただきありがとうございます。おかげさまで、見事できました。なにぶん慣れないものですから、少しの間違いが、えらく大変な間違いに見えてしまい、焦っていたんです。 あと、他のXSLファイルに関しても、InternetExplorerで開くとうまく開けないんで僕のタイプミスだと思います。しらみつぶしに、ミスを探してきます。 やはり、何か間違いがあると、あのエラーが出てしまうんですね。確か、以前のxalanは、エラー行もちゃんと出たと思うんですが。同じエラーばかり出るので、設定やら機械の故障かな?と心配していたのです。 j2sdk1.4.0からのxalanは、まだ不備があって、完璧にはいかないらしいです。月刊「Java World」に書いてありました。 endorsedにフォルダをつくって新しいxalanを入れているんですね。私もやり方を読んだんですが、サッパリうまくいきませんでした。うらやましいです。 何はともあれ、問題が解決できてよかったです。これで、また勉強を進められます。とても助かりました。どうもありがとうございました。

関連するQ&A

  • 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
  • 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
  • XSLで、XMLの空タグを制御したい。

    値がないXML文書に、 <exsample /> こう書かれてしまうものを、 <exsample></exsample> このように出力したいのですが、出来ずでした。 以下は、私のやり方です。 ■ XSL <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt"> <xsl:output method="xml" encoding="Shift_JIS" indent="yes" xalan:indent-amount="4"/> <xsl:template match="/"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> ■ XML <?xml version="1.0" encoding="Shift_JIS"?> <root> <section> <category> <exsample1>value</exsample1> <exsample /> </category> </section> </root> ご教授、よろしくお願いいたします。

    • ベストアンサー
    • XML
  • XSLTでの外部XMLファイルの読み込みについて。

    XSLTについて質問がございます。 下記のように、document関数を用いて外部のxmlを取り込んでいるのですが、 もし、そのxmlファイルが存在しなかった場合はエラーとなってしまいます。 この時、対象のxmlファイルが存在するか否かを、XSLTで調べる事は可能なのでしょうか? boolean関数を用いてみたりしたのですが、ファイルがない場合はやっぱりエラーになってしまいます。 どなたかご教授願います。 <!-- STYLESHEET --> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:import href="xsl1.xsl"/> <xsl:param name="doc" select="document('../XML/import.xml')"/> </xsl:stylesheet>

    • ベストアンサー
    • XML
  • XSLTの記述方法

    お世話になります。 XML+XSLTで開発しております。 XSLTの記述方法でjavascriptの引数にXMLデータを挿入する記述は どうすればよいのでしょうか? すごい初歩的な質問かもしれませんが ご教授よろしくお願いいたします。 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <table> <tr> <td > <a href="#" onClick="hogehoge('pram')">hogehoge rink </a> </td> </tr> </table> </xsl:template> </xsl:stylesheet> ↓↓↓↓↓↓こんな感じにしたい↓↓↓↓↓↓ <a href="#" onClick="hogehoge('<xsl:value-of select="$prm_test"/>')">りんく</a>

    • ベストアンサー
    • XML
  • xalanを使用してのエラー

    xalanを使用したいのですが、 下記のようなエラーが出てしまいます。 C:\xalan-j_2_7_1\samples\SimpleTransform>java org.apache.xalan.xslt.Process -in test.xml -xslt test.xsl -out test.html (実行文) Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xalan/xslt /Process (エラー) パスが通っていないということは わかるのですが、具体的に何をどうしたら良いのかわかりません。 すでに通しているパスは、 ・システム環境変数 ■CLASSPASS C:\j2sdk1.4.2_16\lib\tools.jar; C:\xalan-j_2_7_1\xml-apis.jar; C:\xalan-j_2_7_1\xercesImpl.jar; C:\xalan-j_2_7_1\xalan.jar ■Path C:\j2sdk1.4.2_16\bin です。 まだ他に通さないといけないものがあるのでしょうか。 ご協力お願いします。 バージョン xalan-j_2_7_1 j2sdk1.4.2_16

  • xalanが利用できません。

    XSLプロセッサのxalanが利用できません。 C:\j2sdk1.4.0_01\jre\lib\ext に xalan.jarをおいているんですが、 本には、XalanをMSDOSプロンプトから起動するには、 org.apache.xalan.xslt.Process -in <XMLファイル名> -xsl <XSLスタイルシート名> -out <結果ファイル名> と書いてあるんですが、実行すると以下のエラーが出ます。 'org.apache.xalan.xslt.Process' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 だれか、対処方法の分かる方、教えて下さい。宜しくお願いします。

    • ベストアンサー
    • XML
  • XSLTによるノードの抽出の際に親のnamespaceで子ノードのnamespaceが上書きされないようにするには?

    下記のようなXMLに <?xml version="1.0" encoding="EUC-JP"?> <parent xmlns:xhtml="http://parent"> <child id="A1"> <taroh xmlns="http://child"> <age>10</age> </taroh> </child> </parant> 下記のようなXSLTを適用した場合、 <?xml version="1.0" encoding="EUC-JP"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="xml"/> <xsl:template match="text()|@*"> </xsl:template> <xsl:template match="node()[@id='A1']"> <xsl:copy-of select="./node()"/> </xsl:template> </xsl:stylesheet> 通常下記のような結果となりますが、 <?xml version="1.0" encoding="EUC-JP"?> <taroh xmlns="http://parent"> <age>10</age> </taroh> namespaceを変更させずに、下記のような結果を 得るためにはどのようにすればよいでしょうか? <?xml version="1.0" encoding="EUC-JP"?> <taroh xmlns="http://child"> <age>10</age> </taroh> 抽出には javax.xml.transform.Transformerを用いています。 どうか、よろしくお願いします。

    • 締切済み
    • XML
  • XMLをxalanでXSL-FOに変換する

    book.xmlとbook.xslでbook.foに変換にxalanで実行しました。 >java org.apache.xalan.xslt.Process -in book.xml -xsl book.xsl -out book.fo ところが、以下のようにエラーが出ました。 Exception in thread "main" java.lang.ClassCastException: org.apache.xalan.res.XSLTErrorResources_ja at org.apache.xalan.xslt.Process.main(Process.java:209) 何が原因なのでしょうか?xalan-j_2_4_1のxalan.jarとxercesImpl.jarにはCLASSPATH設定をしています。 <book.xml> <?xml version="1.0" encoding="Shift_JIS" ?> <?xml:stylesheet type="text/xsl" href="book.xsl" ?> <書籍管理> <書籍情報 ID="1"> <書籍名>スタイルシート辞典 第2版</書籍名> <著者>安川英明</著者> <出版社>翔泳社</出版社> <価格>1800</価格> </書籍情報> ・・・ <書籍管理> 文字数が多くなってすべてbook.xslがかけませんでした。 テーブル形式で表示するようしたいのです。 <xsl:template match="書籍管理"><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> ・・・ <fo:table> <fo:table-column column-width="50mm"/> ・・・ <fo:table-body><fo:table-row><fo:table-cell><fo:block>書籍名</fo:block></fo:table-cell>・・・</fo:table-row> <xsl:apply-templates/> </fo:table-body> </fo:table> </fo:flow></fo:page-sequence> </fo:root></xsl:template> <xsl:template match="書籍情報"> <fo:table-row><xsl:apply-templates/></fo:table-row> </xsl:template> <xsl:template match="書籍名"> <fo:table-cell><fo:block><xsl:value-of select='.'/></fo:block></fo:table-cell> </xsl:template>

    • ベストアンサー
    • XML
  • xsl:variable の使用方法

    こんにちは xml,xsl を今日はじめて使う初心者です。 変数を使おうとして下記のようなメッセージが出てしまいます。 >ここではキーワード xsl:variable を使用できません。 どうすればよろしいでしょう? area.xls: <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> (中略) </html> </xsl:template> <xsl:template match="変換結果"> <table align="left" border="1" width="1500" cellspacing="0" cellpadding="0"> <tr> (中略) </tr> <tr> (中略) <xsl:comment>合計 </xsl:comment> <th>数量</th> (中略) </tr> <xsl:variable name="coLor" select="white" /> <xsl:for-each select="row" order-by="+column0"> <tr bgcolor="$coLor"> <td width="200" align="right"> <xsl:value-of select="column0" /> </td> (中略) </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> ************************************************************* area.xml <?xml version="1.0" encoding="Shift_Jis"?> <?xml-stylesheet type="text/xsl" href="area.xsl" ?> <変換結果> <row row-Num='1'><column0>,4536163880211</column0> (中略) </row> </変換結果>

    • ベストアンサー
    • XML

専門家に質問してみよう