外部ファイルを取り込むには
#includeを使用するとASPファイルの一部を外部ファイルに作成して複数のページで共有することができます。#includeは、HTMLのコメントタグ<!-- ・・・ -->の間に挿入します。
|
<!-- #include virtual=”externalfilename” --> <!-- #include file=”externalfilename” --> |
virtual=を指定したときは、外部ファイルが存在するパスを仮想アドレスから指定します。たとえば、外部ファイルexternal.incが仮想フォルダ/accwebのサブフォルダ/samples/aspに格納されているときは、以下のよう指定します。この場合、外部ファイルを参照している参照元のASPファイルの格納場所には影響を受けません。
#include virtual=”/accweb/samples/asp/external.inc”
file=を指定したときは、参照元のASPファイルからの相対パスで指定します。たとえば、外部ファイルexternal.incが仮想フォルダ/accwebのサブフォルダ/samples/aspに格納されていて、参照元のASPファイルも同じフォルダ/samples/aspに格納されているときは、以下のように指定します。
#include file=”external.inc”
外部ファイルexternal.incが上位のフォルダ/accweb/samplesに格納されているときは
#include file=”../external.inc”
のように指定します。
virtual=のときは、参照元のASPファイルの格納場所に影響を受けませんが、file=のときは参照元のASPファイルの格納場所と関連しますので注意する必要があります。
|
|
図 #includeで外部ファイルを取り込むサンプル
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「#includeの使い方」をクリックしてください。Internet Explorerの左側のフレームにはASPファイルのソース、右側のフレームにはHTMLファイルが表示されます。このサンプルでは、#include file=指定で外部ファイルIncludeHello.incを取り込んでいます。IncludeHello.incファイルには、以下のASPスクリプトが登録されています。
<%
sub HelloAsp(strMsg)
response.write(strMsg &
"<br>")
end sub
%>
図のASPファイルの行7からcallでサブプロシージャHelloAspを呼び出しています。HelloAspは、引数で指定されたメッセージをresponse.writeメソッドで出力しています。このサンプルを実行すると、以下のようなHTMLドキュメントが作成されます。Hello Asp!<br>は、サブプロシージャHelloAspのresponse.writeメソッドで出力したものです。
<html>
<body>
Hello
Asp!<br>
</body>
</html>
Note
|
#includeで取り込む外部ファイルの拡張子について: #includeで取り込む外部ファイルを作成するとき、外部ファイルの拡張子を(.inc)にするとブラウザから外部ファイルが参照されます。たとえば、外部ファイルexternal.incが仮想フォルダ/accwebのサブフォルダ/samples/aspに格納されているとき、ブラウザのurlに http://localhost/accweb/samples/asp/external.inc のように入力するとexternal.incの内容がブラウザに表示されてしまいます。この不都合を回避するには、外部ファイルの拡張子を.aspにします。external.incをexternal.aspに変更するとブラウザに外部ファイルのurlを入力しても外部ファイルの内容が表示されません。 |
Tip
|
#incudeで取り込む外部ファイルを変更するには: ASPファイルに#includeを挿入してページのヘッダー部を外部ファイルから取り込むと複数のページでヘッダー部を共有することができます。#includeで指定した外部ファイルは、ASPスクリプトが実行される前に挿入されます。このため、ヘッダー部を2種類用意してページごとに#includeで取り込む外部ファイルを変えようとしてもうまく動作しません。この場合、Server.Execute()メソッドを使用すると解決します。たとえば、ServerExecute.aspファイルのヘッダー情報を外部ファイルServerExecute1.aspとServerExecute2.aspのいずれからか取り込むときは、ServerExecute.aspに?を付加して引数を指定します。”Page Header 1”を表示させるには、ServerExecute.asp?url=ServerExecute1.aspのような引数を指定します。”Page Header 2”を表示させるには、ServerExecute.asp?url=ServerExecute1.aspのような引数を指定します。これでページのヘッダー部を実行時に変更することができます。Server.Execute()メソッドは、IIS5.0で追加された機能ですから、IIS4.0では使用できません。 ServerExecute.asp <%@ language=vbscript %> <% option explicit %> <html> <body> <% dim strUrl strUrl = request.querystring("url") server.execute(strUrl) %> </body> </html> ServerExecute1.asp <%@ language=vbscript %> <% option explicit %> <html> <body> <% response.write("Page Header 1 <br>") %> </body> </html> ServerExecute2.asp <%@ language=vbscript %> <% option explicit %> <html> <body> <% response.write("Page Header 2 <br>") %> </body> </html> |