HTML Tokenizer

HTML Tokenizer

De tokenizer is de eerste fase van HTML parsing: hij zet markup-tekst om in een stroom van door standaarden gedefinieerde tokens. Het is een openbare API, zodat tools die zich richten op tokens in plaats van bomen — linters, sanitizer pre-passes, syntax highlighters — de stroom rechtstreeks kunnen verwerken.


Markup tokeniseren

Tokenizer.tokenize() verwerkt volledige invoer; Tokenizer.tokenize_fragment() past fragment-tokenisatie-regels toe. Beide geven de standaard token-woordenschat uit.

Tokenklassen

Elke token is een getypeerd object: StartTagToken en EndTagToken voor tags (met attributen), CharacterToken voor tekst, CommentToken, DoctypeToken en EofToken die het einde van de invoer aanduiden.

Tokenizer-staten

TokenizerState modelleert de standaard statusmachine — dezelfde toestanden die de specificatie benoemt — en Tokenizer.set_state() laat fragment- en contextgevoelige aanroepers in de juiste toestand starten.

Karakterreferenties

Naam- en numerieke karakterreferenties worden opgelost via resolve_named_char_ref(), resolve_numeric_char_ref() en find_named_char_ref_match() — de volledige tabel met benoemde referenties, niet een verkorte subset.


Tips en best practices

  • Gebruik tokenize_fragment() met de juiste begintoestand bij het tokeniseren van inhoud die binnen een specifiek element zou verschijnen.
  • Behandel EofToken als het definitieve eindsignaal in plaats van de iterator uit te putten via een uitzondering.
  • Voor sanitizers, inspecteer StartTagToken-attributen op tokenniveau voordat er een boom wordt opgebouwd.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Script/style-inhoud tokeniseert als opmaakVerkeerde initiële staat voor contextStel de juiste TokenizerState in via set_state()
Entiteiten blijven onopgelostRuwe tekst consumeren zonder referentie-oplossingGebruik de char-ref resolverfuncties
Fragmentoutput verschilt van volledige parsingFragmentregels verschillen opzettelijkGebruik tokenize() voor volledige documenten

FAQ

Kan ik de tokenizer gebruiken zonder een boom te bouwen?

Ja — de token stream is een publieke, zelfstandige output.

Zijn de tokenizer-statussen de standaard?

TokenizerState weerspiegelt de statusmachine van de specificatie en kan worden ingesteld via set_state().

Hoe worden benoemde tekenreferenties afgehandeld?

Via resolve_named_char_ref() en find_named_char_ref_match() tegen de volledige tabel met benoemde referenties.


API Reference Samenvatting

Klasse/MethodeBeschrijving
Tokenizer.tokenizeTokeniseer volledige invoer
Tokenizer.tokenize_fragmentTokeniseren met fragmentregels
Tokenizer.set_stateStel de initiële tokenizertoestand in
StartTagTokenStart-tag token met attributen
TokenizerStateStandaarden statusmachine-toestanden
resolve_named_char_refLos een benoemde karakterreferentie op

Zie ook

 Nederlands