Побудова дерева

Побудова дерева

Побудова дерева є другим етапом розбору: вона споживає потік токенізатора і створює DOM згідно зі стандартним алгоритмом — включаючи його знамениті механізми відновлення після помилок. parse_html() обгортає весь конвеєр в один виклик; TreeBuilder відкриває механізм.


Парсинг одним викликом

parse_html() переходить від розмітки до готового дерева; parse_fragment() застосовує алгоритм фрагмента до елементу контексту. Обидва керують однаковими внутрішніми механізмами TreeBuilder через TreeBuilder.run().

Режими вставки та відкриті елементи

InsertionMode моделює машину режимів алгоритму, а StackOfOpenElements і TemplateInsertionModeStack точно відстежують стан будування, як описано у специфікації.

Відновлення після помилок

Неправильно вкладені елементи форматування вирішуються за допомогою run_adoption_agency_algorithm() — алгоритму агентства прийняття стандарту — і ActiveFormattingList відстежує активні елементи форматування. get_foster_parent_location() реалізує foster parenting для неправильно розташованого вмісту таблиці.

Відхилення та сторонній вміст

determine_quirks_mode() класифікує документи за їх doctype. Вміст SVG та MathML проходить через adjust_svg_attributes(), adjust_mathml_attributes() і adjust_foreign_attributes(), а точки інтеграції виявляються is_html_integration_point() та is_mathml_text_integration_point().


Поради та найкращі практики

  • Використовуйте parse_html(), якщо вам не потрібна інспекція конструкційного стану
  • Використовуйте parse_fragment() з правильним елементом контексту — правила розбору фрагментів залежать від нього
  • При налагодженні несподіваних дерев через погану розмітку, поведінка агентства прийняття та foster-parenting зазвичай є поясненням, а не помилкою

Поширені проблеми

ПроблемаПричинаВиправлення
Вміст таблиці переміщено за межі таблиціОпіка над переміщеним вмістомВиправити вкладення розмітки джерела
Теги форматування дублюються у виводіРеконструкція агентства усиновленняОчікувана поведінка стандартів щодо неправильного вкладення
Документ відображається в режимі quirksВідсутній або застарілий doctypeПеревірте determine_quirks_mode() у вводі

FAQ

Чому неправильна розмітка створює коректне дерево?

Алгоритм стандартів визначає відновлення для кожного випадку помилки — TreeBuilder реалізує ці шляхи замість підняття.

Що таке алгоритм агентства прийняття?

Процедура стандарту для виправлення неправильно вкладених елементів форматування; представлена як run_adoption_agency_algorithm().

Чи обробляє будівельник SVG та MathML?

Так — атрибути чужого вмісту коригуються за допомогою спеціальних функцій adjust_*_attributes() з виявленням точок інтеграції стандартів.


API Reference Підсумок

Клас/МетодОпис
parse_htmlРозмітка в дерево за один виклик
parse_fragmentПарсинг фрагментного алгоритму
TreeBuilder.runЗапуск побудови дерева
InsertionModeАлгоритмічний режимний механізм
run_adoption_agency_algorithmВиправлення неправильного вкладення
determine_quirks_modeКласифікація особливостей на основі Doctype

Дивіться також

 Українська