- - PR -
サーブレットからXMLファイルを生成する方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-01-22 00:26
試しに、例外の起こる手前で
System.out.println(new File("xx").getAbsolutePath()); ってやってみて下さい。 実行している場所のカレントディレクトリがわかると思います。 | ||||||||||||
|
投稿日時: 2005-01-24 10:08
javaアプリとサーブレットに違いがあるのではなく、使用しているパーサーの実装が違うのだと思います。 本題ですが、XML(XSL)ファイルのパス(または、そのファイルから外部参照しているファイル)にascii文字以外が含まれていませんか? | ||||||||||||
|
投稿日時: 2005-01-24 16:23
「unknown protocol: f」ってのが引っかかりますね。XSLの中にファイルの絶対パスを
(f:\xxx\xxxといったように)指定している部分がないでしょうか。 | ||||||||||||
|
投稿日時: 2005-01-25 11:44
-- javaアプリとサーブレットに違いがあるのではなく、使用しているパーサーの実装が違うのだと思います。
すみません。javaアプリ・サーブレットが実装しているパーサーを調べるにはどうすればいいのでしょうか? -- 本題ですが、XML(XSL)ファイルのパス(または、そのファイルから外部参照しているファイル)にascii文字以外が含まれていませんか? パスにascii文字以外を使用していました。パスワード変更.xsl→passchg.xslに変更したら PXDファイルを作成できました。本当にありがとうございました。 パスワード変更.xml→passchg.xml パスワード変更.xsl→passchg.xsl パスワード変更.pxd→passchg.pxd と変更したのですが、日本語のファイルを出力した方がわかりやすいので、出来れば日本語のファイル名にしたいのですが 日本語のファイル名で出力するのは無理なのでしょうか? javaアプリでは日本語のファイル出力OK サーブレットは日本語のファイル出力NG だったのですが、それはお互いが使用しているパーサーの実装が違うためという認識であっているのでしょうか? *************************** ***** XML・XSLファイル ***** *************************** XMLファイル <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="application/xml" href="../xsl/パスワード変更.xsl"?> <パスワード変更> <タイトル>XXX</タイトル> <会社>XXX</会社> <所属>XXX</所属> <氏名>XXX</氏名> <変更日>XXX</変更日> <変更前パスワード>XXX</変更前パスワード> <変更後パスワード>XXX</変更後パスワード> </パスワード変更> 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="pxd" encoding="Shift_JIS" indent="yes" /> <!-- 文書 --> <xsl:template match="/"> <pxd paper-type="A4"> <page> <svg width="21cm" height="29.7cm" viewBox="0 0 2100 2970"> <text x="200" y="500" font-size="200" > <xsl:value-of select="/cars/data" /> </text> <line stroke-width="1" x1="200" y1="500" x2="1200" y2="500"/> </svg> </page> </pxd> </xsl:template> </xsl:stylesheet> | ||||||||||||
|
投稿日時: 2005-01-25 13:14
以前、mogeさんがコメントしているのですが、試したのでしょうか?
スキーマを外部ファイルとして参照する場合、パスはURIとして解釈されます。 そのため、URIとして使用できない文字(日本語など)があると(少なくとも)Xercesではうまく動作しません。 Transformerを使っているようなので、どこで外部ファイルを参照する必要があるのかはわかりませんが、同様の現象が発生しているのだと思います。
そういうことだと思います。 | ||||||||||||
|
投稿日時: 2005-01-25 15:23
-- 以前、mogeさんがコメントしているのですが、試したのでしょうか?
試した結果です ***** ソース ***** TransformerFactory transFactory = TransformerFactory.newInstance(); Transformer transformer = transFactory.newTransformer(); System.out.println("クラス名1:"+transFactory.getClass()+getName()); System.out.println("クラス名2:"+transformer.getClass().getName()); ***** 結果(サーブレット) ***** クラス名1:org.apache.xalan.processor.TransformerFactoryImpl クラス名2:org.apache.xalan.transformer.TransformerIdentityImpl というふうに返ってきたのですがxalanがパーサーの名前になるのでしょうか? たびたび聞いて大変申し訳ないのですが…。 |