Construction d'arbre

Construction d’arbre

La construction d’arbre est la deuxième étape d’analyse: elle consomme le flux du tokenizer et construit le DOM selon l’algorithme standard — y compris ses célèbres comportements de récupération d’erreurs. parse_html() encapsule l’ensemble du pipeline en un seul appel; TreeBuilder expose le mécanisme.


Analyse en un appel

parse_html() passe du texte balisé à un arbre fini; parse_fragment() applique l’algorithme de fragment à un élément de contexte. Les deux pilotent les mêmes internes de TreeBuilder via TreeBuilder.run().

Modes d’insertion et éléments ouverts

InsertionMode modèle la machine d’états de l’algorithme, avec StackOfOpenElements et TemplateInsertionModeStack qui suivent l’état de construction exactement comme le décrit la spécification.

Récupération d’erreurs

Les éléments de formatage mal imbriqués sont résolus via run_adoption_agency_algorithm() — l’algorithme de l’agence d’adoption du standard — et ActiveFormattingList suit les éléments de formatage actifs. get_foster_parent_location() implémente le foster-parenting pour le contenu de tableau mal placé.

Quirks et contenu étranger

determine_quirks_mode() classe les documents selon leur doctype. Le contenu SVG et MathML transite par adjust_svg_attributes(), adjust_mathml_attributes() et adjust_foreign_attributes(), les points d’intégration étant détectés par is_html_integration_point() et is_mathml_text_integration_point().


Conseils et bonnes pratiques

  • Utilisez parse_html() sauf si vous avez spécifiquement besoin d’une introspection de l’état de construction
  • Utilisez parse_fragment() avec l’élément de contexte approprié — les règles d’analyse des fragments en dépendent
  • Lors du débogage d’arbres surprenants issus d’un balisage défectueux, le mécanisme d’adoption et les comportements de foster-parenting sont généralement l’explication, et non un bogue

Problèmes courants

ProblèmeCauseCorrection
Contenu du tableau déplacé en dehors du tableauParrainage de contenu mal placéCorriger l’imbrication du balisage source
Balises de formatage dupliquées dans la sortieReconstruction du service d’adoptionComportement attendu des normes pour les mauvaises imbrications
Le document s’affiche en mode quirksDoctype manquant ou héritéVérifier determine_quirks_mode() sur l’entrée

FAQ

Pourquoi un balisage malformé produit-il un arbre valide?

L’algorithme des normes définit la récupération pour chaque cas d’erreur — TreeBuilder implémente ces chemins plutôt que de lever une exception.

Quel est l’algorithme d’adoption d’agence?

La procédure du standard pour réparer les éléments de formatage mal imbriqués; exposée sous run_adoption_agency_algorithm().

Le constructeur gère-t-il SVG et MathML?

Oui — les attributs de contenu étranger s’ajustent via les fonctions dédiées adjust_*_attributes() avec détection du point d’intégration des normes.


Résumé API Reference

Classe/MéthodeDescription
parse_htmlBalisage en arbre en un seul appel
parse_fragmentFragment d’analyse d’algorithme
TreeBuilder.runExécuter la construction d’arbre
InsertionModeMachine en mode algorithme
run_adoption_agency_algorithmRéparation des imbriquements incorrects
determine_quirks_modeClassification des quirks basée sur le Doctype

Voir aussi

 Français