DeleteTag.mac

HTML タグ削除マクロ

ダウンロード

概要と特長

使い方

設定

設定はマクロ本体の冒頭部分を書き換えることで行います。

仕様と制限事項

XHTML で使う場合

処理速度について

Version 4 からは「終了タグ省略可」の設定により、終了タグが省略されているかもしれない状況にも柔軟に対応できるようになりました。しかし、柔軟さと速さはトレードオフの関係にあります。終了タグが書かれていない要素を「終了タグ省略可」に設定した場合、もちろん正しい結果になりますが、処理にえらい時間がかかることがあります。次の例を見てください。

<SELECT>
  <OPTION>北海道
  <OPTION>青森
      …
  <OPTION>沖縄
</SELECT>

ここで北海道の <OPTION> を削除しようとしたとき、 option が「終了タグ省略可」に設定されていると、あるかもしれない </OPTION> を探してはるばる沖縄まで行きます。そして </SELECT> に出会ってはじめて </OPTION> が省略されていたことを知るわけです。 option が「終了タグなし」に設定されていれば、最初から </OPTION> なんて探しに行きません。

「OPTION 要素は他の要素を含むことができないんだから、青森の <OPTION> に出会った時点で </OPTION> が省略されてることはわかるだろう」と思われるでしょう。おっしゃる通りなんですが、このマクロは要素の内容モデルに基づく判断はできません。そこまでやるとコードが膨大になりすぎるし、特定のバージョンの HTML でしか使えなくなるからです。そこで、代わりに SGML における次の原則を用いました: An end tag closes, back to the matching start tag, all unclosed intervening start tags with omitted end tags. (the SGML standard, section 7.5.1) つまり、マッチしない終了タグに出会ったらマッチする開始タグまでネストを遡るわけです。この方法はすべての SGML アプリケーションに有効で、時間はかかっても正しい結果が得られます。速さを求める人のために「終了タグなし」と「終了タグあり」の設定も用意しました。妥協点としては妥当だと思うのですが、いかがでしょうか。

バージョン履歴

Version 4.07 (2003/04/12)
Version 4.06 (2002/12/31)
Version 4.05 (2002/12/23)
Version 4.04 (2002/12/21)
Version 4.03 (2002/12/07)
Version 4.02 (2002/11/25)
Version 4.01 (2002/11/23)
Version 4.0 (2002/11/18)
Version 4 beta 5 (2002/11/05)
Version 4 beta 4 (2002/11/03)
Version 4 beta 3 (2002/10/12)
Version 4 beta 2 (2002/10/07)
Version 4 beta 1 (2002/10/02)
Version 4 alpha 1 (2002/08/12)
Version 3.3 (2002/07/27)
Version 3.2 (2002/07/26)
Version 3.1 (2001/10/13)
Version 3.0 (2001/10/12)
Version 2.0 (2001/10/11)
Version 1.0 (2001/10/11)

旧バージョン

参考文献

関連製品のご案内

フィードバック

バグ報告・提案・質問・ツッコミなどは 談話室 へどうぞ。