Construcción del árbol
Construcción del árbol
La construcción del árbol es la segunda etapa del análisis: consume el flujo del tokenizador y construye el DOM según el algoritmo estándar — incluyendo sus famosos comportamientos de recuperación de errores. parse_html() envuelve todo el pipeline en una sola llamada; TreeBuilder expone la maquinaria.
Análisis de una sola llamada
parse_html() pasa de texto de marcado a un árbol terminado; parse_fragment() aplica el algoritmo de fragmento sobre un elemento de contexto. Ambos impulsan los mismos internos de TreeBuilder a través de TreeBuilder.run().
Modos de inserción y elementos abiertos
InsertionMode modela la máquina de modos del algoritmo, con StackOfOpenElements y TemplateInsertionModeStack rastreando el estado de construcción exactamente como describe la especificación.
Recuperación de errores
Los elementos de formato mal anidados se resuelven mediante run_adoption_agency_algorithm() — el algoritmo de agencia de adopción del estándar — y ActiveFormattingList rastrea los elementos de formato activos. get_foster_parent_location() implementa la crianza de acogida para contenido de tabla mal ubicado.
Quirks y contenido extranjero
determine_quirks_mode() clasifica los documentos según su doctype. El contenido SVG y MathML pasa por adjust_svg_attributes(), adjust_mathml_attributes() y adjust_foreign_attributes(), con puntos de integración detectados por is_html_integration_point() y is_mathml_text_integration_point().
Consejos y mejores prácticas
- Utilice
parse_html()a menos que necesite específicamente introspección del estado de construcción - Use
parse_fragment()con el elemento de contexto adecuado — las reglas de análisis de fragmentos dependen de él - Al depurar árboles inesperados provenientes de un marcado incorrecto, los comportamientos de agencia de adopción y crianza de acogida suelen ser la explicación, no un error
Problemas comunes
| Problema | Causa | Corrección |
|---|---|---|
| Contenido de la tabla movido fuera de la tabla | Fomentar la adopción del contenido desubicado | Corregir el anidamiento del marcado fuente |
| Etiquetas de formato duplicadas en la salida | Reconstrucción de la agencia de adopción | Comportamiento esperado de los estándares para anidamiento incorrecto |
| El documento se renderiza en modo quirks | Doctype faltante o heredado | Verifique determine_quirks_mode() en la entrada |
FAQ
¿Por qué el marcado malformado produce un árbol válido?
El algoritmo de los estándares define la recuperación para cada caso de error — TreeBuilder implementa esas rutas en lugar de lanzar.
¿Qué es el algoritmo de la agencia de adopción?
El procedimiento del estándar para reparar elementos de formato mal anidados; expuesto como run_adoption_agency_algorithm().
¿El constructor maneja SVG y MathML?
Sí — los atributos de contenido externo se ajustan mediante las funciones dedicadas adjust_*_attributes() con detección de puntos de integración de los estándares.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
parse_html | Marcado a árbol en una sola llamada |
parse_fragment | Análisis del algoritmo de fragmentos |
TreeBuilder.run | Construcción del árbol de ejecución |
InsertionMode | Máquina de modo algoritmo |
run_adoption_agency_algorithm | Reparación de anidamiento incorrecto |
determine_quirks_mode | Clasificación de quirks basada en Doctype |