嘘XMLパーサーの実装

  • 要素開くタグが出たらアトリビュートごとスタックに積む
  • 要素内リテラルは次のタグまで「1文字列要素」としてスタックに積む
  • 単体タグが出たらスタックには何もしない。ちなみに、特定のタグ(p,br,hr)は「単体で意味を持つ」ものと見る(代わりにスタックにも積まず、閉じるタグが来たら無視する)
  • 要素閉じるタグが出たら、同じ要素の開くタグまでスタックを捨てる
    • もしたどっていっても開くタグがなかったらその閉じるタグは「エラー」だと思って読み捨てる。
  • P,H?,br,div,li,dt,ddが出る度に「行要素」に追加
  • 行要素は文字要素(主文字1,ルビ2,強調)の集合+インデント+寄せ
  • インラインIMGは「〓(alt属性)」に変換

ああ、なんか10年以上前のWebブラウザ作ってる気分になってきた……。昔はSGMLのサブセットという触れ込みだったんだよね、HTML。「これからは、すべてのデータはXMLだよ!XML組版機作ろう!」と騒いで、誰もついてこなかった20年前。ああ、地球。何もかも皆懐かしい(ちげーよ)。


ちなみに、10年前にはホントにPCのJava-Appletで動くi-modeのブラウザ作ってました。外字を全部Gifで持って、i-modeサイトの汚いソースでも、どんなに文章構造を無視した作りでもきちんと動くやつ。でも、あれ、結局何人が使ったんだろ。

  • 汚い例

<h2>あなたも<br>
<h1>(全角スペース)健康美人に!<br>
<br>
今すぐメールオーダーを!<br>
<dd>>>こちら<<<br>

閉じてないとか何とかいう以前の問題。「どの機械で見てもきちんとぶら下がり禁則して欲しいんです。こだわりです」……って、出来るかー!


まだPDF一枚のページの方がましです。