Access + Webのホームへ戻る

外部ファイルを取り込むには

 

#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>は、サブプロシージャHelloAspresponse.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.incexternal.aspに変更するとブラウザに外部ファイルのurlを入力しても外部ファイルの内容が表示されません。

 

 

 

Tip

#incudeで取り込む外部ファイルを変更するには:

 

ASPファイルに#includeを挿入してページのヘッダー部を外部ファイルから取り込むと複数のページでヘッダー部を共有することができます。#includeで指定した外部ファイルは、ASPスクリプトが実行される前に挿入されます。このため、ヘッダー部を2種類用意してページごとに#includeで取り込む外部ファイルを変えようとしてもうまく動作しません。この場合、Server.Execute()メソッドを使用すると解決します。たとえば、ServerExecute.aspファイルのヘッダー情報を外部ファイルServerExecute1.aspServerExecute2.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>

 

 

 

Access + Webのホームへ戻る