Trädkonstruktion
Trädkonstruktion
Trädkonstruktion är det andra parsningsteget: den konsumerar tokeniserarens ström och bygger DOM enligt standardalgoritmen — inklusive dess berömda felåterhämtningsbeteenden. parse_html() omsluter hela pipeline i ett anrop; TreeBuilder exponeras maskineriet.
Enkel-anrop-parsing
parse_html() går från markup-text till ett färdigt träd; parse_fragment() tillämpar fragmentalgoritmen mot ett kontextelement. Båda driver samma TreeBuilder internals via TreeBuilder.run().
Infogningslägen och öppna element
InsertionMode modellerar algoritmens lägesmaskin, med StackOfOpenElements och TemplateInsertionModeStack som spårar konstruktionsstatus exakt som specifikationen beskriver.
Felåterhämtning
Felplacerade formateringselement löses via run_adoption_agency_algorithm() — standardens adoptionsbyrå-algoritm — och ActiveFormattingList spårar aktiva formateringselement. get_foster_parent_location() implementerar foster-föräldraskap för felplacerat tabellinnehåll.
Quirks och främmande innehåll
determine_quirks_mode() klassificerar dokument utifrån deras doctype. SVG och MathML-innehåll dirigeras genom adjust_svg_attributes(), adjust_mathml_attributes() och adjust_foreign_attributes(), med integrationspunkter som upptäcks av is_html_integration_point() och is_mathml_text_integration_point().
Tips och bästa praxis
- Välj
parse_html()såvida du inte specifikt behöver introspektion av konstruktionstillstånd - Använd
parse_fragment()med rätt kontextelement — fragmentparsningens regler beror på det - När du felsöker oväntade träd från dålig markup är adoptionsbyrån och foster-föräldraskapsbeteendena oftast förklaringen, inte ett fel
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
| Tabellinnehåll flyttat utanför tabellen | Stödja föräldrabeteende för felplacerat innehåll | Åtgärda källmarkeringens nästning |
| Formaterings-taggar duplicerade i utdata | Rekonstruktion av adoptionsbyrån | Förväntat standardbeteende vid felaktig nästning |
| Dokumentet renderas i quirks-läge | Saknad eller föråldrad doctype | Kontrollera determine_quirks_mode() på indata |
FAQ
Varför producerar felaktig markup ett giltigt träd?
Standardalgoritmen definierar återhämtning för varje felfall — TreeBuilder implementerar dessa vägar snarare än att kasta.
Vad är adoption agency-algoritmen?
Standardens procedur för att reparera felplacerade formateringselement; exponerad som run_adoption_agency_algorithm().
Stöder byggaren SVG och MathML?
Ja — attribut för främmande innehåll justeras via de dedikerade adjust_*_attributes()-funktionerna med standardernas integrationspunktdetektering.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
parse_html | Markup till träd i ett anrop |
parse_fragment | Fragmentalgoritmparsning |
TreeBuilder.run | Kör trädkonstruktion |
InsertionMode | Algoritmlägesmaskin |
run_adoption_agency_algorithm | Korrigering av felaktig nästning |
determine_quirks_mode | Doctype-baserad quirksklassificering |