HTML Tokenleştirici
HTML Tokenlaştırıcı
Tokenlayıcı, HTML ayrıştırmasının ilk aşamasıdır: işaretleme metnini standart tanımlı token akışına dönüştürür. API olarak açıktır, bu yüzden tokenlere ağaçlara göre önem veren araçlar — linters, sanitizer pre-passes, syntax highlighters — akışı doğrudan tüketebilir.
İşaretleme Tokenizasyonu
Tokenizer.tokenize() tam girişi işler; Tokenizer.tokenize_fragment() parça tokenizasyon kurallarını uygular. İkisi de standart token sözlüğünü yayar.
Token Sınıfları
Her token, tiplenmiş bir nesnedir: StartTagToken ve EndTagToken etiketler için (özelliklerle), CharacterToken metin için, CommentToken, DoctypeToken ve EofToken girişin sonunu işaret eder.
Tokenlayıcı Durumları
TokenizerState standartların durum makinesini modelle— spesifikasyonun adlandırdığı aynı durumlar— ve Tokenizer.set_state() parçacık ve bağlama duyarlı çağırıcıların doğru durumda başlamasını sağlar.
Karakter Referansları
Adlandırılmış ve sayısal karakter referansları resolve_named_char_ref(), resolve_numeric_char_ref() ve find_named_char_ref_match() aracılığıyla çözülür — tam adlandırılmış-referans tablosu, kısayol alt kümesi değil.
İpuçları ve En İyi Uygulamalar
- Belirli bir öğe içinde görünecek içeriği tokenleştirirken doğru başlangıç durumu ile
tokenize_fragment()kullanın. EofToken‘i istisna yoluyla yineleyiciyi tüketmek yerine kesin son sinyali olarak kabul edin.- Temizleyiciler için, herhangi bir ağaç oluşturulmadan önce
StartTagTokenözniteliklerini token seviyesinde inceleyin.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
| Betik/stil içeriği işaretleme olarak tokenlaştırılıyor | Bağlam için yanlış başlangıç durumu | Uygun TokenizerState değerini set_state() aracılığıyla ayarlayın. |
| Varlıklar çözümlenmemiş görünüyor | Referans çözümlemesi olmadan ham metin tüketiliyor | char-ref çözümleyici işlevlerini kullanın |
| Fragment çıktısı tam ayrıştırmadan farklıdır | Fragment kuralları kasıtlı olarak farklıdır | Tam belgeler için tokenize() kullanın |
FAQ
Ağaç oluşturmadan tokenleştiriciyi kullanabilir miyim?
Evet — token akışı, kamuya açık, bağımsız bir çıktıdır.
Tokenleştirici durumları standart olanlar mı?
TokenizerState, spesifikasyonun durum makinesini yansıtır ve set_state() aracılığıyla ayarlanabilir.
Adlandırılmış karakter referansları nasıl işlenir?
resolve_named_char_ref() ve find_named_char_ref_match() kullanılarak tam ad-referans tablosu üzerinden.
API Reference Özeti
| Sınıf/Yöntem | Açıklama |
|---|---|
Tokenizer.tokenize | Tam girdiyi tokenle |
Tokenizer.tokenize_fragment | Parçacık kurallarıyla tokenleştir |
Tokenizer.set_state | İlk tokenizer durumunu ayarla |
StartTagToken | Özellikleri olan başlangıç etiketi tokeni |
TokenizerState | Standartlar durum makinesi durumları |
resolve_named_char_ref | Adlandırılmış bir karakter referansını çöz |