> そんなわけで、この一件は我々に「valid な XML は、ネットワークに繋がっていない環境では運用困難」という XML の意外な弱点を教えてくれたのでした。
valid か否かというより standalone か否かという話だと思うのですが、仕様書ではばっちり「standalone な文書の方がネットワークによる配信には望ましい」とされています。(って、「ネットワークによる配信には」って言ってますけど)
もっとも、実際には「パーサ側で DTD をキャッシュしてくれれば」対応は可能であるわけですが。というか、
> 実体の内容を取り出すXMLプロセサは,公開識別子及びシステム識別子並びにこの仕様の範囲外の付加的な情報をどのように組み合わせて,代わりの統一資源識別子(URI)参照の生成を試みてもよい」(JIS X 4159:2002)
ということで、カタログ使えばよいのでは。Entity Management [1] とか XML Catalogs [2] とか。というか、そのための公開識別子と思われ。
# とは言え、実際問題 PSVI のために馬鹿でかいモジュール DTD を読み込むくらいなら、はじめから文書型宣言のない wellformed XML で公開する方がはるかに健全であると思うわけで。
# 現実に Mozilla とか外部 DTD 読みませんし。知らずに文字実体参照を書いてたりするとえらい目に遭います。(今はメジャーな公開識別子には対応しているみたいですが)