嘘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一枚のページの方がましです。