kikwai@... (機械伯爵) さん wrote.
> 単純に考えれば、最低限のXML構造だけをパースする
> 整形式に対して、DTDのルールを検証する場合は、それ
> だけ手間がかかりそうな気がします。
>
> しかし、ある程度きっちり決まった構造をあらかじめ
> 作っておいて、それに放り込んで検証しているなら、も
> しかしたらDTDつきのほうが処理が軽いのかもしれませ
> ん。
えーと、XML の文法は、
<a>
<b></b>
</a>
は許されるけれど、
<a>
<b>
</a>
は許されません。したがって、<a> の次に出てくるのは新しいタグか、さもなけ
れば </a> なんです。「極めて」簡単、パースってほど複雑なこたあ、ありませ
ん(^^;。そういう風にできた文法です。そういう訳で、XML 文書を読みながら整
形や表示もできるし、解析木を作りたければ作るしで、検証もスタックにタグを
積んでいってそれが最後にピッタリ無になったらおしまい、です。既存 DTD に
のっとった XML 文書を処理するとなると、機械さんご指摘のように DTD の読み
込みと、タグ、属性の検証動作が必要になって、そのぶん、時間がかかります。
> ・・・処理系にもよる、とか言われたらそれまでだけ
> ど・・・
IE や Mozilla で
<?xml version="1.0" encoding="euc-jp"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
と書いても、こういう名前空間をどれだけ正確に参照し、検証してくれているか
わからないというのが私の感想です。処理速度や汎用性が優先されている(つま
り見栄えを問題にしている)気がするので……。
--
本田博通(閑舎)
テキストとスクリプトの http://rakunet.org/TSNET/