HTML Tokenizer

HTML Analyseur

Le tokenizer est la première étape de l’analyse HTML: il convertit le texte balisé en un flux de jetons définis par les normes. Il est public API, de sorte que les outils qui s’intéressent aux jetons plutôt qu’aux arbres — les linters, les pré-passes de désinfection, les surligneurs de syntaxe — peuvent consommer le flux directement.


Tokenisation du balisage

Tokenizer.tokenize() traite l’entrée complète; Tokenizer.tokenize_fragment() applique les règles de tokenisation de fragments. Les deux émettent le vocabulaire standard des jetons.

Classes de jetons

Chaque jeton est un objet typé: StartTagToken et EndTagToken pour les balises (avec attributs), CharacterToken pour le texte, CommentToken, DoctypeToken et EofToken marquant la fin de l’entrée.

États du tokenizer

TokenizerState modélise la machine d’états des normes — les mêmes états que ceux nommés par la spécification — et Tokenizer.set_state() permet aux appelants fragmentés et sensibles au contexte de démarrer dans le bon état.

Références de caractères

Les références de caractères nommées et numériques sont résolues via resolve_named_char_ref(), resolve_numeric_char_ref() et find_named_char_ref_match() — la table complète des références nommées, pas un sous-ensemble raccourci.


Conseils et bonnes pratiques

  • Utilisez tokenize_fragment() avec l’état initial correct lors de la tokenisation de contenu qui apparaîtrait à l’intérieur d’un élément spécifique.
  • Considérez EofToken comme le signal de fin définitif plutôt que d’épuiser l’itérateur par exception.
  • Pour les désinfectants, inspectez les attributs StartTagToken au niveau du token avant que tout arbre ne soit construit.

Problèmes courants

ProblèmeCauseCorrection
Le contenu script/style est tokenisé comme balisageÉtat initial incorrect pour le contexteDéfinissez le TokenizerState approprié via set_state()
Les entités apparaissent non résoluesConsommation de texte brut sans résolution de référenceUtilisez les fonctions de résolution char-ref
La sortie du fragment diffère de l’analyse complèteLes règles du fragment diffèrent intentionnellementUtilisez tokenize() pour les documents complets

FAQ

Puis-je utiliser le tokenizer sans construire d’arbre?

Oui — le flux de jetons est une sortie publique et autonome.

Les états du tokenizer sont-ils les standards?

TokenizerState reflète la machine d’états de la spécification et est réglable via set_state().

Comment les références de caractères nommées sont-elles gérées?

Via resolve_named_char_ref() et find_named_char_ref_match() contre la table complète des références nommées.


API Reference Résumé

Classe/MéthodeDescription
Tokenizer.tokenizeTokenisez l’entrée complète
Tokenizer.tokenize_fragmentTokeniser avec les règles de fragments
Tokenizer.set_stateDéfinir l’état initial du tokenizer
StartTagTokenJeton de balise d’ouverture avec attributs
TokenizerStateÉtats de la machine à états des normes
resolve_named_char_refRésoudre une référence de caractère nommée

Voir aussi

 Français