HTML מפצל
מפרק HTML
המפרק הוא שלב הראשון בניתוח HTML: הוא ממיר טקסט סימון לזרם של טוקנים המוגדרים לפי תקנים. הוא API ציבורי, ולכן כלים המתמקדים בטוקנים במקום עצים — לינטרים, קידומי ניקוי מראש, מדגישי תחביר — יכולים לצרוך את הזרם ישירות.
טוקניזציה של סימון
Tokenizer.tokenize() מעבד קלט מלא; Tokenizer.tokenize_fragment() מיישם כללי טוקניזציה של חלקים. שניהם פולטות את אוצר המילים הסטנדרטי של הטוקנים.
מחלקות טוקן
כל טוקן הוא אובייקט מסוג: StartTagToken ו-EndTagToken לתגיות (עם תכונות), CharacterToken לטקסט, CommentToken, DoctypeToken, ו-EofToken מסמנים את סוף הקלט.
מצבי Tokenizer
TokenizerState מדמה את מכונת המצבים של הסטנדרטים — אותם מצבים שמפרטת המפרט — ו-Tokenizer.set_state() מאפשר למקראי קטעים וקריאות רגישות להקשר להתחיל במצב הנכון.
הפניות תו
הפניות תו ממוספרות ושמות נפתרות דרך resolve_named_char_ref(), resolve_numeric_char_ref() ו-find_named_char_ref_match() — טבלת ההפניות המלאה, ולא תת-קבוצה מקוצרת.
טיפים ושיטות מומלצות
- השתמש ב-
tokenize_fragment()עם מצב ראשוני נכון בעת טוקניזציה של תוכן שהייתי מופיע בתוך אלמנט ספציפי - התייחס ל-
EofTokenכסימן סיום סופי במקום למלא את האיטרטור באמצעות יוצא מן הכלל - למתקנים, בדוק את המאפיינים של
StartTagTokenברמת הטוקן לפני שמבנים כל עץ
בעיות נפוצות
| בעיה | סיבה | תיקון |
|---|---|---|
| תוכן של script/style מתמטז כסימון | מצב התחלתי שגוי עבור ההקשר | הגדר את ה-TokenizerState המתאים דרך set_state() |
| יישויות מופיעות לא פתורות | צריכת טקסט גולמי ללא פתרון הפניות | השתמש בפונקציות הפותרות של char-ref |
| פלט הקטע שונה מפענוח מלא | כללי הקטע שונים בכוונה | השתמש ב-tokenize() למסמכים מלאים |
FAQ
האם אני יכול להשתמש ב-tokenizer בלי לבנות עץ?
כן — ה-token stream הוא פלט ציבורי ונפרד.
האם מצבי ה-tokenizer הם הסטנדרטיים?
TokenizerState משקף את מכונת המצבים של המפרט וניתן להגדירו דרך set_state().
איך מטופלות named character references?
דרך resolve_named_char_ref() ו-find_named_char_ref_match() כנגד טבלת named-reference המלאה.
API Reference סיכום
| מחלקה/מתודה | תיאור |
|---|---|
Tokenizer.tokenize | Tokenize קלט מלא |
Tokenizer.tokenize_fragment | Tokenize עם כללי קטע |
Tokenizer.set_state | הגדר את מצב המפרק הראשוני |
StartTagToken | אסימון תג פתיחה עם מאפיינים |
TokenizerState | מצבי מכונת מצבים בתקן |
resolve_named_char_ref | פתור הפנייה בשם תו |