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
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Tabelinhoud buiten de tabel verplaatst | Foster-ouderlijk beheer van verkeerd geplaatste inhoud | Herstel de nesting van de bronmarkup |
| Opmaak-tags gedupliceerd in uitvoer | Reconstructie van adoptiebureau | Verwacht gedrag volgens de standaarden bij misnesting |
| Document wordt gerenderd in quirks-modus | Ontbrekende of verouderde doctype | Controleer 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/Methode | Beschrijving |
|---|---|
parse_html | Markup naar boom in één oproep |
parse_fragment | Fragmentalgoritme parsing |
TreeBuilder.run | Boomconstructie uitvoeren |
InsertionMode | Algoritme-modusmachine |
run_adoption_agency_algorithm | Misnesting-reparatie |
determine_quirks_mode | Doctype-gebaseerde quirks-classificatie |