27 from xml.sax 
import make_parser,handler
 
   28 from xml.sax.xmlreader 
import InputSource
 
   29 import xml.sax.saxutils
 
   30 from element 
import Element
 
   31 from namespaces 
import OFFICENS
 
   33     from cStringIO 
import StringIO
 
   35     from io 
import StringIO
 
   44        (OFFICENS, 
'automatic-styles'), (OFFICENS, 
'body'),
 
   45        (OFFICENS, 
'font-face-decls'), (OFFICENS, 
'master-styles'),
 
   46        (OFFICENS, 
'meta'), (OFFICENS, 
'scripts'),
 
   47        (OFFICENS, 
'settings'), (OFFICENS, 
'styles') )
 
   56         if self.
parse == 
False:
 
   58         self.data.append(data)
 
   63         if self.doc._parsing != 
"styles.xml" and tag == (OFFICENS, 
'font-face-decls'):
 
   65         if self.
parse == 
False:
 
   70         content = 
''.join(self.
data)
 
   71         if len(content.strip()) > 0:
 
   72             self.parent.addText(content, check_grammar=
False)
 
   76         for (att,value) 
in attrs.items():
 
   79             e = Element(qname = tag, qattributes=attrdict, check_grammar=
False)
 
   81         except AttributeError 
as v:
 
   82             print (
"Error: %s" % v)
 
   84         if tag == (OFFICENS, 
'automatic-styles'):
 
   85             e = self.doc.automaticstyles
 
   86         elif tag == (OFFICENS, 
'body'):
 
   88         elif tag == (OFFICENS, 
'master-styles'):
 
   89             e = self.doc.masterstyles
 
   90         elif tag == (OFFICENS, 
'meta'):
 
   92         elif tag == (OFFICENS,
'scripts'):
 
   94         elif tag == (OFFICENS,
'settings'):
 
   96         elif tag == (OFFICENS,
'styles'):
 
   98         elif self.doc._parsing == 
"styles.xml" and tag == (OFFICENS, 
'font-face-decls'):
 
   99             e = self.doc.fontfacedecls
 
  100         elif hasattr(self,
'parent'):
 
  101             self.parent.addElement(e, check_grammar=
False)
 
  106         if self.
parse == 
False:
 
  109         str = 
''.join(self.
data)
 
  110         if len(str.strip()) > 0:
 
  111             self.curr.addText(str, check_grammar=
False)
 
  113         self.
curr = self.curr.parentNode
 
Extract headings from content.xml of an ODT file.