Κατασκευή Δέντρου
Κατασκευή Δέντρου
Η κατασκευή δέντρου είναι το δεύτερο στάδιο ανάλυσης: καταναλώνει τη ροή του διαχωριστή και δημιουργεί το DOM σύμφωνα με τον αλγόριθμο του προτύπου — συμπεριλαμβανομένων των διάσημων συμπεριφορών ανάκτησης σφαλμάτων. parse_html() τυλίγει ολόκληρη τη διαδικασία σε μία κλήση· TreeBuilder αποκαλύπτει τον μηχανισμό.
Ανάλυση με Μία Κλήση
parse_html() μετατρέπει το κείμενο σήμανσης σε ολοκληρωμένο δέντρο· parse_fragment() εφαρμόζει τον αλγόριθμο τμημάτων σε ένα στοιχείο περιβάλλοντος. Και τα δύο οδηγούν τα ίδια εσωτερικά του TreeBuilder μέσω του TreeBuilder.run().
Λειτουργίες Εισαγωγής και Ανοιχτά Στοιχεία
InsertionMode μοντελοποιεί τη μηχανή λειτουργιών του αλγορίθμου, με τα StackOfOpenElements και TemplateInsertionModeStack να παρακολουθούν την κατάσταση της κατασκευής ακριβώς όπως περιγράφεται στην προδιαγραφή.
Ανάκτηση Σφαλμάτων
Τα λανθασμένα διατεταγμένα στοιχεία μορφοποίησης επιλύονται μέσω του run_adoption_agency_algorithm() — του αλγορίθμου adoption agency του προτύπου — και το ActiveFormattingList παρακολουθεί τα ενεργά στοιχεία μορφοποίησης. Το get_foster_parent_location() εφαρμόζει foster parenting για περιεχόμενο πίνακα που βρίσκεται εκτός θέσης.
Λειτουργία Quirks και ξένο περιεχόμενο
determine_quirks_mode() ταξινομεί τα έγγραφα με βάση το doctype τους. Το SVG και το περιεχόμενο MathML περνούν μέσω του adjust_svg_attributes(), adjust_mathml_attributes() και adjust_foreign_attributes(), με σημεία ενσωμάτωσης να εντοπίζονται από το is_html_integration_point() και το is_mathml_text_integration_point().
Συμβουλές και βέλτιστες πρακτικές
- Χρησιμοποιήστε το
parse_html()εκτός αν χρειάζεστε ειδικά την ενδοσκόπηση της κατάστασης κατασκευής - Χρησιμοποιήστε το
parse_fragment()με το σωστό στοιχείο περιβάλλοντος — οι κανόνες ανάλυσης αποσπάσματος εξαρτώνται από αυτό - Κατά την αποσφαλμάτωση εκπληκτικών δέντρων που προκύπτουν από εσφαλμένο markup, οι συμπεριφορές adoption agency και foster-parenting είναι συνήθως η εξήγηση, όχι ένα σφάλμα
Συνηθισμένα προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
| Το περιεχόμενο του πίνακα μετακινήθηκε εκτός του πίνακα | Διευκόλυνση της φροντίδας του λανθασμένου περιεχομένου | Διόρθωση της εσοχής του πηγαίου σήμανσης |
| Οι ετικέτες μορφοποίησης διπλοεμφανίζονται στην έξοδο | Ανασυγκρότηση του γραφείου υιοθεσίας | Αναμενόμενη συμπεριφορά προτύπων για λανθασμένη εμφώλευση |
| Το έγγραφο αποδίδεται σε λειτουργία quirks mode | Απουσία ή παλαιός doctype | Ελέγξτε το determine_quirks_mode() στην είσοδο |
FAQ
Γιατί το εσφαλμένο markup παράγει ένα έγκυρο δέντρο;
Ο αλγόριθμος των προτύπων ορίζει την αποκατάσταση για κάθε περίπτωση σφάλματος — TreeBuilder υλοποιεί αυτά τα μονοπάτια αντί να εγείρει.
Τι είναι ο αλγόριθμος του οργανισμού υιοθεσίας;
Η διαδικασία του προτύπου για την επισκευή λανθασμένα ενσωματωμένων στοιχείων μορφοποίησης· εκτίθεται ως run_adoption_agency_algorithm().
Ο builder διαχειρίζεται το SVG και το MathML;
Ναι — τα χαρακτηριστικά ξένου περιεχομένου προσαρμόζονται μέσω των ειδικών συναρτήσεων adjust_*_attributes() με ανίχνευση σημείου ενσωμάτωσης προτύπων.
API Reference Περίληψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
parse_html | Μετατροπή markup σε δέντρο με μία κλήση |
parse_fragment | Ανάλυση αλγορίθμου τμημάτων |
TreeBuilder.run | Κατασκευή δέντρου εκτέλεσης |
InsertionMode | Μηχανή λειτουργίας αλγορίθμου |
run_adoption_agency_algorithm | Διόρθωση λανθασμένης εμφύτευσης |
determine_quirks_mode | Κατάταξη quirks βάσει Doctype |