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 | حل یک مرجع کاراکتر نامدار |