Baumkonstruktion

Baumkonstruktion

Baumkonstruktion ist die zweite Parsing-Phase: Sie verbraucht den Stream des Tokenizers und baut das DOM gemäß dem Standard-Algorithmus — einschließlich seiner berühmten Fehlererholungs-Verhaltensweisen. parse_html() umschließt die gesamte Pipeline in einem Aufruf; TreeBuilder stellt die Maschinerie bereit.


Ein-Aufruf-Parsing

parse_html() geht vom Markup-Text zu einem fertigen Baum; parse_fragment() wendet den Fragment-Algorithmus auf ein Kontext-Element an. Beide steuern dieselben TreeBuilder-Interna über TreeBuilder.run().

Einfügemodi und offene Elemente

InsertionMode modelliert die Modemaschine des Algorithmus, wobei StackOfOpenElements und TemplateInsertionModeStack den Konstruktionszustand exakt nach der Spezifikation verfolgen.

Fehlererholung

Falsch verschachtelte Formatierungselemente werden durch run_adoption_agency_algorithm() — den Adoption-Agency-Algorithmus des Standards — aufgelöst, und ActiveFormattingList verfolgt aktive Formatierungselemente. get_foster_parent_location() implementiert Foster-Parenting für fehlplatzierten Tabelleninhalt.

Quirks und fremde Inhalte

determine_quirks_mode() klassifiziert Dokumente anhand ihres Doctypes. SVG- und MathML-Inhalte werden über adjust_svg_attributes(), adjust_mathml_attributes() und adjust_foreign_attributes() geleitet, wobei Integrationspunkte von is_html_integration_point() und is_mathml_text_integration_point() erkannt werden.


Tipps und bewährte Verfahren

  • Greife nach parse_html(), es sei denn, du brauchst speziell eine Bauzustands-Introspektion.
  • Verwende parse_fragment() mit dem richtigen Kontext-Element — Fragment-Parsing-Regeln hängen davon ab.
  • Beim Debuggen überraschender Baumstrukturen durch fehlerhaftes Markup sind das Adoption-Agency- und Foster-Parenting-Verhalten meist die Erklärung, nicht ein Bug.

Häufige Probleme

ProblemUrsacheBehebung
Tabelleninhalt außerhalb der Tabelle verschobenPflege von fehlplatziertem Inhalt fördernQuellmarkup-Verschachtelung beheben
Formatierungstags im Output dupliziertRekonstruktion der AdoptionsagenturErwartetes Standardverhalten bei Fehlverschachtelung
Dokument wird im Quirks-Modus gerendertFehlende oder veraltete DoctypePrüfen Sie determine_quirks_mode() in der Eingabe

FAQ

Warum erzeugt fehlerhaftes Markup einen gültigen Baum?

Der Standard-Algorithmus definiert die Wiederherstellung für jeden Fehlfall — TreeBuilder implementiert diese Pfade anstatt sie auszulösen.

Was ist der Adoption-Agency-Algorithmus?

Das Verfahren des Standards zur Reparatur von falsch geschachtelten Formatierungselementen; bereitgestellt als run_adoption_agency_algorithm().

Unterstützt der Builder SVG und MathML?

Ja — Attribute fremden Inhalts werden über die dedizierten adjust_*_attributes()-Funktionen mit Erkennung von Standards-Integrationspunkten angepasst.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
parse_htmlMarkup zu Baum in einem Aufruf
parse_fragmentFragment-Algorithmus-Parsing
TreeBuilder.runBaumkonstruktion ausführen
InsertionModeAlgorithmus-Modus-Maschine
run_adoption_agency_algorithmFehlverschachtelungsreparatur
determine_quirks_modeDoctype-basierte Quirks-Klassifizierung

Siehe auch

 Deutsch