def handle_data(self, text, escape=1): # Called for each block of plain text, i.e. outside of any tag and # not containing any character or entity references if not self.elementstack: return if escape and self.contentparams.get('type') == 'application/xhtml+xml': text = _xmlescape(text) self.elementstack[-1][2].append(text)
def handle_data(self, text, escape=1): # called for each block of plain text, i.e. outside of any tag and # not containing any character or entity references if not self.elementstack: return if escape and self.contentparams.get('type') == 'application/xhtml+xml': text = _xmlescape(text) self.elementstack[-1][2].append(text)
def stripcdata(txt): i = txt.find('<![CDATA[') if i != -1: k = txt.find(']]>', i) if k == -1: return txt return _xmlescape(txt[i+9:k], 0) return txt
def stripcdata(txt): i = txt.find('<![CDATA[') if i != -1: k = txt.find(']]>', i) if k == -1: return txt return _xmlescape(txt[i + 9:k], 0) return txt
def parse_declaration(self, i): # override internal declaration handler to handle CDATA blocks if self.rawdata[i:i+9] == '<![CDATA[': k = self.rawdata.find(']]>', i) if k == -1: # CDATA block began but didn't finish k = len(self.rawdata) return k self.handle_data(_xmlescape(self.rawdata[i+9:k]), 0) return k+3 else: k = self.rawdata.find('>', i) if k >= 0: return k+1 else: # We have an incomplete CDATA block. return k
def parse_declaration(self, i): # override internal declaration handler to handle CDATA blocks if self.rawdata[i:i + 9] == '<![CDATA[': k = self.rawdata.find(']]>', i) if k == -1: # CDATA block began but didn't finish k = len(self.rawdata) return k self.handle_data(_xmlescape(self.rawdata[i + 9:k]), 0) return k + 3 else: k = self.rawdata.find('>', i) if k >= 0: return k + 1 else: # We have an incomplete CDATA block. return k
def strattrs(self, attrs): return ''.join([' %s="%s"' % (t[0],_xmlescape(t[1],{'"':'"'})) for t in attrs])
def strattrs(self, attrs): return ''.join([ ' %s="%s"' % (t[0], _xmlescape(t[1], {'"': '"'})) for t in attrs ])
def xmlescape(text): """Fixup wrapper to make C{xml.sax.saxutils.escape} work with bytes""" return (_xmlescape(text.decode('latin1')).encode('latin1') if isinstance(text, bytes) else _xmlescape(text))