# `xml.sax.handler` — Βασικές κλάσεις για χειριστές SAX

Πηγαίος κώδικας: Lib/xml/sax/handler.py

Το SAX API ορίζει πέντε είδη χειριστών: χειριστές περιεχομένου, χειριστές DTD, χειριστές σφαλμάτων, χειριστές επίλυσης οντοτήτων και χειριστές λεξικών. Οι εφαρμογές συνήθως χρειάζεται να υλοποιήσουν μόνο τις διεπαφές των γεγονότων που τους ενδιαφέρουν. Μπορούν να υλοποιήσουν τις διεπαφές σε ένα μόνο αντικείμενο ή σε πολλαπλά αντικείμενα. Οι υλοποιήσεις χειριστών θα πρέπει να κληρονομούν από τις βασικές κλάσεις που παρέχονται στο module `xml.sax.handler`, έτσι ώστε όλες οι μέθοδοι να αποκτούν προεπιλεγμένες υλοποιήσεις.

class xml.sax.handler.ContentHandler

  Αυτή είναι η κύρια διεπαφή callback στο SAX και η πιο σημαντική για τις εφαρμογές. Η σειρά των γεγονότων σε αυτή τη διεπαφή αντικατοπτρίζει τη σειρά των πληροφοριών στο έγγραφο.

class xml.sax.handler.DTDHandler

  Χειρισμός DTD γεγονότων.

  Αυτή η διεπαφή καθορίζει μόνο τα γεγονότα DTD που απαιτούνται για βασική ανάλυση (μη αναλυμένες οντότητες και ιδιότητες).

class xml.sax.handler.EntityResolver

  Βασική διεπαφή για την επίλυση οντοτήτων. Εάν δημιουργήσετε ένα αντικείμενο που υλοποιεί αυτή τη διεπαφή, τότε θα πρέπει να το καταχωρήσετε στον αναλυτή σας, o αναλυτής θα καλέσει τη μέθοδο στο αντικείμενό σας για να επιλύσει όλες τις εξωτερικές οντότητες.

class xml.sax.handler.ErrorHandler

  Διεπαφή που χρησιμοποιείται από τον αναλυτή για να παρουσιάσει μηνύματα σφάλματος και προειδοποιήσεων στην εφαρμογή. Οι μέθοδοι αυτού του αντικειμένου ελέγχουν αν τα σφάλματα μετατρέπονται άμεσα σε εξαιρέσεις ή αντιμετωπίζονται με κάποιο άλλο τρόπο.

class xml.sax.handler.LexicalHandler

  Διεπαφή που χρησιμοποιείται από τον αναλυτή για να παρουσιάσει γεγονότα χαμηλής συχνότητας που μπορεί να μην ενδιαφέρουν πολλές εφαρμογές.

Εκτός από αυτές τις κλάσεις, το `xml.sax.handler` παρέχει συμβολικές σταθερές για τα ονόματα χαρακτηριστικών και ιδιοτήτων.

xml.sax.handler.feature_namespaces
  value: `"http://xml.org/sax/features/namespaces"`
  true: Εκτέλεση επεξεργασίας ονομάτων χώρου.
  false: Προαιρετικά μη εκτέλεση επεξεργασίας ονομάτων χώρου (υπονοεί namespace-prefixes; προεπιλογή).
  access: (ανάλυση) μόνο για ανάγνωση; (μη ανάλυση) ανάγνωση/εγγραφή

xml.sax.handler.feature_namespace_prefixes
  value: `"http://xml.org/sax/features/namespace-prefixes"`
  true: Αναφορά των αρχικών ονομάτων με πρόθεμα και ιδιοτήτων που χρησιμοποιούνται για δηλώσεις ονομάτων χώρου.
  false: Μη αναφορά ιδιοτήτων που χρησιμοποιούνται για δηλώσεις ονομάτων χώρου, και προαιρετικά μη αναφορά αρχικών ονομάτων με πρόθεμα (προεπιλογή).
  access: (ανάλυση) μόνο για ανάγνωση; (μη ανάλυση) ανάγνωση/εγγραφή

xml.sax.handler.feature_string_interning
  value: `"http://xml.org/sax/features/string-interning"`
  true: Όλα τα ονόματα στοιχείων, πρόθεμα, ονόματα ιδιοτήτων, URIs ονομάτων χώρου και τοπικά ονόματα εσωτερικεύονται χρησιμοποιώντας την ενσωματωμένη συνάρτηση εσωτερικοποίησης (intern).
  false: Τα ονόματα δεν εσωτερικεύονται απαραίτητα, αν και μπορεί να είναι (προεπιλογή).
  access: (ανάλυση) μόνο για ανάγνωση; (μη ανάλυση) ανάγνωση/εγγραφή

xml.sax.handler.feature_validation
  value: `"http://xml.org/sax/features/validation"`
  true: Αναφορά όλων των σφαλμάτων επικύρωσης (υπονοεί external-general-entities και external-parameter-entities).
  false: Μη αναφορά σφαλμάτων επικύρωσης.
  access: (ανάλυση) μόνο για ανάγνωση; (μη ανάλυση) ανάγνωση/εγγραφή

xml.sax.handler.feature_external_ges

  Προειδοποίηση

  Η ενεργοποίηση ανοίγει μια ευπάθεια σε επιθέσεις εξωτερικών οντοτήτων εάν ο αναλυτής χρησιμοποιείται με περιεχόμενο XML που παρέχεται από τον χρήστη. Παρακαλώ σκεφτείτε το μοντέλο απειλών σας πριν ενεργοποιήσετε αυτό το χαρακτηριστικό.

  value: `"http://xml.org/sax/features/external-general-entities"`
  true: Συμπερίληψη όλων των εξωτερικών γενικών (κείμενο) οντοτήτων.
  false: Μη συμπερίληψη εξωτερικών γενικών οντοτήτων.
  access: (ανάλυση) μόνο για ανάγνωση; (μη ανάλυση) ανάγνωση/εγγραφή

xml.sax.handler.feature_external_pes
  value: `"http://xml.org/sax/features/external-parameter-entities"`
  true: Συμπερίληψη όλων των εξωτερικών παραμέτρων οντοτήτων, συμπεριλαμβανομένου του εξωτερικού υποσυνόλου DTD.
  false: Μη συμπερίληψη εξωτερικών παραμέτρων οντοτήτων, ακόμη και του εξωτερικού υποσυνόλου DTD.
  access: (ανάλυση) μόνο για ανάγνωση; (μη ανάλυση) ανάγνωση/εγγραφή

xml.sax.handler.all_features

  Λίστα όλων των χαρακτηριστικών.

xml.sax.handler.property_lexical_handler
  value: `"http://xml.org/sax/properties/lexical-handler"`
  data type: xml.sax.handler.LexicalHandler (δεν υποστηρίζεται στην Python 2)
  description: Ένας προαιρετικός χειριστής επέκτασης για λεξικά συμβάντα όπως τα σχόλια.
  access: read/write

xml.sax.handler.property_declaration_handler
  value: `"http://xml.org/sax/properties/declaration-handler"`
  data type: xml.sax.sax2lib.DeclHandler (δεν υποστηρίζεται στην Python 2)
  description: Ένας προαιρετικός χειριστής επέκτασης για γεγονότα που σχετίζονται με το DTD εκτός από τις δηλώσεις και τις μη αναλυμένες οντότητες.
  access: read/write

xml.sax.handler.property_dom_node
  value: `"http://xml.org/sax/properties/dom-node"`
  data type: org.w3c.dom.Node (δεν υποστηρίζεται στην Python 2)
  description: Κατά την ανάλυση, ο τρέχων DOM κόμβος που επισκέπτεται εάν αυτός είναι ένας επαναληπτικός DOM κόμβος∙ όταν δεν αναλύεται, ο ριζικός DOM κόμβος για την επανάληψη.
  access: (ανάλυση) μόνο για ανάγνωση; (μη ανάλυση) ανάγνωση/εγγραφή

xml.sax.handler.property_xml_string
  value: `"http://xml.org/sax/properties/xml-string"`
  data type: Bytes
  description: Η κυριολεκτική συμβολοσειρά χαρακτήρων που ήταν η πηγή για το τρέχον γεγονός.
  access: μόνο για ανάγνωση

xml.sax.handler.all_properties

  Λίστα όλων των γνωστών ονομάτων ιδιοτήτων.

## ContentHandler Αντικείμενα

Οι χρήστες αναμένεται να δημιουργήσουν υποκλάση `ContentHandler` για να υποστηρίξουν την εφαρμογή τους. Οι ακόλουθες μέθοδοι καλούνται από τον αναλυτή στα κατάλληλα γεγονότα στο έγγραφο εισόδου:

ContentHandler.setDocumentLocator(locator)

  Καλείται από τον αναλυτή για να δώσει στην εφαρμογή έναν εντοπιστή για τον εντοπισμό της προέλευσης των γεγονότων του εγγράφου.

  Οι αναλυτές SAX ενθαρρύνονται έντονα (αν και δεν απαιτείται απολύτως) να παρέχουν έναν εντοπιστή: εάν το κάνουν, πρέπει να παρέχουν τον εντοπιστή στην εφαρμογή καλώντας αυτή τη μέθοδο πριν από την κλήση οποιωνδήποτε άλλων μεθόδων στη διεπαφή DocumentHandler.

  Ο εντοπιστής επιτρέπει στην εφαρμογή να προσδιορίσει τη θέση τέλους οποιουδήποτε γεγονότος που σχετίζεται με το έγγραφο, ακόμη και αν ο αναλυτής δεν αναφέρει σφάλμα. Συνήθως, η εφαρμογή θα χρησιμοποιήσει αυτές τις πληροφορίες για την αναφορά των δικών της σφαλμάτων (όπως περιεχόμενο χαρακτήρων που δεν αντιστοιχεί στους επιχειρηματικούς κανόνες της εφαρμογής). Οι πληροφορίες που επιστρέφονται από τον εντοπιστή πιθανώς δεν είναι αρκετές για χρήση με μια μηχανή αναζήτησης.

  Σημειώστε ότι ο εντοπιστής θα επιστρέψει σωστές πληροφορίες μόνο κατά την κλήση των γεγονότων σε αυτή τη διεπαφή. Η εφαρμογή δεν θα πρέπει να προσπαθήσει να τον χρησιμοποιήσει σε οποιαδήποτε άλλη στιγμή.

ContentHandler.startDocument()

  Λήψη ειδοποίησης για την αρχή ενός εγγράφου.

  Ο αναλυτής SAX θα καλέσει αυτή τη μέθοδο μόνο μία φορά, πριν από οποιαδήποτε άλλη μέθοδο σε αυτή τη διεπαφή ή σε DTDHandler (εκτός από `setDocumentLocator()`).

ContentHandler.endDocument()

  Λήψη ειδοποίησης για το τέλος ενός εγγράφου.

  Ο αναλυτής SAX θα καλέσει αυτή τη μέθοδο μόνο μία φορά, και θα είναι η τελευταία μέθοδος που θα κληθεί κατά τη διάρκεια της ανάλυσης. Ο αναλυτής δεν θα καλέσει αυτή τη μέθοδο μέχρι να εγκαταλείψει την ανάλυση (εξαιτίας ενός μη ανακτήσιμου σφάλματος) ή να φτάσει στο τέλος της εισόδου.

ContentHandler.startPrefixMapping(prefix, uri)

  Αρχή της έκτασης ενός προθέματος-URI χαρτογράφησης ονόματος χώρου.

  Οι πληροφορίες από αυτό το γεγονός δεν είναι απαραίτητες για την κανονική επεξεργασία ονομάτων χώρου: ο αναγνώστης SAX XML θα αντικαταστήσει αυτόματα τα προθέματα για τα ονόματα στοιχείων και ιδιοτήτων όταν είναι ενεργοποιημένο το χαρακτηριστικό `feature_namespaces` (η προεπιλογή).

  Υπάρχουν, ωστόσο, περιπτώσεις όπου οι εφαρμογές χρειάζεται να χρησιμοποιούν προθέματα σε δεδομένα χαρακτήρων ή σε τιμές ιδιοτήτων, όπου δεν μπορούν να επεκταθούν αυτόματα με ασφάλεια. Τα γεγονότα `startPrefixMapping()` και `endPrefixMapping()` παρέχουν στις εφαρμογές τις πληροφορίες για να επεκτείνουν τα προθέματα σε αυτά τα συμφραζόμενα, εάν είναι απαραίτητο.

  Σημειώστε ότι τα γεγονότα `startPrefixMapping()` και `endPrefixMapping()` δεν εγγυώνται ότι θα είναι σωστά εγκατεστημένα σε σχέση με το ένα το άλλο: όλα τα γεγονότα `startPrefixMapping()` θα συμβούν πριν από το αντίστοιχο `startElement()` γεγονός, και όλα τα γεγονότα `endPrefixMapping()` θα συμβούν μετά το αντίστοιχο `endElement()` γεγονός, αλλά η σειρά τους δεν είναι εγγυημένη.

ContentHandler.endPrefixMapping(prefix)

  Τέλος της έκτασης μιας χαρτογράφησης προθέματος-URI.

  Δείτε `startPrefixMapping()` για λεπτομέρειες. Αυτό το γεγονός θα συμβεί πάντα μετά το αντίστοιχο γεγονός `endElement()`, αλλά η σειρά των γεγονότων `endPrefixMapping()` δεν είναι εγγυημένη.

ContentHandler.startElement(name, attrs)

  Σηματοδοτεί την αρχή ενός στοιχείου σε λειτουργία χωρίς ονόματα χώρου.

  Η παράμετρος name περιέχει το ακατέργαστο όνομα XML 1.0 του τύπου στοιχείου ως συμβολοσειρά και η παράμετρος attrs περιέχει ένα αντικείμενο της Attributes διεπαφής που περιέχει τις ιδιότητες του στοιχείου. Το αντικείμενο που περιέχεται στην παράμετρο attrs μπορεί να χρησιμοποιηθεί ξανά από τον αναλυτή∙ η διατήρηση αναφοράς σε αυτό δεν είναι αξιόπιστος τρόπος για να διατηρήσετε αντίγραφο των ιδιοτήτων. Για να διατηρήσετε ένα αντίγραφο των ιδιοτήτων, χρησιμοποιήστε τη μέθοδο `copy()` του αντικειμένου attrs.

ContentHandler.endElement(name)

  Σηματοδοτεί το τέλος ενός στοιχείου σε λειτουργία χωρίς ονόματα χώρου.

  Η παράμετρος name περιέχει το όνομα του τύπου στοιχείου, όπως και με το `startElement()` γεγονός.

ContentHandler.startElementNS(name, qname, attrs)

  Σηματοδοτεί την αρχή ενός στοιχείου σε λειτουργία ονομάτων χώρου.

  Η παράμετρος name περιέχει το όνομα του τύπου στοιχείου ως `(uri, localname)` πλειάδα, η παράμετρος qname περιέχει το ακατέργαστο όνομα XML 1.0 που χρησιμοποιείται στο έγγραφο προέλευσης, και η παράμετρος attrs περιέχει μια παρουσία της διεπαφής AttributesNS που περιέχει τις ιδιότητες του στοιχείου. Εάν δεν συσχετίζεται κανένα όνομα χώρου με το στοιχείο, το uri συστατικό του name θα είναι `None`. Το αντικείμενο που περιέχεται στην παράμετρο attrs μπορεί να χρησιμοποιηθεί ξανά από τον αναλυτή. Η διατήρηση αναφοράς σε αυτό δεν είναι αξιόπιστος τρόπος για να διατηρήσετε αντίγραφο των ιδιοτήτων. Για να διατηρήσετε ένα αντίγραφο των ιδιοτήτων, χρησιμοποιήστε τη μέθοδο `copy()` του αντικειμένου attrs.

  Οι αναλυτές μπορούν να ορίσουν την παράμετρο qname σε `None`, εκτός εάν είναι ενεργοποιημένο το χαρακτηριστικό `feature_namespace_prefixes`.

ContentHandler.endElementNS(name, qname)

  Σηματοδοτεί το τέλος ενός στοιχείου σε λειτουργία ονομάτων χώρου.

  Η παράμετρος name περιέχει το όνομα του τύπου στοιχείου, όπως και με τη `startElementNS()` μέθοδο, όπως και η παράμετρος qname.

ContentHandler.characters(content)

  Λήψη ειδοποίησης για δεδομένα χαρακτήρων.

  Ο Αναλυτής θα καλέσει αυτή τη μέθοδο για να αναφέρει κάθε κομμάτι δεδομένων χαρακτήρων. Οι αναλυτές SAX μπορεί να επιστρέψουν όλα τα συνεχόμενα δεδομένα χαρακτήρων σε ένα μοναδικό κομμάτι, ή μπορεί να τα χωρίσουν σε αρκετά κομμάτια. Ωστόσο, όλοι οι χαρακτήρες σε οποιοδήποτε μεμονωμένο γεγονός πρέπει να προέρχονται από την ίδια εξωτερική οντότητα, έτσι ώστε ο Εντοπιστής να παρέχει χρήσιμες πληροφορίες.

  Το content μπορεί να είναι μια συμβολοσειρά ή ένα στιγμιότυπο bytes. Το αναγνωστικό `expat` παράγει πάντα συμβολοσειρές.

  Σημείωση

  Η προηγούμενη διεπαφή SAX 1 που παρείχε η ομάδα ειδικού ενδιαφέροντος Python XML Group χρησιμοποιούσε μια διεπαφή που έμοιαζε περισσότερο με τη Java για αυτή τη μέθοδο. Δεδομένου ότι οι περισσότεροι αναλυτές που χρησιμοποιούνται από την Python δεν εκμεταλλεύονταν την παλαιότερη διεπαφή, επιλέχθηκε η απλούστερη υπογραφή για να την αντικαταστήσει. Για να μετατρέψετε τον παλιό κώδικα στη νέα διεπαφή, χρησιμοποιήστε content αντί να τεμαχίζετε το περιεχόμενο με τις παλιές παραμέτρους offset και length.

ContentHandler.ignorableWhitespace(whitespace)

  Λήψη ειδοποίησης για αγνοήσιμα κενά σε περιεχόμενο στοιχείου.

  Οι Επικυρωτικοί Αναλυτές πρέπει να χρησιμοποιούν αυτή τη μέθοδο για να αναφέρουν κάθε κομμάτι αγνοήσιμου κενού (βλ. την W3C XML 1.0 σύσταση, τμήμα 2.10): οι μη επικυρωτικοί αναλυτές μπορούν επίσης να χρησιμοποιούν αυτή τη μέθοδο εάν είναι ικανοί να αναλύουν και να χρησιμοποιούν μοντέλα περιεχομένου.

  Οι αναλυτές SAX μπορεί να επιστρέψουν όλα τα συνεχόμενα κενά σε ένα μοναδικό κομμάτι, ή μπορεί να τα χωρίσουν σε αρκετά κομμάτια. Ωστόσο, όλοι οι χαρακτήρες σε οποιοδήποτε μεμονωμένο γεγονός πρέπει να προέρχονται από την ίδια εξωτερική οντότητα, έτσι ώστε ο Εντοπιστής να παρέχει χρήσιμες πληροφορίες.

ContentHandler.processingInstruction(target, data)

  Λήψη ειδοποίησης για μια οδηγία επεξεργασίας.

  Ο Αναλυτής θα καλέσει αυτή τη μέθοδο μία φορά για κάθε οδηγία επεξεργασίας που βρέθηκε: σημειώστε ότι οι οδηγίες επεξεργασίας μπορεί να εμφανίζονται πριν ή μετά το κύριο στοιχείο του εγγράφου.

  Ένας αναλυτής SAX δεν πρέπει ποτέ να αναφέρει μια δήλωση XML (XML 1.0, τμήμα 2.8) ή μια δήλωση κειμένου (XML 1.0, τμήμα 4.3.1) χρησιμοποιώντας αυτή τη μέθοδο.

ContentHandler.skippedEntity(name)

  Λήψη ειδοποίησης για μια παράλειψη οντότητας.

  Ο Αναλυτής θα καλέσει αυτή τη μέθοδο μία φορά για κάθε παράλειψη οντότητας. Οι μη επικυρωτικοί επεξεργαστές μπορεί να παραλείψουν οντότητες εάν δεν έχουν δει τις δηλώσεις (για παράδειγμα, η οντότητα δηλώθηκε σε ένα εξωτερικό υποσύνολο DTD). Όλοι οι επεξεργαστές μπορεί να παραλείψουν εξωτερικές οντότητες, ανάλογα με τις τιμές των ιδιοτήτων `feature_external_ges` και `feature_external_pes`.

## DTDHandler Αντικείμενα

Τα `DTDHandler` αντικείμενα παρέχουν τις ακόλουθες μεθόδους:

DTDHandler.notationDecl(name, publicId, systemId)

  Χειρισμός ενός γεγονότος δήλωσης σημείωσης.

DTDHandler.unparsedEntityDecl(name, publicId, systemId, ndata)

  Χειρισμός ενός γεγονότος δήλωσης μη αναλυμένης οντότητας.

## EntityResolver Αντικείμενα

EntityResolver.resolveEntity(publicId, systemId)

  Επιλύστε τον αναγνωριστικό συστήματος μιας οντότητας και επιστρέψτε είτε τον αναγνωριστικό συστήματος για ανάγνωση ως συμβολοσειρά, είτε μια InputSource για ανάγνωση. Η προεπιλεγμένη υλοποίηση επιστρέφει το systemId.

## ErrorHandler Αντικείμενα

Τα αντικείμενα με αυτή τη διεπαφή χρησιμοποιούνται για να λαμβάνουν πληροφορίες σφάλματος και προειδοποίησης από το `XMLReader`. Εάν δημιουργήσετε ένα αντικείμενο που υλοποιεί αυτή τη διεπαφή, τότε εγγράψτε το αντικείμενο με το σας `XMLReader`, ο αναλυτής θα καλέσει τις μεθόδους στο αντικείμενό σας για να αναφέρει όλες τις προειδοποιήσεις και τα σφάλματα. Υπάρχουν τρία επίπεδα σφαλμάτων διαθέσιμα: προειδοποιήσεις, (πιθανώς) ανακτήσιμα σφάλματα και μη ανακτήσιμα σφάλματα. Όλες οι μέθοδοι δέχονται ένα `SAXParseException` ως τη μόνη παράμετρο. Τα σφάλματα και οι προειδοποιήσεις μπορούν να μετατραπούν σε εξαίρεση κάνοντας raise το αντικείμενο της εξαίρεσης που περιέχεται.

ErrorHandler.error(exception)

  Καλείται όταν ο αναλυτής συναντήσει ένα ανακτήσιμο σφάλμα. Εάν αυτή η μέθοδος δεν κάνει raise μια εξαίρεση, η ανάλυση μπορεί να συνεχιστεί, αλλά δεν θα πρέπει να αναμένεται περαιτέρω πληροφορίες εγγράφου από την εφαρμογή. Η επιτρεπόμενη συνέχιση του αναλυτή μπορεί να επιτρέψει την ανακάλυψη πρόσθετων σφαλμάτων στο έγγραφο εισόδου.

ErrorHandler.fatalError(exception)

  Καλείται όταν ο αναλυτής συναντήσει ένα σφάλμα από το οποίο δεν μπορεί να ανακάμψει. Η ανάλυση αναμένεται να τερματιστεί όταν αυτή η μέθοδος επιστρέψει.

ErrorHandler.warning(exception)

  Καλείται όταν ο αναλυτής παρουσιάσει πληροφορίες προειδοποίησης στην εφαρμογή. Η ανάλυση αναμένεται να συνεχιστεί όταν αυτή η μέθοδος επιστρέψει, και οι πληροφορίες του εγγράφου θα συνεχίσουν να περνούν στην εφαρμογή. Κάνοντας raise μια εξαίρεση σε αυτή τη μέθοδο, θα οδηγήσει στον τερματισμό της ανάλυσης.

## LexicalHandler Αντικείμενα

Προαιρετικός χειριστής SAX2 για λεξικά γεγονότα.

Αυτός ο χειριστής χρησιμοποιείται για την απόκτηση λεξικών πληροφοριών σχετικά με ένα έγγραφο XML. Οι λεξικές πληροφορίες περιλαμβάνουν πληροφορίες που περιγράφουν την κωδικοποίηση του εγγράφου που χρησιμοποιείται και τα σχόλια XML που ενσωματώνονται στο έγγραφο, καθώς και τα όρια τμημάτων για το DTD και για τυχόν τμήματα CDATA. Οι λεξικοί χειριστές χρησιμοποιούνται με τον ίδιο τρόπο όπως οι χειριστές περιεχομένου.

Ορίστε τον LexicalHandler ενός XMLReader χρησιμοποιώντας τη μέθοδο setProperty με τον αναγνωριστικό ιδιότητας `'http://xml.org/sax/properties/lexical-handler'`.

LexicalHandler.comment(content)

  Αναφέρει ένα σχόλιο οπουδήποτε στο έγγραφο (συμπεριλαμβανομένου του DTD και εκτός του στοιχείου εγγράφου).

LexicalHandler.startDTD(name, public_id, system_id)

  Αναφέρει την αρχή των δηλώσεων DTD εάν το έγγραφο έχει συσχετισμένο DTD.

LexicalHandler.endDTD()

  Αναφέρει το τέλος της δήλωσης DTD.

LexicalHandler.startCDATA()

  Αναφέρει την αρχή ενός τμήματος σημειωμένου ως CDATA.

  Τα περιεχόμενα του τμήματος σημειωμένου ως CDATA θα αναφερθούν μέσω του χειριστή χαρακτήρων.

LexicalHandler.endCDATA()

  Αναφέρει το τέλος ενός τμήματος σημειωμένου ως CDATA.