|
HTMLは曖昧で誤りを含むコードをそれなりに許してしまいますし、ブラウザはそれをどうにか解釈して表示しようとしますし、そうしたHTMLを書いた人はブラウザ上でどうにか表示されているから過ちに気付かずに放置します。だから、そうした誤ったHTMLがWeb上にはたくさんあります。
こうしたHTMLは本質的にうまくXHTMLに変換できません。HTMLが一意に解釈できない場合があります。
例えば <b>a<i>b</b>c</i> といったように入れ子が正しくないケースがあったとします。これはもちろんHTML的には誤りですが、ブラウザはエラーなど出さずにレンダリングしてしまいます。つまり書いた人は気づいていなくてこうした誤ったHTMLを配信していることがあります。 このようなHTMLをXHTMLに変換するとしたらどのように変換するべきでしょうか? <b>a</b>b<i>c</i> <b>ab</b><i>c</i> <b>a</b><i>bc</i> といったいずれかの誤りではないかと推測されますが、明確にコレ!と決定づけることができません。
こうした場合、よくわからないけど決め打ちでとにかく変換してしまえ!という方針のライブラリなのであれば、とりあえずXHTMLに変換できることでしょう。それがあなたが望んだ結果と一致する保証はまったくありませんが :-P
普通はこうした異常なケースに遭遇したらエラーを出すように設計するのではないでしょうか。 そのエラーになる部分をどうするか。これはとても難しいテーマだということが想像付きますよね? HTML->XHTML変換は人間でも推測できないケースがあります。 ぽぴ王子の答えにある「泥臭い」部分と言うのはまさにこのあたりのことです。 本質的には無理なケースを含むものの、だましだまし、どうにか実用範囲にもっていくという世界です。
|