ساخت درخت
ساخت درخت
ساخت درخت مرحلهٔ دوم پارسینگ است: جریان توکنایزر را مصرف میکند و DOM را بر اساس الگوریتم استانداردها میسازد — شامل رفتارهای معروف بازیابی خطا. parse_html() کل خط لوله را در یک فراخوانی میپوشاند؛ TreeBuilder ماشینآلات را افشا میکند.
پارسینگ تک-فراخوانی
parse_html() از متن نشانهگذاری به یک درخت نهایی میرود؛ parse_fragment() الگوریتم قطعه را نسبت به یک عنصر زمینه اعمال میکند. هر دو داخلیهای TreeBuilder یکسان را از طریق TreeBuilder.run() هدایت میکنند.
حالتهای درج و عناصر باز
InsertionMode ماشین حالت الگوریتم را مدل میکند، بههمراه StackOfOpenElements و TemplateInsertionModeStack که وضعیت ساخت را دقیقاً همانگونه که مشخصات توصیف میکند، پیگیری میکنند.
بازیابی خطا
عناصر قالببندی نادرستتو درهم از طریق run_adoption_agency_algorithm() — الگوریتم آژانس پذیرش استاندارد — حل میشوند و ActiveFormattingList عناصر قالببندی فعال را ردیابی میکند. get_foster_parent_location() پرورشپناهگاهی برای محتوای جدول در جای نادرست را اجرا میکند.
حالتهای عجیب و محتوای خارجی
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()همراه با عنصر زمینه مناسب استفاده کنید — قوانین تجزیهٔ تکه به آن وابستهاند. - هنگام اشکالزدایی درختهای شگفتانگیز ناشی از نشانهگذاری نامناسب، رفتارهای آژانس پذیرش و پرورشپناهگاهی معمولاً توضیحدهنده هستند، نه یک خطا.
مشکلات رایج
| مشکل | علت | رفع |
|---|---|---|
| محتوای جدول به بیرون جدول منتقل شد | پرورش سرپرست محتوای جابجا شده | رفع تو در تویی نشانهگذاری منبع |
| برچسبهای قالببندی در خروجی تکرار شدهاند | بازسازی آژانس پذیرش | رفتار استاندارد مورد انتظار برای تو در توی نادرست |
| سند در حالت 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 |