Similar to escape(), but also prepares data to be
used as an attribute value. The return value is a quoted version of
data with any additional required replacements.
quoteattr() will select a quote character based on the
content of data, attempting to avoid encoding any quote
characters in the string. If both single- and double-quote
characters are already in data, the double-quote characters
will be encoded and data will be wrapped in doule-quotes. The
resulting string can be used directly as an attribute value:

This class implements the ContentHandler interface by
writing SAX events back into an XML document. In other words, using
an XMLGenerator as the content handler will reproduce the
original document being parsed. out should be a file-like
object which will default to sys.stdout. encoding is the
encoding of the output stream which defaults to 'iso-8859-1'.

This class is designed to sit between an XMLReader and the
client application's event handlers. By default, it does nothing
but pass requests up to the reader and events on to the handlers
unmodified, but subclasses can override specific methods to modify
the event stream or the configuration requests as they pass through.

This function takes an input source and an optional base URL and
returns a fully resolved InputSource object ready for
reading. The input source can be given as a string, a file-like
object, or an InputSource object; parsers will use this
function to implement the polymorphic source argument to their
parse() method.