Ağaç Oluşturma
Ağaç Oluşturma
Ağaç oluşturma, ikinci ayrıştırma aşamasıdır: tokenizer akışını tüketir ve standart algoritmaya göre DOM’u oluşturur — ünlü hata-kurtarma davranışları da dahil. parse_html() tüm işlem hattını tek bir çağrıda kapsar; TreeBuilder ise mekanizmayı ortaya koyar.
Tek Çağrılı Ayrıştırma
parse_html() işaretleme metninden bitmiş bir ağaca geçer; parse_fragment() bağlam öğesine karşı fragment algoritmasını uygular. İkisi de aynı TreeBuilder iç işleyişini TreeBuilder.run() aracılığıyla yönlendirir.
Ekleme Modları ve Açık Öğeler
InsertionMode, algoritmanın mod makinesini modeller; StackOfOpenElements ve TemplateInsertionModeStack ise inşa durumunu, spesifikasyonun tanımladığı şekilde tam olarak izler.
Hata Kurtarma
Yanlış iç içe yerleştirilmiş biçimlendirme öğeleri run_adoption_agency_algorithm() aracılığıyla çözülür — standardın adoption agency algoritması — ve ActiveFormattingList etkin biçimlendirme öğelerini izler. get_foster_parent_location() yanlış yerleştirilmiş tablo içeriği için foster parenting’i uygular.
Quirks ve Yabancı İçerik
determine_quirks_mode(), belgeleri doctype’larından sınıflandırır. SVG ve MathML içeriği adjust_svg_attributes(), adjust_mathml_attributes() ve adjust_foreign_attributes() üzerinden yönlendirilir, entegrasyon noktaları is_html_integration_point() ve is_mathml_text_integration_point() tarafından tespit edilir.
İpuçları ve En İyi Uygulamalar
- Construction-state introspection’ a özellikle ihtiyacınız yoksa
parse_html()‘a yönelin. - Doğru bağlam öğesiyle
parse_fragment()kullanın — fragment parsing kuralları ona bağlıdır. - Kötü işaretlemeden gelen şaşırtıcı ağaçları hata ayıklarken, adoption agency ve foster-parenting davranışları genellikle açıklamadır, bir hata değil.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
| Tablo içeriği tablonun dışına taşındı | Yanlış yerleştirilmiş içeriğin koruyucu bakımı | Kaynak işaretleme iç içe yapısını düzelt |
| Biçimlendirme etiketleri çıktıda çoğaltıldı | Evlat edinme kurumu yeniden yapılandırması | Yanlış iç içe için beklenen standart davranış |
| Belge quirks modunda işlenir | Eksik veya eski doctype | Girişte determine_quirks_mode() kontrol edin |
FAQ
Neden hatalı işaretleme geçerli bir ağaç üretir?
Standart algoritması, her hata durumu için kurtarma tanımlar — TreeBuilder bu yolları yükseltmek yerine uygular.
Adopsiyon ajansı algoritması nedir?
Standartın iç içe yerleştirilmiş biçim öğelerini düzeltme prosedürü; run_adoption_agency_algorithm() olarak sunulur.
Oluşturucu SVG ve MathML destekliyor mu?
Evet — yabancı içerik öznitelikleri, standartların entegrasyon noktası tespitiyle birlikte özel adjust_*_attributes() işlevleri aracılığıyla ayarlanır.
API Reference Özeti
| Sınıf/Yöntem | Açıklama |
|---|---|
parse_html | İşaretleme tek bir çağrıda ağaca dönüştürülür |
parse_fragment | Fragment algoritması ayrıştırma |
TreeBuilder.run | Ağaç oluşturmayı yürüt |
InsertionMode | Algoritma mod makinesi |
run_adoption_agency_algorithm | Yanlış iç içe düzeltme |
determine_quirks_mode | Doctype tabanlı quirks sınıflandırması |