In article <opskfg4uii98rf19 / shelarcy-f9b8a0>,
  shelarcy <shelarcy / capella.freemail.ne.jp> writes:

> 100% どんなに正しくない HTML でもというのは無理だろうから、ある程度のとこ
> ろで線引きはしておく必要はあるでしょうけど……IE がどこまで不正なのを解釈
> しているかという資料はどこかにないかしらん。

以前 IE の JavaScript から HTML ページを読んで、DOM を使って木構造を表
示させたことがあります。

狙いは似ていて、不正な HTML を普通のブラウザ (つまり IE) っぽくパーズ
したいというものでした。

が、とあるページでソース上のひとつの要素が木構造のなかにふたつあらわれ
ることがあって、それを真似するのは耐えられないということであきらめまし
た。すでに記憶があいまいですが、たしか
<table><form></table><input></form> みたいなときに、木構造としては
<table>...</table> が対として認識されていて、form 要素が </table> の直
前で終了しているにもかかわらず、input 要素が無理矢理 form 要素のなかに
付け加えられたかのようにコピーされていた、というような記憶があります。
もしかしたら勘違いだったかも知れませんが。

他の方法としては tidy に手を出したこともあります。が、ライブラリとして
の出来が良くなく、また、<table><form></table></form> みたいなものにつ
いてはエラーになってパーズ結果が得られないのであきらめました。

HtmlPrag を試そうかなぁ、と考えたこともありますが使うには至りませんで
した。
http://www.neilvandyke.org/htmlprag/

現在は、あきらめて自分でパーザを書いて使っています。haskell でなくて恐
縮ですが、htree というものです。現時点では、そんなに難しいことはやらな
くてもたいして困らないんじゃないか、という感触を持っています。

まぁ、http://japan.cnet.com/ にあるような、height=15"" なんていう属性
は扱えませんけど。対応してはいけない理由があるわけじゃないで対応しても
いいんですが。

経験から得た知見としては、複数種類のエラーが組合わさったのを受け付ける
ようにはしないほうが良い、ということがあります。本当にそうなのかは保証
できませんが。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/