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 रेज़ॉल्वर फ़ंक्शन का उपयोग करें |
| फ़्रैगमेंट आउटपुट पूर्ण पार्स से भिन्न है | फ़्रैगमेंट नियम जानबूझकर अलग हैं | पूर्ण दस्तावेज़ों के लिए tokenize() का उपयोग करें |
FAQ
क्या मैं टोकनाइज़र का उपयोग बिना पेड़ बनाए कर सकता हूँ?
हां — टोकन स्ट्रीम एक सार्वजनिक, स्वतंत्र आउटपुट है।
क्या टोकनाइज़र की स्थितियां मानक हैं?
TokenizerState विनिर्देशन की state machine को प्रतिबिंबित करता है और set_state() के द्वारा सेट किया जा सकता है।
नामित कैरेक्टर रेफ़रेंसेज़ को कैसे संभाला जाता है?
पूरे नामित-रेफ़रेंस तालिका के विरुद्ध resolve_named_char_ref() और find_named_char_ref_match() के माध्यम से।
API Reference सारांश
| क्लास/मेथड | विवरण |
|---|---|
Tokenizer.tokenize | संपूर्ण इनपुट को टोकनाइज़ करें |
Tokenizer.tokenize_fragment | फ़्रैगमेंट नियमों के साथ टोकनाइज़ करें |
Tokenizer.set_state | प्रारंभिक टोकनाइज़र स्थिति सेट करें |
StartTagToken | एट्रिब्यूट्स के साथ Start-tag token |
TokenizerState | मानक स्थिति मशीन की अवस्थाएँ |
resolve_named_char_ref | एक नामांकित अक्षर संदर्भ को हल करें |