レイアウト用タグフィルタ アルゴリズム
カウンタ
	ltCnt    無効な"<"の数をカウント
フラグ
	tagFlg   有効なタグ
	
	gtFlg	 有効なタグ内で">"が出現した

状態遷移
	行頭で
		tagFlg←false

	tagFlg==trueのとき
		">"なら
			ltCnt==0なら
				tagFlg←false
			ltCnt>0なら
				gtFlg←true
				ltCnt--
	tagFlg==falseのとき
		"<"なら
			有効なタグなら
				tagFlg←true
				gtFlg←false
			無効なタグなら
				ltCnt++
		">"なら
			ltCnt>0なら
				ltCnt--
	行末で
		tagFlg==true かつ gtFlg==falseなら
			ltCnt++
備考
	gtFlgはtagFlgに従属
		tagFlgがtrueになったときgtFlgはfalseになる
		gtFlgを参照するのはtagFlg==trueの場合のみ
		tagFlg==falseのときgtFlgは不定
	ltCntは無効な"<"のときだけカウント
		ただし改行時にtagFlg==trueかつgtFlg==falseなら無効なタグとしてカウント

アルゴリズム

	一行取り出す(メインループ)
		tagFlgをfalse(初期化)


		一文字取り出す(セカンドループ)

			"<"が出現したなら
				tagFlg==trueなら
					アトリビュートバッファに"&lt;"を出力
				tagFlg==falseなら
					各バッファクリア

					エレメント名取得

					無効なエレメント名なら
						ltCnt++
						"&lt;"+エレメント名(そのまま)を出力
					有効なエレメント名なら
						tagFlgをtrue
						gtFlgをfalse
			">"が出現したなら
				tagFlg==trueなら
					ltCnt==0なら(タグが閉じたとき)
						tagFlgをfalse
						"<"+エレメント名(小文字)+アトリビュート+">"を出力
					ltCnt>0なら
						gtFlgをtrue
						ltCnt--
						アトリビュートバッファに"&gt;"を出力
				tagFlg==falseなら
					ltCnt>0なら
						ltCnt--
					"&gt;"を出力
		
			"<"、">"、改行 以外が出現したなら
				tagFlg==trueなら
					アトリビュートバッファに出力
				tagFlg==falseなら
					そのまま出力
		セカンドループ終了

		tagFlg==trueなら
			gtFlg==trueなら(そのタグで">"が出現した)
				"<"+エレメント名(小文字)+アトリビュートを出力
			gtFlg==falseなら(そのタグで">"が出現しなかった)
				ltCnt++
				"&lt;"+エレメント名(そのまま)+アトリビュートを出力

		改行が出現したなら
			改行を出力

	メインループ終了