HTML محلل الرموز
HTML المُجزئ
المُجزئ هو المرحلة الأولى من تحليل HTML: يحول نص العلامات إلى تدفق من الرموز المعرفة وفقًا للمعايير. إنه API عام، لذا يمكن للأدوات التي تهتم بالرموز بدلاً من الأشجار — أدوات الفحص، عمليات التنظيف المسبقة، مبرّزات الصياغة — استهلاك التدفق مباشرة.
تجزئة العلامات
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() |
| الكيانات تظهر غير محلولة | استهلاك النص الخام دون حل المراجع | استخدم وظائف char-ref resolver |
| إخراج الجزء يختلف عن التحليل الكامل | قواعد الجزء تختلف عن قصد | استخدم tokenize() للوثائق الكاملة |
FAQ
هل يمكنني استخدام الـ tokenizer دون بناء شجرة؟
نعم — تدفق الرموز هو إخراج عام ومستقل.
هل حالات الـ tokenizer هي الحالات القياسية؟
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 | حل مرجع حرف مسمى |