Boomconstructie

Boomconstructie

Boomconstructie is de tweede parse-fase: het verbruikt de stroom van de tokenizer en bouwt de DOM op volgens het algoritme van de standaard — inclusief de beroemde foutherstelgedragingen. parse_html() omsluit de volledige pijplijn in één oproep; TreeBuilder maakt de mechaniek bloot.


Eenmalig Parsen

parse_html() gaat van opmaaktekst naar een voltooide boom; parse_fragment() past het fragmentalgoritme toe op een context-element. Beide sturen dezelfde TreeBuilder interne werking aan via TreeBuilder.run().

Invoegmodi en Open Elementen

InsertionMode modelleert de modusmachine van het algoritme, met StackOfOpenElements en TemplateInsertionModeStack die de constructietoestand precies volgen zoals de specificatie beschrijft.

Foutherstel

Mis-nested opmaak-elementen worden opgelost via run_adoption_agency_algorithm() — het adoptiebureau-algoritme van de standaard — en ActiveFormattingList houdt de actieve opmaak-elementen bij. get_foster_parent_location() implementeert foster-parenting voor verkeerd geplaatste tabelinhoud.

Quirks en vreemde inhoud

determine_quirks_mode() classificeert documenten op basis van hun doctype. SVG en MathML inhoud worden geleid via adjust_svg_attributes(), adjust_mathml_attributes() en adjust_foreign_attributes(), met integratiepunten gedetecteerd door is_html_integration_point() en is_mathml_text_integration_point().


Tips en best practices

  • Gebruik parse_html() tenzij je specifiek constructietoestand-introspectie nodig hebt
  • Gebruik parse_fragment() met het juiste context-element — fragment-parserregels zijn ervan afhankelijk
  • Bij het debuggen van verrassende boomstructuren veroorzaakt door slechte markup, zijn het adoptiebureau- en foster-parenting-gedrag meestal de verklaring, geen bug

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Tabelinhoud buiten de tabel verplaatstFoster-ouderlijk beheer van verkeerd geplaatste inhoudHerstel de nesting van de bronmarkup
Opmaak-tags gedupliceerd in uitvoerReconstructie van adoptiebureauVerwacht gedrag volgens de standaarden bij misnesting
Document wordt gerenderd in quirks-modusOntbrekende of verouderde doctypeControleer determine_quirks_mode() op de invoer

FAQ

Waarom produceert misvormde markup een geldige boom?

Het standaardalgoritme definieert herstel voor elk foutscenario — TreeBuilder implementeert die paden in plaats van een fout te veroorzaken.

Wat is het adoptiebureau-algoritme?

De standaardprocedure voor het repareren van verkeerd geneste opmaakelementen; beschikbaar gesteld als run_adoption_agency_algorithm().

Ondersteunt de builder SVG en MathML?

Ja — attributen van vreemde inhoud passen zich aan via de speciale adjust_*_attributes()-functies met detectie van integratie-punten volgens de standaarden.


API Reference Samenvatting

Klasse/MethodeBeschrijving
parse_htmlMarkup naar boom in één oproep
parse_fragmentFragmentalgoritme parsing
TreeBuilder.runBoomconstructie uitvoeren
InsertionModeAlgoritme-modusmachine
run_adoption_agency_algorithmMisnesting-reparatie
determine_quirks_modeDoctype-gebaseerde quirks-classificatie

Zie ook

 Nederlands