HTML Tokenizer

HTML Tokenizer

Tokenizer-ul este prima etapă a parsării HTML: convertește textul markup într-un flux de tokenuri definite de standarde. Este public API, astfel încât instrumentele care se interesează de tokenuri mai degrabă decât de arbori — linters, pre-pasuri de sanitizare, evidențieri de sintaxă — pot consuma fluxul direct.


Tokenizarea markup

Tokenizer.tokenize() procesează intrarea completă; Tokenizer.tokenize_fragment() aplică regulile de tokenizare a fragmentelor. Ambele emit vocabularul standard de tokenuri.

Clase de tokenuri

Fiecare token este un obiect tipizat: StartTagToken și EndTagToken pentru etichete (cu atribute), CharacterToken pentru text, CommentToken, DoctypeToken și EofToken marcând sfârșitul intrării.

Stări ale Tokenizer-ului

TokenizerState modelează mașina de stare a standardelor — aceleași stări pe care le numește specificația — și Tokenizer.set_state() permite apelanților fragment și sensibili la context să înceapă în starea corectă.

Referințe de caractere

Referințele de caractere denumite și numerice se rezolvă prin resolve_named_char_ref(), resolve_numeric_char_ref() și find_named_char_ref_match() — tabelul complet de referințe denumite, nu un subset de scurtătură.


Sfaturi și bune practici

  • Utilizați tokenize_fragment() cu starea inițială corectă atunci când tokenizați conținut care ar apărea în interiorul unui element specific
  • Tratați EofToken ca semnalul final definitiv, în loc să epuizați iteratorul prin excepție
  • Pentru sanitizatoare, inspectați atributele StartTagToken la nivel de token înainte de a se construi orice arbore

Probleme comune

ProblemCauzăRemediere
Conținutul script/style este tokenizat ca markupStare inițială incorectă pentru contextSetați TokenizerState corespunzător prin set_state()
Entitățile apar nerezolvateConsumarea textului brut fără rezoluția referințelorUtilizați funcțiile de rezolvare a referințelor de caractere
Ieșirea fragmentului diferă de analiza completăRegulile fragmentului diferă intenționatFolosiți tokenize() pentru documente complete

FAQ

Pot folosi tokenizerul fără a construi un arbore?

Da — fluxul de tokenuri este o ieșire publică, independentă.

Stările tokenizerului sunt cele standard?

TokenizerState reflectă mașina de stări a specificației și poate fi setat prin set_state().

Cum sunt gestionate referințele de caractere numite?

Prin resolve_named_char_ref() și find_named_char_ref_match() în raport cu tabelul complet de referințe numite.


API Reference Rezumat

Clasă/MetodăDescriere:
Tokenizer.tokenizeTokenizați intrarea completă
Tokenizer.tokenize_fragmentTokenizați cu regulile fragmentului
Tokenizer.set_stateSetează starea inițială a tokenizer-ului
StartTagTokenToken de etichetă de început cu atribute
TokenizerStateStările mașinii de stări ale standardelor
resolve_named_char_refRezolvă o referință de caracter numită

Vezi și:

 Română