[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:00797] Re: XML モード



こんばんわ。


> <!ENTITY % HTML.Recommended "IGNORE" >
>
> この `%' のところは `%' 以外の文字でもいいんでしょうか?
>
> <!ENTITY amp    CDATA "&#38;"   -- ampersand          -->
>
> また、このタイプの場合、参照するには必ず &amp; でなければならな
> いのでしょうか?

えーっと、両方とも、仕様的にはそうでなければなりません。

上の方はパラメタエンティティといって、DTD(インスタンスではなく)の中で
使うエンティティの宣言です。
あとこの例についていえば、マークドセクションといって、コードの一部の有効
無効を切り替えるため仕掛けとして使われています。

この宣言より下の方に

<![%HTML.Recommended[
---
]]>
となっているところがあるはずですが、現在はHTML.RecoomendedがIGNOREになっ
ているため、パーサはこの部分を無効としてパースします。ちなみに有効にする
ときは

 <!ENTITY % HTML.Recommended "INCLUDE" >にします。

下の方は一般のエンティティ宣言でDTDではなくインスタンスで使うエンティテ
ィの宣言です。
&amp;について、XMLからはXMLの仕様に取り込まれました。

インスタンス上では&amp;とあったら、XMLアプリケーションはそれを&として表
示します。

でも、このあたりの仕様については、異なるシステム間でのデータ交換の際に重
要になってくることですので、 xyzzyの入力および出力時に、フィルタをかけて
しまえばいいと思います。

&amp;とあっても、xyzzyに入る前に都合のいい文字列に展開してから、出力する
前に再び&amp;に戻せればそれで問題ないと思います。

あと、DTDはダイナミックに取り込めなくても、たとえば、lispで書いたものを
あらかじめ用意するということでもいいかと思います。
現在あるほとんどのSGMLアプリケーションでも、まずDTDを自分のデータに変換
してから、インスタンスを受け付けるというようになっています。


以上、よろしくお願いします。

mwakahara <wakahara@xxxxxxxxxxxxxxx>

Index Home