Cómo usar el HTML Tokenizer en Python
El tokenizador en Aspose.HTML FOSS para Python convierte el marcado en una secuencia de tokens definidos por estándares — útil para linters, pases previos de saneamiento y cualquier herramienta que inspeccione el marcado por debajo del nivel del árbol. Esta guía cubre los puntos de entrada de tokenización, el vocabulario de tokens y los estados, usando pip para la instalación.
Guía paso a paso
Paso 1: Instalar el paquete
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Paso 2: Importar las clases requeridas
from aspose_html.tokenizer import Tokenizer, TokenizerStatePaso 3: Tokenizar el marcado
Tokenizer.tokenize() procesa la entrada completa; Tokenizer.tokenize_fragment() aplica reglas de fragmento. El flujo contiene tokens tipados: StartTagToken y EndTagToken (con atributos), CharacterToken para texto, CommentToken, DoctypeToken, y un EofToken final.
Paso 4: Controlar el estado inicial
TokenizerState refleja la máquina de estados de la especificación. Para entrada sensible al contexto — contenido que aparecería dentro de <script> o <style> — establezca el estado inicial correspondiente con Tokenizer.set_state() antes de tokenizar.
Paso 5: Resolver referencias de caracteres
Las referencias de caracteres nombradas y numéricas se resuelven mediante resolve_named_char_ref(), resolve_numeric_char_ref() y find_named_char_ref_match() — respaldadas por la tabla completa de referencias nombradas.
Problemas comunes y soluciones
El contenido de script o estilo se tokeniza como marcado. El estado inicial era incorrecto para el contexto; establézcalo con set_state().
Las entidades aparecen sin resolver en la salida. Los consumidores de texto crudo deben ejecutar los resolvedores de referencias de carácter; la resolución es explícita a este nivel.
La salida del fragmento difiere de un análisis completo. Las reglas de tokenización de fragmentos difieren intencionalmente — use tokenize() para documentos completos.
Preguntas Frecuentes
¿Puedo consumir tokens sin construir un árbol?
Sí — el flujo de tokens es una salida pública, independiente de la construcción del árbol.
¿Qué tipos de tokens existen?
StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken y EofToken.
¿Los estados del tokenizador son los estándar?
Sí — TokenizerState modela la máquina de estados de la especificación.