HTML Tokeniserare

HTML Tokeniserare

Tokenizer är det första steget i HTML-parsing: den konverterar markup-text till en ström av standarddefinierade token. Den är offentlig API, så verktyg som bryr sig om token snarare än träd — linters, sanitiserings-förpassar, syntax-markörer — kan konsumera strömmen direkt.


Tokenisering av markup

Tokenizer.tokenize() bearbetar fullständig inmatning; Tokenizer.tokenize_fragment() tillämpar fragment-tokeniseringsregler. Båda avger det standardiserade token-vokabuläret.

Tokenklasser

Varje token är ett typat objekt: StartTagToken och EndTagToken för taggar (med attribut), CharacterToken för text, CommentToken, DoctypeToken och EofToken som markerar slutet på inmatningen.

Tokenizer-tillstånd

TokenizerState modellerar standardens tillståndsmaskin — samma tillstånd som specifikationen namnger — och Tokenizer.set_state() låter fragment- och kontextkänsliga anroparer starta i rätt tillstånd.

Teckenreferenser

Namngivna och numeriska teckenreferenser löses upp via resolve_named_char_ref(), resolve_numeric_char_ref() och find_named_char_ref_match() — den fullständiga tabellen för namngivna referenser, inte en genvägsdelmängd.


Tips och bästa praxis

  • Använd tokenize_fragment() med rätt initiala tillstånd när du tokeniserar innehåll som skulle visas inom ett specifikt element
  • Behandla EofToken som den definitiva avslutsindikatorn snarare än att tömma iteratorn genom undantag
  • För saneringsverktyg, inspektera StartTagToken-attribut på token-nivå innan något träd byggs

Vanliga problem

ProblemOrsakÅtgärd
Script/style-innehåll tokeniseras som markupFel initialt tillstånd för kontextStäll in den lämpliga TokenizerState via set_state()
Entiteter verkar olöstaKonsumera råtext utan referensupplösningAnvänd char-ref-resolver-funktionerna
Fragmentutdata skiljer sig från fullständig parsningFragmentregler skiljer sig avsiktligtAnvänd tokenize() för fullständiga dokument

FAQ

Kan jag använda tokeniseraren utan att bygga ett träd?

Ja — tokenströmmen är en offentlig, fristående utdata.

Är tokeniserarens tillstånd standard?

TokenizerState speglar specifikationens tillståndsmaskin och kan ställas in via set_state().

Hur hanteras namngivna teckenreferenser?

Genom resolve_named_char_ref() och find_named_char_ref_match() mot hela tabellen för namngivna referenser.


API Reference Sammanfattning

Klass/MetodBeskrivning
Tokenizer.tokenizeTokenisera hela indata
Tokenizer.tokenize_fragmentTokenisera med fragmentregler
Tokenizer.set_stateStäll in tokeniserarens initiala tillstånd
StartTagTokenStart-tag token med attribut
TokenizerStateStandardernas tillståndsmaskins tillstånd
resolve_named_char_refLös upp en namngiven teckenreferens

Se även

 Svenska