Konstrukce stromu

Konstrukce stromu

Konstrukce stromu je druhá fáze parsování: spotřebovává tok tokenizéru a vytváří DOM podle algoritmu standardu — včetně jeho proslulých chybových zotavovacích chování. parse_html() obaluje celý pipeline v jednom volání; TreeBuilder vystavuje mechanismus.


Parsování jedním voláním

parse_html() přechází z textu značkování na dokončený strom; parse_fragment() aplikuje algoritmus fragmentu na kontextový prvek. Oba řídí stejné interní TreeBuilder prostřednictvím TreeBuilder.run().

Režimy vkládání a otevřené elementy

InsertionMode modeluje stavový stroj algoritmu, přičemž StackOfOpenElements a TemplateInsertionModeStack sledují stav konstrukce přesně tak, jak to popisuje specifikace.

Obnova po chybě

Nesprávně vnořené formátovací elementy jsou řešeny pomocí run_adoption_agency_algorithm() — algoritmu adoption agency podle standardu — a ActiveFormattingList sleduje aktivní formátovací elementy. get_foster_parent_location() implementuje foster parenting pro nesprávně umístěný obsah tabulky.

Quirks a cizí obsah

determine_quirks_mode() klasifikuje dokumenty podle jejich doctype. SVG a MathML obsah prochází přes adjust_svg_attributes(), adjust_mathml_attributes() a adjust_foreign_attributes(), přičemž integrační body jsou detekovány pomocí is_html_integration_point() a is_mathml_text_integration_point().


Tipy a osvědčené postupy

  • Použijte parse_html(), pokud výslovně nepotřebujete introspekci konstrukčního stavu
  • Použijte parse_fragment() s vhodným kontextovým elementem — pravidla parsování fragmentu na něm závisí
  • Při ladění překvapivých stromů vzniklých špatným značkováním jsou chování adoption agency a foster-parenting obvykle vysvětlením, nikoli chybou

Časté problémy

ProblémPříčinaOprava
Obsah tabulky přesunut mimo tabulkuPodpora přebírání nesprávně umístěného obsahuOpravit vnoření zdrojového značkování
Formátovací značky duplikovány ve výstupuRekonstrukce adopční agenturyOčekávané chování standardů při nesprávném vnořování
Dokument se vykresluje v režimu quirksChybějící nebo zastaralý doctypeZkontrolujte determine_quirks_mode() na vstupu

FAQ

Proč chybně vytvořený značkovací kód vytváří platný strom?

Standardní algoritmus definuje zotavení pro každý chybový případ — TreeBuilder implementuje tyto cesty místo vyvolání výjimky.

Co je algoritmus adopční agentury?

Postup standardu pro opravu nesprávně vnořených formátovacích elementů; zveřejněno jako run_adoption_agency_algorithm().

Umí builder zpracovávat SVG a MathML?

Ano — atributy cizího obsahu se upravují pomocí dedikovaných funkcí adjust_*_attributes() s detekcí integračního bodu standardů.


API Reference Shrnutí

Třída/MetodaPopis:
parse_htmlZnačkování na strom v jednom volání
parse_fragmentParsování fragmentového algoritmu
TreeBuilder.runKonstrukce běhového stromu
InsertionModeStroj režimu algoritmu
run_adoption_agency_algorithmOprava nesprávného vnoření
determine_quirks_modeKlasifikace quirks podle doctype

Viz také:

 Čeština