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

ProblemaCausaCorrección
Contenido de la tabla movido fuera de la tablaFomentar la adopción del contenido desubicadoCorregir el anidamiento del marcado fuente
Etiquetas de formato duplicadas en la salidaReconstrucción de la agencia de adopciónComportamiento esperado de los estándares para anidamiento incorrecto
El documento se renderiza en modo quirksDoctype faltante o heredadoVerifique 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étodoDescripción
parse_htmlMarcado a árbol en una sola llamada
parse_fragmentAnálisis del algoritmo de fragmentos
TreeBuilder.runConstrucción del árbol de ejecución
InsertionModeMáquina de modo algoritmo
run_adoption_agency_algorithmReparación de anidamiento incorrecto
determine_quirks_modeClasificación de quirks basada en Doctype

Ver también

 Español