17db96d56Sopenharmony_ci:mod:`xml.sax.saxutils` --- SAX Utilities
27db96d56Sopenharmony_ci=========================================
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci.. module:: xml.sax.saxutils
57db96d56Sopenharmony_ci   :synopsis: Convenience functions and classes for use with SAX.
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ci.. moduleauthor:: Lars Marius Garshol <larsga@garshol.priv.no>
87db96d56Sopenharmony_ci.. sectionauthor:: Martin v. Löwis <martin@v.loewis.de>
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci**Source code:** :source:`Lib/xml/sax/saxutils.py`
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci--------------
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ciThe module :mod:`xml.sax.saxutils` contains a number of classes and functions
157db96d56Sopenharmony_cithat are commonly useful when creating SAX applications, either in direct use,
167db96d56Sopenharmony_cior as base classes.
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_ci.. function:: escape(data, entities={})
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ci   Escape ``'&'``, ``'<'``, and ``'>'`` in a string of data.
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ci   You can escape other strings of data by passing a dictionary as the optional
247db96d56Sopenharmony_ci   *entities* parameter.  The keys and values must all be strings; each key will be
257db96d56Sopenharmony_ci   replaced with its corresponding value.  The characters ``'&'``, ``'<'`` and
267db96d56Sopenharmony_ci   ``'>'`` are always escaped, even if *entities* is provided.
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ci.. function:: unescape(data, entities={})
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci   Unescape ``'&amp;'``, ``'&lt;'``, and ``'&gt;'`` in a string of data.
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci   You can unescape other strings of data by passing a dictionary as the optional
347db96d56Sopenharmony_ci   *entities* parameter.  The keys and values must all be strings; each key will be
357db96d56Sopenharmony_ci   replaced with its corresponding value.  ``'&amp'``, ``'&lt;'``, and ``'&gt;'``
367db96d56Sopenharmony_ci   are always unescaped, even if *entities* is provided.
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci
397db96d56Sopenharmony_ci.. function:: quoteattr(data, entities={})
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ci   Similar to :func:`escape`, but also prepares *data* to be used as an
427db96d56Sopenharmony_ci   attribute value.  The return value is a quoted version of *data* with any
437db96d56Sopenharmony_ci   additional required replacements. :func:`quoteattr` will select a quote
447db96d56Sopenharmony_ci   character based on the content of *data*, attempting to avoid encoding any
457db96d56Sopenharmony_ci   quote characters in the string.  If both single- and double-quote characters
467db96d56Sopenharmony_ci   are already in *data*, the double-quote characters will be encoded and *data*
477db96d56Sopenharmony_ci   will be wrapped in double-quotes.  The resulting string can be used directly
487db96d56Sopenharmony_ci   as an attribute value::
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci      >>> print("<element attr=%s>" % quoteattr("ab ' cd \" ef"))
517db96d56Sopenharmony_ci      <element attr="ab ' cd &quot; ef">
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_ci   This function is useful when generating attribute values for HTML or any SGML
547db96d56Sopenharmony_ci   using the reference concrete syntax.
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_ci.. class:: XMLGenerator(out=None, encoding='iso-8859-1', short_empty_elements=False)
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ci   This class implements the :class:`~xml.sax.handler.ContentHandler` interface
607db96d56Sopenharmony_ci   by writing SAX
617db96d56Sopenharmony_ci   events back into an XML document. In other words, using an :class:`XMLGenerator`
627db96d56Sopenharmony_ci   as the content handler will reproduce the original document being parsed. *out*
637db96d56Sopenharmony_ci   should be a file-like object which will default to *sys.stdout*. *encoding* is
647db96d56Sopenharmony_ci   the encoding of the output stream which defaults to ``'iso-8859-1'``.
657db96d56Sopenharmony_ci   *short_empty_elements* controls the formatting of elements that contain no
667db96d56Sopenharmony_ci   content:  if ``False`` (the default) they are emitted as a pair of start/end
677db96d56Sopenharmony_ci   tags, if set to ``True`` they are emitted as a single self-closed tag.
687db96d56Sopenharmony_ci
697db96d56Sopenharmony_ci   .. versionadded:: 3.2
707db96d56Sopenharmony_ci      The *short_empty_elements* parameter.
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci
737db96d56Sopenharmony_ci.. class:: XMLFilterBase(base)
747db96d56Sopenharmony_ci
757db96d56Sopenharmony_ci   This class is designed to sit between an
767db96d56Sopenharmony_ci   :class:`~xml.sax.xmlreader.XMLReader` and the client
777db96d56Sopenharmony_ci   application's event handlers.  By default, it does nothing but pass requests up
787db96d56Sopenharmony_ci   to the reader and events on to the handlers unmodified, but subclasses can
797db96d56Sopenharmony_ci   override specific methods to modify the event stream or the configuration
807db96d56Sopenharmony_ci   requests as they pass through.
817db96d56Sopenharmony_ci
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ci.. function:: prepare_input_source(source, base='')
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_ci   This function takes an input source and an optional base URL and returns a
867db96d56Sopenharmony_ci   fully resolved :class:`~xml.sax.xmlreader.InputSource` object ready for
877db96d56Sopenharmony_ci   reading.  The input source can be given as a string, a file-like object, or
887db96d56Sopenharmony_ci   an :class:`~xml.sax.xmlreader.InputSource` object; parsers will use this
897db96d56Sopenharmony_ci   function to implement the polymorphic *source* argument to their
907db96d56Sopenharmony_ci   :meth:`parse` method.
917db96d56Sopenharmony_ci
92