[Seasar-user:2030] Re: S2Container定義ファイルのDOCTYPE指定について

Koichi Kobayashi koichik
2005年 5月 27日 (金) 00:40:13 JST


小林 (koichik) です.

On Thu, 26 May 2005 19:54:28 +0900
<[E-MAIL ADDRESS DELETED]> wrote:

> S2Container定義(dicon)ファイルのDOCTYPEは必ず以下でないといけないのでしょうか?
> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
> "http://www.seasar.org/dtd/components.dtd">
> 
> 例えば、components.dtdを以下のようにしてはいけないのでしょうか?
> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
> "components.dtd">

まず,上記の DTD は S2.0.x 時代のものです.
S2.1 以降は以下の DTD を使った方が新しい機能を使うことができてお得です.

<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
    "http://www.seasar.org/dtd/components21.dtd">

> 自分でサンプルプログラムを作成して、後者の定義で動かしたところ正常に動作しました。
> ただ、たまたま動作しただけかも知れないので本当に後者でもよいのか判断できずにいます。

S2 の実行時に限った話であれば,問題ないと思います.
S2 はパブリック ID ("-//SEASAR2.1//DTD S2Container//EN" の部分) を
XML パーザに登録しますから,システム ID 
("http://www.seasar.org/dtd/components21.dtd" の部分) が実際の
DTD を参照していなくても関係なく動作することができます.
# Kijimuna もパブリック ID しか見ていないようなので,実用上の
# 問題はなさそうです.

しかし,S2 のパブリック ID を知らないアプリケーション/ツールが
この dicon ファイルを読み込んだ場合には,システム ID が正しい
DTD を参照していた方が望ましい場合もあります.
例えば XML エディタの中には,システム ID の URL に従って DTD を
取得して妥当性を検証する機能を持っているものがあります.
# それらの場合もパブリック ID と DTD ファイルの対応を登録すれば
# 不正なシステム ID でも問題にならないケースが多いとは思いますが.
S2 や Kijimuna 以外の XML 対応ツールを使う際に,システム ID が
正しく記述されていることが役に立つ場合もあるので,特別な理由が
ない限りシステム ID は正しく記述した方がよいと思います.

ちなみにシステム ID を変更したい理由はどういうものでしょうか?
お使いの XML 関連ツールがシステム ID を見てネットワークアクセス
しようとするけどセキュリティの都合なんかで seasar.org を見ることが
できなくてエラーになるとか,ネットワークアクセスが遅いのでそれを
止めたいとかでしょうか?
その辺りの背景を書いて頂ければ,適切な対応方法が得られるかも
しれません.


-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




Seasar-user メーリングリストの案内