19.13. "xml.sax.saxutils" --- SAX ユーティリティ
************************************************

バージョン 2.0 で追加.

モジュール "xml.sax.saxutils" には SAX アプリケーションの作成に役立つ
多くの関数やクラスも含まれており、直接利用したり、基底クラスとして使う
ことができます。

xml.sax.saxutils.escape(data[, entities])

   文字列データ内の "'&'", "'<'", "'>'" をエスケープします。

   オプションの *entities* パラメータに辞書を渡すことで、そのほかの文
   字をエスケープさせることも可能です。辞書のキーと値はすべて文字列で
   、キーに指定された文字は対応する値に置換されます。"'&'", "'<'",
   "'>'" は *entities* が与えられるかどうかに関わらず、常にエスケープ
   します。

xml.sax.saxutils.unescape(data[, entities])

   エスケープされた文字列 "'&amp;'", "'&lt;'", "'&gt;'" を元の文字に戻
   します。

   オプションの *entities* パラメータに辞書を渡すことで、そのほかの文
   字をエスケープさせることも可能です。辞書のキーと値はすべて文字列で
   、キーに指定された文字は対応する値に置換されます。"'&amp;'",
   "'&lt;'", "'&gt;'" は *entities* が与えられるかどうかに関わらず、常
   に元の文字に戻します。

   バージョン 2.3 で追加.

xml.sax.saxutils.quoteattr(data[, entities])

   "escape()" に似ていますが、 *data* は属性値の作成に使われます。戻り
   値はクォート済みの *data* で、置換する文字の追加も可能です。
   "quoteattr()" はクォートすべき文字を *data* の文脈から判断し、クォ
   ートすべき文字を残さないように文字列をエンコードします。 *data* の
   中にシングル・クォート、ダブル・クォートがあれば、両方ともエンコー
   ドし、全体をダブルクォートで囲みます。戻り値の文字列はそのままで属
   性値として利用できます:

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

   この関数は参照具象構文を使って、 HTML や SGML の属性値を生成するの
   に便利です。

   バージョン 2.2 で追加.

class xml.sax.saxutils.XMLGenerator([out[, encoding]])

   このクラスは "ContentHandler" インターフェースの実装で、SAX イベン
   トを XML ドキュメントに書き戻します。つまり、 "XMLGenerator" をコン
   テント・ハンドラとして用いると、パースしたオリジナル・ドキュメント
   の複製が作れるのです。 *out* に指定するのはファイル風のオブジェクト
   で、デフォルトは *sys.stdout* です。 *encoding* は出力ストリームの
   エンコーディングで、デフォルトは "'iso-8859-1'" です。

class xml.sax.saxutils.XMLFilterBase(base)

   このクラスは "XMLReader" とクライアント・アプリケーションのイベント
   ・ハンドラとの間に位置するものとして設計されています。デフォルトで
   は何もせず、ただリクエストをリーダに、イベントをハンドラに、それぞ
   れ加工せず渡すだけです。しかし、サブクラスでメソッドをオーバーライ
   ドすると、イベント・ストリームやリクエストを加工してから渡すように
   変更可能です。

xml.sax.saxutils.prepare_input_source(source[, base])

   この関数は引き数に入力ソース、オプションとして URL を取り、読み取り
   可能な解決済み "InputSource" オブジェクトを返します。入力ソースは文
   字列、ファイル風オブジェクト、 "InputSource" のいずれでも良く、この
   関数を使うことで、パーサは様々な *source* パラメータを "parse()" に
   渡すことが可能になります。
