Κατασκευή Δέντρου

Κατασκευή Δέντρου

Η κατασκευή δέντρου είναι το δεύτερο στάδιο ανάλυσης: καταναλώνει τη ροή του διαχωριστή και δημιουργεί το 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

Δείτε επίσης

 Ελληνικά