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

SorunNedenDü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şlenirEksik veya eski doctypeGiriş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öntemAçıklama
parse_htmlİşaretleme tek bir çağrıda ağaca dönüştürülür
parse_fragmentFragment algoritması ayrıştırma
TreeBuilder.runAğaç oluşturmayı yürüt
InsertionModeAlgoritma mod makinesi
run_adoption_agency_algorithmYanlış iç içe düzeltme
determine_quirks_modeDoctype tabanlı quirks sınıflandırması

Ayrıca Bakınız

 Türkçe