ساخت درخت

ساخت درخت

ساخت درخت مرحلهٔ دوم پارسینگ است: جریان توکنایزر را مصرف می‌کند و 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

همچنین ببینید:

 فارسی