HTML توکنایزر

HTML توکنایزر

توکنایزر اولین مرحلهٔ پردازش HTML است: متن علامت‌گذاری را به یک جریان از توکن‌های تعریف‌شده توسط استانداردها تبدیل می‌کند. این یک API عمومی است، بنابراین ابزارهایی که به توکن‌ها به‌جای درخت‌ها اهمیت می‌دهند — lint-ها، پیش‌پردازش‌های پاک‌سازی، برجسته‌سازهای سینتکس — می‌توانند جریان را مستقیماً مصرف کنند.


توکن‌سازی علامت‌گذاری

Tokenizer.tokenize() ورودی کامل را پردازش می‌کند؛ Tokenizer.tokenize_fragment() قوانین توکن‌سازی بخش‌ها را اعمال می‌کند. هر دو واژگان استاندارد توکن‌ها را تولید می‌کنند.

کلاس‌های توکن

هر توکن یک شیء تایپ‌دار است: StartTagToken و EndTagToken برای برچسب‌ها (با ویژگی‌ها)، CharacterToken برای متن، CommentToken، DoctypeToken و EofToken که پایان ورودی را نشان می‌دهند.

وضعیت‌های توکنایزر

TokenizerState مدل ماشین وضعیت استانداردها را شبیه‌سازی می‌کند — همان وضعیت‌هایی که مشخصات نامیده‌اند — و Tokenizer.set_state() به فراخوانندگان قطعه‌ای و حساس به زمینه اجازه می‌دهد که در وضعیت صحیح شروع کنند.

ارجاعات کاراکتر

ارجاع‌های کاراکتری نام‌دار و عددی از طریق resolve_named_char_ref()، resolve_numeric_char_ref() و find_named_char_ref_match() حل می‌شوند — جدول کامل مرجع‌های نام‌دار، نه یک زیرمجموعهٔ کوتاه‌راه.


نکات و بهترین شیوه‌ها

  • از tokenize_fragment() با وضعیت اولیهٔ صحیح استفاده کنید هنگامی که محتوایی را که می‌تواند داخل یک عنصر خاص ظاهر شود، توکن‌سازی می‌کنید.
  • به EofToken به عنوان سیگنال نهایی پایان نگاه کنید، نه اینکه تکرارگر را از طریق استثنا خالی کنید.
  • برای پاک‌کننده‌ها، ویژگی‌های StartTagToken را در سطح توکن بررسی کنید قبل از اینکه هر درختی ساخته شود.

مسائل رایج

مشکلدلیلرفع
محتوای اسکریپت/استایل به عنوان نشانه‌گذاری توکنیزه می‌شودوضعیت اولیه نادرست برای زمینهمقدار مناسب TokenizerState را از طریق set_state() تنظیم کنید
موجودیت‌ها به‌نظر می‌رسند حل‌نشدهمصرف متن خام بدون حل ارجاعاز توابع حل‌کنندهٔ مرجع کاراکتر استفاده کنید
خروجی قطعه با تجزیه کامل متفاوت استقواعد قطعه به‌طور عمدی متفاوت هستنداز tokenize() برای اسناد کامل استفاده کنید

FAQ

آیا می‌توانم از توکنایزر بدون ساختن درخت استفاده کنم؟

بله — جریان توکن یک خروجی عمومی و مستقل است.

آیا حالت‌های توکنایزر استاندارد هستند؟

TokenizerState بازتاب‌دهنده ماشین حالت‌های مشخصه است و از طریق set_state() قابل تنظیم است.

چگونه مراجع کاراکترهای نام‌گذاری‌شده پردازش می‌شوند؟

از طریق resolve_named_char_ref() و find_named_char_ref_match() نسبت به جدول کامل مراجع نام‌گذاری‌شده.


API Reference خلاصه

کلاس/متدتوضیح
Tokenizer.tokenizeتوکنیزه‌سازی ورودی کامل
Tokenizer.tokenize_fragmentتوکنیزه‌سازی با قوانین تکه
Tokenizer.set_stateحالت اولیه توکنایزر را تنظیم کنید
StartTagTokenتوکن تگ شروع با ویژگی‌ها
TokenizerStateوضعیت‌های ماشین حالت استانداردها
resolve_named_char_refحل یک مرجع کاراکتر نام‌دار

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

 فارسی