\section{\module{xml.sax.saxutils} ---
         SAX Utilities}

\declaremodule{standard}{xml.sax.saxutils}
\modulesynopsis{Convenience functions and classes for use with SAX.}
\sectionauthor{Martin v. L\"owis}{martin@v.loewis.de}
\moduleauthor{Lars Marius Garshol}{larsga@garshol.priv.no}

\versionadded{2.0}


The module \module{xml.sax.saxutils} contains a number of classes and
functions that are commonly useful when creating SAX applications,
either in direct use, or as base classes.

\begin{funcdesc}{escape}{data\optional{, entities}}
  Escape \character{\&}, \character{<}, and \character{>} in a string
  of data.

  You can escape other strings of data by passing a dictionary as the
  optional \var{entities} parameter.  The keys and values must all be
  strings; each key will be replaced with its corresponding value.
\end{funcdesc}

\begin{funcdesc}{unescape}{data\optional{, entities}}
  Unescape \character{\&amp;}, \character{\&lt;}, and \character{\&gt;}
  in a string of data.

  You can unescape other strings of data by passing a dictionary as the
  optional \var{entities} parameter.  The keys and values must all be
  strings; each key will be replaced with its corresponding value.

  \versionadded{2.3}
\end{funcdesc}

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

\begin{verbatim}
>>> print "<element attr=%s>" % quoteattr("ab ' cd \" ef")
<element attr="ab ' cd &quot; ef">
\end{verbatim}

  This function is useful when generating attribute values for HTML or
  any SGML using the reference concrete syntax.
  \versionadded{2.2}
\end{funcdesc}

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

\begin{classdesc}{XMLFilterBase}{base}
  This class is designed to sit between an \class{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.
\end{classdesc}

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