HTML Tokenizáló

HTML Tokenizáló

A tokenizáló a HTML elemzés első szakasza: átalakítja a markup szöveget egy, a szabványok által definiált tokenek áramlátá. Ez publikus API, így azok az eszközök, amelyek a tokenekre fókuszálnak a fák helyett — linterek, szanitizer előfeldolgozások, szintaxiskiemelők — közvetlenül felhasználhatják az áramlatot.


Markup tokenizálása

Tokenizer.tokenize() teljes bemenetet dolgoz fel; Tokenizer.tokenize_fragment() töredék tokenizálási szabályokat alkalmaz. Mindkettő a szabványos token szókincset bocsátja ki.

Token osztályok

Minden token egy típusos objektum: StartTagToken és EndTagToken címkékhez (attribútumokkal), CharacterToken szöveghez, CommentToken, DoctypeToken és EofToken a bemenet végét jelölik.

Tokenizáló állapotok

TokenizerState modellezi a szabvány állapotgépét — ugyanazokat az állapotokat, amelyeket a specifikáció megnevez — és Tokenizer.set_state() lehetővé teszi, hogy a fragment és kontextusérzékeny hívók a megfelelő állapotból induljanak.

Karakterhivatkozások

A névvel és számmal ellátott karakterhivatkozások a resolve_named_char_ref(), resolve_numeric_char_ref() és find_named_char_ref_match() segítségével kerülnek feloldásra — a teljes névreferencia-táblán keresztül, nem egy rövidített részhalmazon.


Tippek és bevált gyakorlatok

  • Használd a tokenize_fragment()-t a megfelelő kezdeti állapottal, amikor olyan tartalmat tokenizálsz, amely egy adott elemben jelenik meg.
  • Kezeld a EofToken-t a végső befejezési jelzésként, ahelyett, hogy kivétellel kimerítenéd az iterátort.
  • A szanitizálók számára vizsgáld meg a StartTagToken attribútumokat token szinten, mielőtt bármilyen fa felépülne.

Gyakori problémák

ProblémaOkJavítás
A script/stílus tartalom tokenizálódik jelölőkéntHelytelen kezdeti állapot a kontextushozÁllítsa be a megfelelő TokenizerState a set_state() segítségével
Az entitások feloldatlanul jelennek megNyers szöveg fogyasztása hivatkozás feloldás nélkülHasználja a char-ref feloldó függvényeket
A töredék kimenete eltér a teljes feldolgozástólA fragmentum szabályok szándékosan eltérnekHasználja a tokenize() értéket a teljes dokumentumokhoz

FAQ

Használhatom a tokenizert anélkül, hogy fát építenék?

Igen — a token stream egy nyilvános, önálló kimenet.

A tokenizáló állapotok a szabványosak?

TokenizerState tükrözi a specifikáció állapotgépét, és beállítható a set_state() segítségével.

Hogyan kezelik a névvel ellátott karakterhivatkozásokat?

A resolve_named_char_ref() és find_named_char_ref_match() segítségével a teljes név szerint definiált hivatkozástáblán.


API Reference Összefoglaló

Osztály/MódszerLeírás
Tokenizer.tokenizeTokenizálja a teljes bemenetet
Tokenizer.tokenize_fragmentTokenizálja fragmentum szabályokkal
Tokenizer.set_stateÁllítsa be a kezdeti tokenizáló állapotot
StartTagTokenKezdőcímke token attribútumokkal
TokenizerStateA szabványok állapotgép állapotai
resolve_named_char_refNeves karakterhivatkozás feloldása

Lásd még:

 Magyar