HTML トークナイザー

HTML トークナイザー

HTML トークナイザ

トークナイザは HTML パースの最初の段階です: markup テキストを standards-defined token のストリームに変換します。これは public API であり、ツリーよりも token を重視するツール—リンター、サニタイザの事前パス、シンタックスハイライト—はストリームを直接消費できます。


Markup のトークナイズ

Tokenizer.tokenize() は完全な入力を処理し、Tokenizer.tokenize_fragment() はフラグメント token 化ルールを適用します。両方とも標準 token 語彙を出力します。

Token クラス

各 token は型付けされたオブジェクトです: タグ(属性付き)の場合は StartTagToken と EndTagToken、テキストは CharacterToken、入力の終了を示すのは CommentToken、DoctypeToken、EofToken です。

トークナイザの状態

TokenizerState は標準状態機械をモデル化します — 仕様が名前付けしているのと同じ状態です — そして Tokenizer.set_state() はフラグメントやコンテキスト感知呼び出し元が正しい状態で開始できるようにします。

文字参照

名前付きおよび数値文字参照は resolve_named_char_ref()、resolve_numeric_char_ref()、および find_named_char_ref_match() を通じて解決されます — 完全な名前参照テーブルであり、ショートカットのサブセットではありません。


ヒントとベストプラクティス

  • 特定の要素内に現れる可能性があるコンテンツをトークン化する際は、正しい初期状態で tokenize_fragment() を使用してください。
  • 例外でイテレータを使い切るのではなく、EofToken を最終的な終了シグナルとして扱ってください。
  • サニタイザ向けには、ツリーが構築される前にトークンレベルで StartTagToken の属性を検査してください。

一般的な問題

問題原因修正
スクリプト/スタイルのコンテンツがマークアップとしてトークナイズされるコンテキストの初期状態が間違っている適切なTokenizerStateをset_state()で設定してください。
エンティティが未解決のまま表示される参照解決なしで生テキストを消費するchar-ref リゾルバ関数を使用する
フラグメント出力はフルパースと異なりますフラグメントルールは意図的に異なります完全なドキュメントには tokenize() を使用してください

FAQ

ツリーを構築せずに tokenizer を使用できますか?

はい — token stream は公開されたスタンドアロン出力です。

tokenizer の状態は標準のものですか?

TokenizerState は仕様の状態機械を鏡像し、set_state() を介して設定可能です。

named character references はどのように処理されますか?

完全な named-reference テーブルに対して、resolve_named_char_ref() と find_named_char_ref_match() を通じて処理します。


API Reference 概要

クラス/メソッド説明
Tokenizer.tokenize完全な入力をトークナイズする
Tokenizer.tokenize_fragmentフラグメントルールでトークナイズする
Tokenizer.set_state初期 tokenizer 状態を設定する
StartTagToken属性付きの開始タグ token
TokenizerState標準ステートマシン states
resolve_named_char_ref名前付き character-reference を解決する

参照

 日本語