HTML Tokenizador

Tokenizador HTML

El tokenizador es la primera etapa del análisis de HTML: convierte el texto de marcado en una secuencia de tokens definidos por los estándares. Es API pública, por lo que las herramientas que se ocupan de tokens en lugar de árboles — linters, pre-pasadas de saneamiento, resaltadores de sintaxis — pueden consumir la secuencia directamente.


Tokenizando marcado

Tokenizer.tokenize() procesa la entrada completa; Tokenizer.tokenize_fragment() aplica reglas de tokenización de fragmentos. Ambos emiten el vocabulario estándar de tokens.

Clases de token

Cada token es un objeto tipado: StartTagToken y EndTagToken para etiquetas (con atributos), CharacterToken para texto, CommentToken, DoctypeToken y EofToken que marcan el fin de la entrada.

Estados del tokenizador

TokenizerState modela la máquina de estados del estándar — los mismos estados que nombra la especificación — y Tokenizer.set_state() permite que fragmentos y llamadores sensibles al contexto comiencen en el estado correcto.

Referencias de caracteres

Las referencias de caracteres con nombre y numéricas se resuelven mediante resolve_named_char_ref(), resolve_numeric_char_ref() y find_named_char_ref_match() — la tabla completa de referencias con nombre, no un subconjunto abreviado.


Consejos y buenas prácticas

  • Utilice tokenize_fragment() con el estado inicial correcto al tokenizar contenido que aparecería dentro de un elemento específico
  • Trate EofToken como la señal final definitiva en lugar de agotar el iterador mediante una excepción
  • Para los sanitizadores, inspeccione los atributos de StartTagToken a nivel de token antes de que se construya cualquier árbol

Problemas comunes

ProblemaCausaSolución
El contenido de script/style se tokeniza como marcadoEstado inicial incorrecto para el contextoEstablezca el TokenizerState apropiado mediante set_state()
Las entidades aparecen sin resolverConsumiendo texto sin procesar sin resolución de referenciasUse las funciones de resolución char-ref
La salida del fragmento difiere del análisis completoLas reglas del fragmento difieren intencionalmenteUtiliza tokenize() para documentos completos

FAQ

¿Puedo usar el tokenizador sin construir un árbol?

Sí — el flujo de tokens es una salida pública e independiente.

¿Los estados del tokenizador son los estándar?

TokenizerState refleja la máquina de estados de la especificación y se puede configurar mediante set_state().

¿Cómo se gestionan las referencias de carácter con nombre?

A través de resolve_named_char_ref() y find_named_char_ref_match() contra la tabla completa de referencias con nombre.


API Reference Resumen

Clase/MétodoDescripción
Tokenizer.tokenizeTokenizar la entrada completa
Tokenizer.tokenize_fragmentTokenizar con reglas de fragmento
Tokenizer.set_stateEstablecer el estado inicial del tokenizador
StartTagTokenToken de etiqueta de inicio con atributos
TokenizerStateEstados de la máquina de estados de los estándares
resolve_named_char_refResolver una referencia de carácter nombrada

Ver también

 Español