Konstruksi Pohon

Konstruksi Pohon

Konstruksi pohon adalah tahap parsing kedua: ia mengonsumsi aliran tokenizer dan membangun DOM sesuai algoritma standar — termasuk perilaku pemulihan kesalahan yang terkenal. parse_html() membungkus seluruh pipeline dalam satu panggilan; TreeBuilder mengekspos mekanisme.


Parsing Satu Panggilan

parse_html() beralih dari teks markup ke pohon selesai; parse_fragment() menerapkan algoritma fragmen terhadap elemen konteks. Keduanya menggerakkan internal TreeBuilder yang sama melalui TreeBuilder.run().

Mode Penyisipan dan Elemen Terbuka

InsertionMode memodelkan mesin mode algoritma, dengan StackOfOpenElements dan TemplateInsertionModeStack melacak status konstruksi persis seperti yang dijelaskan dalam spesifikasi.

Pemulihan Kesalahan

Elemen format yang tidak bersarang dengan benar diselesaikan melalui run_adoption_agency_algorithm() — algoritma agensi adopsi standar — dan ActiveFormattingList melacak elemen format yang aktif. get_foster_parent_location() menerapkan foster parenting untuk konten tabel yang salah tempat.

Keanehan dan Konten Asing

determine_quirks_mode() mengklasifikasikan dokumen berdasarkan doctype mereka. Konten SVG dan MathML melewati adjust_svg_attributes(), adjust_mathml_attributes(), dan adjust_foreign_attributes(), dengan titik integrasi yang terdeteksi oleh is_html_integration_point() dan is_mathml_text_integration_point().


Tips dan Praktik Terbaik

  • Gunakan parse_html() kecuali Anda secara khusus membutuhkan introspeksi keadaan konstruksi
  • Gunakan parse_fragment() dengan elemen konteks yang tepat — aturan parsing fragmen bergantung padanya
  • Saat men-debug pohon yang mengejutkan akibat markup yang buruk, perilaku agensi adopsi dan foster-parenting biasanya menjadi penjelasannya, bukan bug

Masalah Umum

MasalahPenyebabPerbaikan
Konten tabel dipindahkan di luar tabelMembina penataan konten yang salah tempatPerbaiki penataan bersarang markup sumber
Tag pemformatan diduplikasi dalam outputRekonstruksi agen adopsiPerilaku standar yang diharapkan untuk misnesting
Dokumen dirender dalam mode quirksDoctype yang hilang atau usangPeriksa determine_quirks_mode() pada input

FAQ

Mengapa markup yang rusak menghasilkan pohon yang valid?

Algoritma standar mendefinisikan pemulihan untuk setiap kasus kesalahan — TreeBuilder mengimplementasikan jalur tersebut alih-alih memunculkan.

Apa itu algoritma adoption agency?

Prosedur standar untuk memperbaiki elemen format yang tidak bersarang dengan benar; diekspos sebagai run_adoption_agency_algorithm().

Apakah builder menangani SVG dan MathML?

Ya — atribut konten asing disesuaikan melalui fungsi adjust_*_attributes() khusus dengan deteksi titik integrasi standar.


API Reference Ringkasan

Kelas/MetodeDeskripsi
parse_htmlMarkup ke pohon dalam satu panggilan
parse_fragmentPenguraian algoritma fragmen
TreeBuilder.runJalankan konstruksi pohon
InsertionModeMesin mode algoritma
run_adoption_agency_algorithmPerbaikan misnesting
determine_quirks_modeKlasifikasi keanehan berbasis Doctype

Lihat Juga

 Bahasa Indonesia