Example #1
0
    def _default(self, text):
        prefix = text[:1]
        if prefix == '&':
            try:
                self._target.data(self.entity[text[1:-1]])
            except KeyError:
                from xml.parsers import expat
                raise expat.error('undefined entity %s: line %d, column %d' %
                                  (text, self._parser.ErrorLineNumber,
                                   self._parser.ErrorColumnNumber))

        elif prefix == '<' and text[:9] == '<!DOCTYPE':
            self._doctype = []
        elif self._doctype is not None:
            if prefix == '>':
                self._doctype = None
                return
            text = string.strip(text)
            if not text:
                return
            self._doctype.append(text)
            n = len(self._doctype)
            if n > 2:
                type = self._doctype[1]
                if type == 'PUBLIC' and n == 4:
                    name, type, pubid, system = self._doctype
                elif type == 'SYSTEM' and n == 3:
                    name, type, system = self._doctype
                    pubid = None
                else:
                    return
                if pubid:
                    pubid = pubid[1:-1]
                self.doctype(name, pubid, system[1:-1])
                self._doctype = None
Example #2
0
 def _skipped(self, name, is_parameter_entity):
     err = expat.error("undefined entity %s: line %d, column %d" %
                       (name, self._parser.ErrorLineNumber,
                        self._parser.ErrorColumnNumber))
     err.code = expat.errors.XML_ERROR_UNDEFINED_ENTITY
     err.lineno = self._parser.ErrorLineNumber
     err.offset = self._parser.ErrorColumnNumber
     raise err
Example #3
0
 def _skipped(self, name, is_parameter_entity):
     err = expat.error("undefined entity %s: line %d, column %d" %
                       (name, self._parser.ErrorLineNumber,
                        self._parser.ErrorColumnNumber))
     err.code = expat.errors.XML_ERROR_UNDEFINED_ENTITY
     err.lineno = self._parser.ErrorLineNumber
     err.offset = self._parser.ErrorColumnNumber
     raise err
 def _skipped(self, name, is_parameter_entity):
     # type: (str, bool) -> None
     err = expat.error("undefined entity %s: line %d, column %d" %
                       (name, self._parser.ErrorLineNumber,
                        self._parser.ErrorColumnNumber))
     err.code = _undefined_entity_code
     err.lineno = self._parser.ErrorLineNumber
     err.offset = self._parser.ErrorColumnNumber
     raise err
Example #5
0
 def _skipped(self, name, is_parameter_entity):
     # type: (Text, bool) -> None
     err = expat.error("undefined entity %s: line %d, column %d" %
                       (name, self._parser.ErrorLineNumber,
                        self._parser.ErrorColumnNumber))
     err.code = _undefined_entity_code
     err.lineno = self._parser.ErrorLineNumber
     err.offset = self._parser.ErrorColumnNumber
     raise err
Example #6
0
 def _default(self, text):
     if text.startswith('&'):
         # deal with undefined entities
         try:
             self.push(TEXT, self.entity[text[1:-1]])
         except KeyError:
             raise expat.error("undefined entity %s: line %d, column %d"
                 % (text, self._parser.ErrorLineNumber,
                     self._parser.ErrorColumnNumber))
     else:
         # XXX not sure what should happen here.
         # This gets: \n at the end of documents?, <![CDATA[, etc..
         pass
Example #7
0
 def _handle_other(self, text):
     if text.startswith("&"):
         # deal with undefined entities
         try:
             text = unichr(entities.name2codepoint[text[1:-1]])
             self._enqueue(TEXT, text)
         except KeyError:
             filename, lineno, offset = self._getpos()
             error = expat.error('undefined entity "%s": line %d, column %d' % (text, lineno, offset))
             error.code = expat.errors.XML_ERROR_UNDEFINED_ENTITY
             error.lineno = lineno
             error.offset = offset
             raise error
 def _default(self, text):
     if text.startswith('&'):
         # deal with undefined entities
         try:
             self.push(TEXT, self.entity[text[1:-1]])
         except KeyError:
             raise expat.error("undefined entity %s: line %d, column %d" %
                               (text, self._parser.ErrorLineNumber,
                                self._parser.ErrorColumnNumber))
     else:
         # XXX not sure what should happen here.
         # This gets: \n at the end of documents?, <![CDATA[, etc..
         pass
Example #9
0
 def _default(self, text):
     prefix = text[:1]
     if prefix == "&":
         # deal with undefined entities
         try:
             data_handler = self.target.data
         except AttributeError:
             return
         try:
             data_handler(self.entity[text[1:-1]])
         except KeyError:
             from xml.parsers import expat
             err = expat.error(
                 "undefined entity %s: line %d, column %d" %
                 (text, self.parser.ErrorLineNumber,
                 self.parser.ErrorColumnNumber)
                 )
             err.code = 11 # XML_ERROR_UNDEFINED_ENTITY
             err.lineno = self.parser.ErrorLineNumber
             err.offset = self.parser.ErrorColumnNumber
             raise err
     elif prefix == "<" and text[:9] == "<!DOCTYPE":
         self._doctype = [] # inside a doctype declaration
     elif self._doctype is not None:
         # parse doctype contents
         if prefix == ">":
             self._doctype = None
             return
         text = text.strip()
         if not text:
             return
         self._doctype.append(text)
         n = len(self._doctype)
         if n > 2:
             type = self._doctype[1]
             if type == "PUBLIC" and n == 4:
                 name, type, pubid, system = self._doctype
                 if pubid:
                     pubid = pubid[1:-1]
             elif type == "SYSTEM" and n == 3:
                 name, type, system = self._doctype
                 pubid = None
             else:
                 return
             if hasattr(self.target, "doctype"):
                 self.target.doctype(name, pubid, system[1:-1])
             elif self.doctype != self._XMLParser__doctype:
                 # warn about deprecated call
                 self._XMLParser__doctype(name, pubid, system[1:-1])
                 self.doctype(name, pubid, system[1:-1])
             self._doctype = None
Example #10
0
    def _default(self, text):
        prefix = text[:1]
        if prefix == '&':
            try:
                data_handler = self.target.data
            except AttributeError:
                return

            try:
                data_handler(self.entity[text[1:-1]])
            except KeyError:
                from xml.parsers import expat
                err = expat.error('undefined entity %s: line %d, column %d' %
                                  (text, self.parser.ErrorLineNumber,
                                   self.parser.ErrorColumnNumber))
                err.code = 11
                err.lineno = self.parser.ErrorLineNumber
                err.offset = self.parser.ErrorColumnNumber
                raise err

        else:
            if prefix == '<' and text[:9] == '<!DOCTYPE':
                self._doctype = []
            elif self._doctype is not None:
                if prefix == '>':
                    self._doctype = None
                    return
                text = text.strip()
                if not text:
                    return
                self._doctype.append(text)
                n = len(self._doctype)
                if n > 2:
                    type = self._doctype[1]
                    if type == 'PUBLIC' and n == 4:
                        name, type, pubid, system = self._doctype
                        if pubid:
                            pubid = pubid[1:-1]
                    else:
                        if type == 'SYSTEM' and n == 3:
                            name, type, system = self._doctype
                            pubid = None
                        else:
                            return
                        if hasattr(self.target, 'doctype'):
                            self.target.doctype(name, pubid, system[1:-1])
                        elif self.doctype != self._XMLParser__doctype:
                            self._XMLParser__doctype(name, pubid, system[1:-1])
                            self.doctype(name, pubid, system[1:-1])
                    self._doctype = None
            return
Example #11
0
 def _handle_other(self, text):
     if text.startswith('&'):
         # deal with undefined entities
         try:
             text = chr(entities.name2codepoint[text[1:-1]])
             self._enqueue(TEXT, text)
         except KeyError:
             filename, lineno, offset = self._getpos()
             error = expat.error('undefined entity "%s": line %d, column %d'
                                 % (text, lineno, offset))
             error.code = expat.errors.XML_ERROR_UNDEFINED_ENTITY
             error.lineno = lineno
             error.offset = offset
             raise error
Example #12
0
 def _default(self, text):
     prefix = text[:1]
     if prefix == "&":
         # deal with undefined entities
         try:
             data_handler = self.target.data
         except AttributeError:
             return
         try:
             data_handler(self.entity[text[1:-1]])
         except KeyError:
             from xml.parsers import expat
             err = expat.error("undefined entity %s: line %d, column %d" %
                               (text, self.parser.ErrorLineNumber,
                                self.parser.ErrorColumnNumber))
             err.code = 11  # XML_ERROR_UNDEFINED_ENTITY
             err.lineno = self.parser.ErrorLineNumber
             err.offset = self.parser.ErrorColumnNumber
             raise err
     elif prefix == "<" and text[:9] == "<!DOCTYPE":
         self._doctype = []  # inside a doctype declaration
     elif self._doctype is not None:
         # parse doctype contents
         if prefix == ">":
             self._doctype = None
             return
         text = text.strip()
         if not text:
             return
         self._doctype.append(text)
         n = len(self._doctype)
         if n > 2:
             type = self._doctype[1]
             if type == "PUBLIC" and n == 4:
                 name, type, pubid, system = self._doctype
                 if pubid:
                     pubid = pubid[1:-1]
             elif type == "SYSTEM" and n == 3:
                 name, type, system = self._doctype
                 pubid = None
             else:
                 return
             if hasattr(self.target, "doctype"):
                 self.target.doctype(name, pubid, system[1:-1])
             elif self.doctype != self._XMLParser__doctype:
                 # warn about deprecated call
                 self._XMLParser__doctype(name, pubid, system[1:-1])
                 self.doctype(name, pubid, system[1:-1])
             self._doctype = None
Example #13
0
 def _default(self, text):
     prefix = text[:1]
     if prefix == "&":
         # Deal with undefined entities.
         data_handler = self.target.data
         try:
             data_handler(self.entity[text[1:-1]])
         except KeyError:
             err = expat.error(
                 "undefined entity %s: line %d, column %d" %
                 (text, self.parser.ErrorLineNumber,
                  self.parser.ErrorColumnNumber))
             err.code = 11  # XML_ERROR_UNDEFINED_ENTITY
             err.lineno = self.parser.ErrorLineNumber
             err.offset = self.parser.ErrorColumnNumber
             raise err
Example #14
0
    def _default(self, text):
        prefix = text[:1]
        if prefix == "&":
            try:
                self.target.data(self.entity[text[1:-1]])
            except KeyError:
                from xml.parsers import expat

                err = expat.error(
                    "undefined entity %s: line %d, column %d"
                    % (text, self._parser.ErrorLineNumber, self._parser.ErrorColumnNumber)
                )
                err.code = 11
                err.lineno = self._parser.ErrorLineNumber
                err.offset = self._parser.ErrorColumnNumber
                raise err

        elif prefix == "<" and text[:9] == "<!DOCTYPE":
            self._doctype = []
        elif self._doctype is not None:
            if prefix == ">":
                self._doctype = None
                return
            text = text.strip()
            if not text:
                return
            self._doctype.append(text)
            n = len(self._doctype)
            if n > 2:
                type = self._doctype[1]
                if type == "PUBLIC" and n == 4:
                    name, type, pubid, system = self._doctype
                elif type == "SYSTEM" and n == 3:
                    name, type, system = self._doctype
                    pubid = None
                else:
                    return
                if pubid:
                    pubid = pubid[1:-1]
                if hasattr(self.target, "doctype"):
                    self.target.doctype(name, pubid, system[1:-1])
                elif self.doctype is not self.__doctype:
                    self.__doctype(name, pubid, system[1:-1])
                    self.doctype(name, pubid, system[1:-1])
                self._doctype = None
        return
Example #15
0
 def _default(self, text):
     prefix = text[:1]
     if prefix == '&':
         try:
             data_handler = self.target.data
         except AttributeError:
             return
         try:
             data_handler(self.entity[text[1:-1]])
         except KeyError:
             from xml.parsers import expat
             err = expat.error('undefined entity %s: line %d, column %d' % (text, self.parser.ErrorLineNumber, self.parser.ErrorColumnNumber))
             err.code = 11
             err.lineno = self.parser.ErrorLineNumber
             err.offset = self.parser.ErrorColumnNumber
             raise err
     elif prefix == '<' and text[:9] == '<!DOCTYPE':
         self._doctype = []
     else:
         if prefix == '>':
             self._doctype = None
             return
         text = text.strip()
         if not text:
             return
         self._doctype.append(text)
         n = len(self._doctype)
         if self._doctype is not None and n > 2:
             type = self._doctype[1]
             if type == 'PUBLIC' and n == 4:
                 (name, type, pubid, system) = self._doctype
                 if pubid:
                     pubid = pubid[1:-1]
             elif type == 'SYSTEM' and n == 3:
                 (name, type, system) = self._doctype
                 pubid = None
             else:
                 return
             if hasattr(self.target, 'doctype'):
                 self.target.doctype(name, pubid, system[1:-1])
             elif self.doctype != self._XMLParser__doctype:
                 self._XMLParser__doctype(name, pubid, system[1:-1])
                 self.doctype(name, pubid, system[1:-1])
             self._doctype = None
Example #16
0
 def _default(self, text):
     """ Default handler (same as the ElementTree version)"""
     prefix = text[:1]
     if prefix == "&":
         err = expat.error(
             "undefined entity %s: line %d, column %d" %
             (text, self.parser.ErrorLineNumber,
             self.parser.ErrorColumnNumber)
             )
         err.code = 11 # XML_ERROR_UNDEFINED_ENTITY
         err.lineno = self.parser.ErrorLineNumber
         err.offset = self.parser.ErrorColumnNumber
         raise err
     elif prefix == "<" and text[:9] == "<!DOCTYPE":
         self._doctype = [] # inside a doctype declaration
     elif self._doctype is not None:
         # parse doctype contents
         if prefix == ">":
             self._doctype = None
             return
         text = text.strip()
         if not text:
             return
         self._doctype.append(text)
         n = len(self._doctype)
         if n > 2:
             type_ = self._doctype[1]
             if type_ == "PUBLIC" and n == 4:
                 name, type_, pubid, system = self._doctype
                 if pubid:
                     pubid = pubid[1:-1]
             elif type_ == "SYSTEM" and n == 3:
                 name, type_, system = self._doctype
                 pubid = None
             else:
                 return
             if hasattr(self.target, "doctype"):
                 self.target.doctype(name, pubid, system[1:-1])
             self._doctype = None
Example #17
0
 def _default(self, text):
     """ Default handler (same as the ElementTree version)"""
     prefix = text[:1]
     if prefix == "&":
         err = expat.error(
             "undefined entity %s: line %d, column %d" %
             (text, self.parser.ErrorLineNumber,
             self.parser.ErrorColumnNumber)
             )
         err.code = 11 # XML_ERROR_UNDEFINED_ENTITY
         err.lineno = self.parser.ErrorLineNumber
         err.offset = self.parser.ErrorColumnNumber
         raise err
     elif prefix == "<" and text[:9] == "<!DOCTYPE":
         self._doctype = [] # inside a doctype declaration
     elif self._doctype is not None:
         # parse doctype contents
         if prefix == ">":
             self._doctype = None
             return
         text = text.strip()
         if not text:
             return
         self._doctype.append(text)
         n = len(self._doctype)
         if n > 2:
             type_ = self._doctype[1]
             if type_ == "PUBLIC" and n == 4:
                 name, type_, pubid, system = self._doctype
                 if pubid:
                     pubid = pubid[1:-1]
             elif type_ == "SYSTEM" and n == 3:
                 name, type_, system = self._doctype
                 pubid = None
             else:
                 return
             if hasattr(self.target, "doctype"):
                 self.target.doctype(name, pubid, system[1:-1])
             self._doctype = None
Example #18
0
 def _default(self, text):
     prefix = text[:1]
     if prefix == "&":
         # deal with undefined entities
         try:
             self._target.data(self.entity[text[1:-1]])
         except KeyError:
             from xml.parsers import expat
             raise expat.error(
                 "undefined entity %s: line %d, column %d" %
                 (text, self._parser.ErrorLineNumber,
                 self._parser.ErrorColumnNumber)
                 )
     elif prefix == "<" and text[:9] == "<!DOCTYPE":
         self._doctype = [] # inside a doctype declaration
     elif self._doctype is not None:
         # parse doctype contents
         if prefix == ">":
             self._doctype = None
             return
         text = string.strip(text)
         if not text:
             return
         self._doctype.append(text)
         n = len(self._doctype)
         if n > 2:
             type = self._doctype[1]
             if type == "PUBLIC" and n == 4:
                 name, type, pubid, system = self._doctype
             elif type == "SYSTEM" and n == 3:
                 name, type, system = self._doctype
                 pubid = None
             else:
                 return
             if pubid:
                 pubid = pubid[1:-1]
             self.doctype(name, pubid, system[1:-1])
             self._doctype = None
Example #19
0
 def _default(self, text):
     prefix = text[:1]
     if prefix == "&":
         # deal with undefined entities
         try:
             self._target.data(self.entity[text[1:-1]])
         except KeyError:
             from xml.parsers import expat
             raise expat.error(
                 "undefined entity %s: line %d, column %d" %
                 (text, self._parser.ErrorLineNumber,
                 self._parser.ErrorColumnNumber)
                 )
     elif prefix == "<" and text[:9] == "<!DOCTYPE":
         self._doctype = [] # inside a doctype declaration
     elif self._doctype is not None:
         # parse doctype contents
         if prefix == ">":
             self._doctype = None
             return
         text = string.strip(text)
         if not text:
             return
         self._doctype.append(text)
         n = len(self._doctype)
         if n > 2:
             type = self._doctype[1]
             if type == "PUBLIC" and n == 4:
                 name, type, pubid, system = self._doctype
             elif type == "SYSTEM" and n == 3:
                 name, type, system = self._doctype
                 pubid = None
             else:
                 return
             if pubid:
                 pubid = pubid[1:-1]
             self.doctype(name, pubid, system[1:-1])
             self._doctype = None