プロが教える店舗&オフィスのセキュリティ対策術

xml初心者です。

xmlファイルのひとつ上の階層にxslファイルを置いてあります。

xslファイル
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../format.xsl"?>
...


xslファイル format.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
...


href="../format.xsl" のように指定したのですがxslが適用されません。
そもそも別ディレクトリへの参照は可能なのでしょうか。
もし可能ならばどのような方法があるのでしょうか。

A 回答 (1件)

 あるページから、他のファイルの位置を参照する(ブラウザとサーバーの)機能をしっかり理解しておきましょう。

なにしろ、ウェブの基本中の基本ですからね。
 ブラウザがあるファイルをサーバーにHTTPプロトコルで要求するときは、ネットワークに対して
[HTTP要求ヘッダの例]
GET /ディレクトリ(/ファイル名) HTTP/1.1
Host: サーバー名
User-Agent: Mozilla/5.0 (Windows; ***Firefox/3.0.10
Accept: text/html****application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

という要求が行われます。
 ウェブ上のルーターが、サーバー名からIPアドレスを調べて、そのサーバーにファイルを要求します。
 GET(あるいはPOST)の要求を受け取ったサーバーは、指定されたファイルを提供しますが、【そのファイルは実在するとは限りません。】【重要】・・パスやファイル名を含めて動的に作成され提供される場合も多い。
[HTTP応答ヘッダの例]
HTTP/1.x 301 Moved Permanently
Date: Thu, 18 Jun 2009 09:51:40 GMT
Server: Apache
Location: http://サーバー名/ファイル名とパス
Content-Length: 242
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

 そのため、ブラウザは、そのページで指定されているファイル(画像・スタイルシート・スクリプトなど)の位置は知る由もありません。
 そこでブラウザは、そのファイルの【サーバー上のルートからの見かけのパスとファイル名】から、それらのファイルの場所を算出して、再びサーバーに要求します。そのとき、ページでの必要な指定方法は、
[ウェブ上の要求プロトコルと絶対パスとファイル名]
 http://[サーバー名][パス][ファイル名]
[同じサーバーでの絶対パス]
 /[パス]と[ファイル名]
  ブラウザからは、現在のファイルのプロトコル・サーバー名が付与される。
 http://サーバー名/[パス]と[ファイル名]とみなされる。
[同じサーバーでの相対パス]
 ../[パス]と[ファイル名]
 ./[パス]と[ファイル名]
 [パス]と[ファイル名]
 http://サーバー名/[算出されたパス]と[ファイル名]とみなされる。

以下同様・・・
 よって、指定方法は
 ../format.xsl
ないし、
 http://[サーバー名][パス][ファイル名]
のいずれか・・
 

この回答への補足

現在自分のPC内にファイルを置いてあるという状態ですが
../format.xsl
の指定方法では適用されませんでした。

同じフォルダ内にxml、xslファイルをおいた場合は
format.xsl
で適用されたのですが。

何が原因なのでしょうか。

補足日時:2009/06/18 20:50
    • good
    • 0
この回答へのお礼

すみません。

ie、opera では正常に表示されました。
firefoxのみで起こる現象だったようです。

お手数をおかけしました。

お礼日時:2009/06/18 21:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!