ट्री निर्माण
ट्री निर्माण
ट्री निर्माण पार्सिंग का दूसरा चरण है: यह टोकनाइज़र की स्ट्रीम को उपभोग करता है और मानक एल्गोरिद्म के अनुसार DOM बनाता है — जिसमें इसके प्रसिद्ध एरर-रिकवरी व्यवहार शामिल हैं। parse_html() संपूर्ण पाइपलाइन को एक कॉल में आवृत करता है; TreeBuilder मशीनरी को उजागर करता है।
एक-काल पार्सिंग
parse_html() मार्कअप टेक्स्ट से एक पूर्ण ट्री तक जाता है; parse_fragment() संदर्भ तत्व के विरुद्ध फ्रैगमेंट एल्गोरिद्म लागू करता है। दोनों TreeBuilder.run() के द्वारा समान TreeBuilder आंतरिक संरचनाओं को चलाते हैं।
इन्सर्शन मोड और खुले तत्व
InsertionMode एल्गोरिद्म की मोड मशीन का मॉडल बनाता है, जहाँ StackOfOpenElements और TemplateInsertionModeStack निर्माण स्थिति को ठीक उसी तरह ट्रैक करते हैं जैसा विशिष्टता में वर्णित है।
त्रुटि पुनर्प्राप्ति
गलत क्रम में स्थित स्वरूपण तत्व run_adoption_agency_algorithm() के द्वारा हल होते हैं — मानक के एडॉप्शन एजेंसी एल्गोरिदम — और ActiveFormattingList सक्रिय स्वरूपण तत्वों को ट्रैक करता है। get_foster_parent_location() गलत जगह रखे टेबल कंटेंट के लिए फोस्टर पेरेंटिंग लागू करता है।
विचित्रताएँ और विदेशी सामग्री
determine_quirks_mode() दस्तावेज़ों को उनके डॉकटाइप से वर्गीकृत करता है। SVG और MathML सामग्री adjust_svg_attributes(), adjust_mathml_attributes(), और adjust_foreign_attributes() के माध्यम से प्रवाहित होती है, जहाँ एकीकरण बिंदु is_html_integration_point() और is_mathml_text_integration_point() द्वारा पहचाने जाते हैं।
सलाह और सर्वोत्तम प्रथाएँ
- जब तक आप विशेष रूप से कंस्ट्रक्शन-स्टेट इंट्रोस्पेक्शन नहीं चाहते,
parse_html()को अपनाएँ। - सही कॉन्टेक्स्ट एलिमेंट के साथ
parse_fragment()का उपयोग करें — फ्रैगमेंट पार्सिंग नियम उसी पर निर्भर करते हैं। - खराब मार्कअप से उत्पन्न आश्चर्यजनक ट्री को डिबग करते समय, एडॉप्शन एजेंसी और फोस्टर-पेरेंटिंग व्यवहार अक्सर कारण होते हैं, बग नहीं।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
| तालिका सामग्री तालिका के बाहर ले जाई गई | गलत जगह रखी गई सामग्री का पोषण बढ़ाना | स्रोत मार्कअप नेस्टिंग को ठीक करें |
| आउटपुट में फ़ॉर्मेटिंग टैग दोहराए गए | गोद लेने एजेंसी का पुनर्निर्माण | गलत नेस्टिंग के लिए अपेक्षित मानक व्यवहार |
| दस्तावेज़ क्विर्क्स मोड में रेंडर होता है | गायब या लेगसी डॉctype | इनपुट पर 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-आधारित क्विर्क्स वर्गीकरण |