[xyzzy:00797] Re: XML モード
- Subject: [xyzzy:00797] Re: XML モード
- From: mwakahara <wakahara@xxxxxxxxxxxxxxx>
- X-mailer: Mozilla 4.05 [ja] (Win95; I)
こんばんわ。
> <!ENTITY % HTML.Recommended "IGNORE" >
>
> この `%' のところは `%' 以外の文字でもいいんでしょうか?
>
> <!ENTITY amp CDATA "&" -- ampersand -->
>
> また、このタイプの場合、参照するには必ず & でなければならな
> いのでしょうか?
えーっと、両方とも、仕様的にはそうでなければなりません。
上の方はパラメタエンティティといって、DTD(インスタンスではなく)の中で
使うエンティティの宣言です。
あとこの例についていえば、マークドセクションといって、コードの一部の有効
無効を切り替えるため仕掛けとして使われています。
この宣言より下の方に
<![%HTML.Recommended[
---
]]>
となっているところがあるはずですが、現在はHTML.RecoomendedがIGNOREになっ
ているため、パーサはこの部分を無効としてパースします。ちなみに有効にする
ときは
<!ENTITY % HTML.Recommended "INCLUDE" >にします。
下の方は一般のエンティティ宣言でDTDではなくインスタンスで使うエンティテ
ィの宣言です。
&について、XMLからはXMLの仕様に取り込まれました。
インスタンス上では&とあったら、XMLアプリケーションはそれを&として表
示します。
でも、このあたりの仕様については、異なるシステム間でのデータ交換の際に重
要になってくることですので、 xyzzyの入力および出力時に、フィルタをかけて
しまえばいいと思います。
&とあっても、xyzzyに入る前に都合のいい文字列に展開してから、出力する
前に再び&に戻せればそれで問題ないと思います。
あと、DTDはダイナミックに取り込めなくても、たとえば、lispで書いたものを
あらかじめ用意するということでもいいかと思います。
現在あるほとんどのSGMLアプリケーションでも、まずDTDを自分のデータに変換
してから、インスタンスを受け付けるというようになっています。
以上、よろしくお願いします。
mwakahara <wakahara@xxxxxxxxxxxxxxx>