- - PR -
XSLTでHTMLに変換する際の日本語URL
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-06-06 18:19
こんにちは。
Windows環境で、以下のようなことを実現したいと思っていますが 日本語ファイル名の処理で問題があり困っています。対応方法をご存知の方が いらっしゃいましたらご教示頂ければと思います。 * あるフォルダ以下のファイル/フォルダ一覧を含むXMLファイルを生成する * そのXMLファイルに対してXSLTを適用させHTMLを生成。各ファイルに ハイパーリンクで飛べるようにする。 ここで、ファイル名やフォルダ名に日本語が含まれる場合、XSLTを適用した際に URLがエンコードされ、ハイパーリンクをクリックしてもうまくファイルが開けません。 XML生成の際にあらかじめURLをSJISでエンコードしてみたのですが、それでも だめでした。 正しくファイルが開けるようにするにはどのようにすれば良いでしょうか? なお、XMLファイルをIE6.0で開いています。 |
|
投稿日時: 2004-06-06 21:23
ハイパーリンクの具体的文字列は?
あと、Webサーバ経由ですか、 IE 直でローカルのfile:リンクですか? |
|
投稿日時: 2004-06-07 19:07
返信ありがとうございます。
ハイパーリンクの具体的文字列ですが、 元のXMLファイル(SJIS)で <DocumentPath> \\fileserver\フォルダ1\フォルダ2\サンプルファイル.doc </DocumentPath> となっているものを、 <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="../DocumentPath"/> </xsl:attribute> <xsl:value-of select="."/> </xsl:element> というXSLTで変換しています。 webサーバは使用せずにIEに直にXMLファイルを読ませているのですが、出力された ハイパーリンクにカーソルを合わせるとURLエンコードされた文字列が表示され、クリックしても 正しくファイルに到達できない状態です。 |
|
投稿日時: 2004-06-07 23:20
URL エンコードされたものを \\fileserver が解釈できないのでは?
Webサーバーなら URLエンコードを戻して解釈するでしょうが <H TML><HEAD><TITLE>local href</TITLE></HEAD><BODY> <P> <A HREF="C:\Documents and Settings\KUBO\デスクトップ\0425">no file://</A> <A HREF="file://C:\Documents and Settings\ZUKA\デスクトップ\0425">file://</A> </P></BODY></H TML> IEではなく N7とO7 では file:// をつけないとダメでした ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー IE の詳細設定では、URLを常にUTF-8で送る チェックがありますが、どうでしょう? [ メッセージ編集済み 編集者: MMX 編集日時 2004-06-07 23:38 ] |
|
投稿日時: 2004-06-08 13:24
なるほど、IE->fileserverへはエンコードされた文字列で
アクセスに行くのですね。ということはやはりIEが読み込む 時点でURLエンコードされないようにしないといけないですね。 URLのエンコード方式とfile://有無を変えて いくつか試してみました。結果としてはどれもうまく いかなかったのですが。。 1. SJISでURLエンコード, file://なし -> NG (リンク先文字列はSJIS URLエンコード形式) 2. URLエンコードなし, file://なし -> NG (リンク先はUTF-8 URLエンコード形式) 3. URLエンコードなし, file://あり -> NG (リンク先は文字化け) 4. SJISでURLエンコード, file://あり -> NG (リンク先は文字化け) IEの"常にUTF-8としてURLを送信"はoffにしています。(今まではonでした) URLエンコードなし、というのは、XMLファイル生成時にエンコードを しない、という意味で、リンク先は・・というのは、ハイパーリンクに カーソルを合わせた際ブラウザの下に表示されるリンク先文字列です。 上記3,4のパターンでリンク先が文字化けしないようになれば良いと 思うのですが。。もう少しやってみます。 |
|
投稿日時: 2004-06-08 18:09
\の代わりに / を使うとよいようです,どちらもOK、
Webの世界の書き方をすると通ります。 <A HREF="//filesever/share/部/課/グループ/vje2_5のパッチ/pp.TXT">no file://</A> <A HREF="file://filesever/share/部/課/グループ/vje2_5のパッチ/pp.TXT">file://</A> IEのアドレス欄の表示は ¥になっていますが \\fileserver\share\部\課\グループ\vje2_5のパッチ\pp.TXT ----------------------------------------------------- 後は、Fileserver の動き? Win/Unix [ メッセージ編集済み 編集者: MMX 編集日時 2004-06-09 11:20 ] |
|
投稿日時: 2004-06-08 23:06
お付き合い頂きありがとうございます。
'\'を'/'に置換してやってみましたが、結果は一緒でした。 IEだとHTMLの変換結果が見えないので、XTなど別のXSLT プロセッサを試してみようと思っています。 |
|
投稿日時: 2004-06-21 17:41
http://www.atmarkit.co.jp/fxml/askxmlexpert/035xslterr/033xslterr.html
上記記事にある「URIの値が非ASCII文字だった場合エスケープすべきである」 という決まりによる問題ではないでしょうか。 出力形式をxmlにすると、href属性の値に日本語が含まれていてもそのまま出 力されます。IE6によるxmlからhtmlへの変換結果htmlから、ローカルの日本語 名称のファイルにリンクしてみましたが、私の環境では正常に開くことができ ましたよ。 |