以下のファイルは他のファイルをインクルードすることができるため、分割して作成できます。
コマンドマップ、ページマップの分割
コマンドマップ、ページマップ中に"+"に続けてファイル名を書くと、そのファイルをインクルードできます。ファイル名はコマンドマップのあるフォルダからの相対パスで記述します。パス区切り文字は"/"です。コマンドマップからインクルードするファイルの拡張子が.xmlの場合は、コマンドスクリプティングとして扱われます。以下はコマンドマップを分割する例です。
コマンドマップcommands.map(インクルードする側)
# このファイルと同じフォルダにあるsub.mapをインクルード +sub.map # サブフォルダcompo1にあるcmd.mapをインクルード +compo1/cmd.map # 通常のエントリを混在して書くことも可能 ;=calc.CalcHandler.startup
コマンドマップsub.map(インクルードされる側)
calc.BodyBean;add=calc.CalcHandler.add calc.BodyBean;sub=calc.CalcHandler.sub calc.BodyBean;next=calc.CalcHandler.next
また、以下の方法でも、コマンドマップとページマップを分割することができます。
WEB-INFフォルダの下にcommands.map、pages.mapという名前のフォルダを作り、その下にファイルを置いてください。commands.mapフォルダ内のファイルはすべてコマンドマップとして、pages.mapフォルダ内のファイルはすべてページマップとして使用されます。
この方法は、Webアプリケーションで使用可能です。
XMLで記述するファイルの分割(コマンドスクリプティング、リモートマップ、XMLデータ仕様記述、リソースファイル、データBean変換マップ)
XMLで記述するファイルの場合は、XMLのエンティティ宣言を使うとファイルをインクルードできます。 インクルードする側のDTDで、インクルードされる側のファイルをエンティティとして宣言します。
DTDは以下の書式でXML宣言 (<?xml ... ?>の書式) の直後に記載します。
<!DOCTYPE ルート要素名 [ DTDの内容 ]>
ここで、「ルート要素名」は定義ファイルの種類に応じて以下を使用します。
定義ファイル | ルート要素名 |
---|---|
コマンドスクリプティング | commandMap |
リモートマップ | remoteMap |
XMLデータ仕様記述 | eSpec |
リソースファイル | ujiResource |
データBean変換マップ | convMap |
「DTDの内容」にエンティティ宣言を以下の書式で記述します。複数のファイルをインクルードする場合は、そのファイルの数だけエンティティ宣言を記述します。
<!ENTITY エンティティ名 SYSTEM "インクルードするファイル名">
「インクルードするファイル名」は、設定ファイルフォルダからの相対パスで指定します。設定ファイルフォルダは、コマンドマップ、リモートマップなどのApcoordinatorの定義ファイルを置くフォルダです。例えば、Webアプリケーションの場合は、WEB-INFディレクトリーです。なお、1階層上のフォルダを表す「..」を相対パス中に含めることはできません。また、インクルードされるファイルからさらに別のファイルをインクルードすることはできません。
「エンティティ名」は、インクルードするファイルを参照するための名前です。XML中に以下のようにエンティティ名を記述することにより、その位置にファイルがインクルードされます。
&エンティティ名;
以下は、リモートマップを分割する例です。
リモートマップremote.xml(インクルードする側)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE remoteMap [ <!ENTITY sub1 SYSTEM "subremote1.xml"> ]> <remoteMap> <config> <version>5.0</version> </config> <!-- subremote1.xmlをインクルード --> &sub1; <!-- 通常のエントリを混在して書くこともできる --> <ejb name="MySessionBean" application="java:comp/env/ejb/MySessionBean"/> </remoteMap>
リモートマップsubremote1.xml(インクルードされる側)
<?xml version="1.0" encoding="Shift_JIS"?> <ejb name="CartBean" application="java:comp/env/ejb/CartBean"/> <ejb name="OrderBean" application="java:comp/env/ejb/OrderBean"/>
注意
コマンドスクリプティング、リモートマップ、リソースファイル、データBean変換マップでファイルのインクルードを使用する場合は、インクルードする側のファイル、インクルードされる側のファイルは設定ファイルフォルダ配下(サブフォルダ含む)に置いて使用します。
注意
XMLデータ仕様記述でファイルのインクルードを利用する場合は以下の注意事項があります。
XMLデータ仕様記述をインタープリタで実行する場合、チェック定義エンジン (com.fujitsu.uji.xscript.ESpecValidator) に対して以下の処理が必要です。
setXmlメソッドを呼ぶ前に、setInfLoaderメソッドでInfLoaderをセットする必要があります。記述例は“G.2.1 入力項目に入力されたデータが適切かどうかチェックしたい”を参照してください。
setXmlメソッドに入力ストリーム (java.io.InputStream) を渡す場合は、XMLデータ仕様記述のファイル名を第2引数に指定する必要があります。
XMLデータ仕様記述をインタープリタで実行する場合、インクルードする側のファイル、インクルードされる側のファイルは設定ファイルフォルダ配下(サブフォルダ含む)に置いて使用します。
XMLデータ仕様記述コンパイラ利用時は、インクルードするファイル名はカレントディレクトリーからの相対パスとなります。
関連項目