HTML Διαχωριστής

HTML Αναλυτής

Ο tokenizer είναι το πρώτο στάδιο της ανάλυσης HTML: μετατρέπει το κείμενο markup σε ροή tokens ορισμένων από πρότυπα. Είναι δημόσιο API, ώστε τα εργαλεία που ενδιαφέρονται για tokens αντί για δέντρα — linters, sanitizer pre-passes, syntax highlighters — να μπορούν να καταναλώνουν την ροή απευθείας.


Ανάλυση σήμανσης

Tokenizer.tokenize() επεξεργάζεται πλήρη είσοδο· Tokenizer.tokenize_fragment() εφαρμόζει κανόνες tokenization τμημάτων. Και οι δύο εκπέμπουν το τυπικό λεξιλόγιο tokens.

Κατηγορίες Token

Κάθε token είναι ένα τυποποιημένο αντικείμενο: 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 σε επίπεδο διακριτικού πριν δημιουργηθεί οποιοδήποτε δέντρο

Κοινά Προβλήματα

ΠρόβλημαΑιτίαΔιόρθωση
Το περιεχόμενο script/style αναλύεται ως σήμανσηΛάθος αρχική κατάσταση για το πλαίσιοΟρίστε το κατάλληλο TokenizerState μέσω set_state()
Οι οντότητες εμφανίζονται ανεπίλυτεςΚατανάλωση ακατέργαστου κειμένου χωρίς επίλυση αναφορώνΧρησιμοποιήστε τις συναρτήσεις επίλυσης αναφοράς χαρακτήρων
Η έξοδος του τμήματος διαφέρει από την πλήρη ανάλυσηΟι κανόνες του τμήματος διαφέρουν σκόπιμαΧρησιμοποιήστε 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Ορίστε την αρχική κατάσταση του tokenizer
StartTagTokenToken ετικέτας έναρξης με χαρακτηριστικά
TokenizerStateΚαταστάσεις μηχανής καταστάσεων προτύπων
resolve_named_char_refΕπίλυση ονομασμένης αναφοράς χαρακτήρα

Δείτε επίσης

 Ελληνικά