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

ProblemOrsakÅtgärd
Tabellinnehåll flyttat utanför tabellenStödja föräldrabeteende för felplacerat innehållÅtgärda källmarkeringens nästning
Formaterings-taggar duplicerade i utdataRekonstruktion av adoptionsbyrånFörväntat standardbeteende vid felaktig nästning
Dokumentet renderas i quirks-lägeSaknad eller föråldrad doctypeKontrollera 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/MetodBeskrivning
parse_htmlMarkup till träd i ett anrop
parse_fragmentFragmentalgoritmparsning
TreeBuilder.runKör trädkonstruktion
InsertionModeAlgoritmlägesmaskin
run_adoption_agency_algorithmKorrigering av felaktig nästning
determine_quirks_modeDoctype-baserad quirksklassificering

Se även

 Svenska