# 13.10 `xml.sax.handler` -- SAX ハンドラの基底クラス

バージョン2.0 以降で新規追加された 仕様です。

SAX API はコンテント・ハンドラ、DTD ハンドラ、エラー・ハンドラ、エンティ ティ・リゾルバという4つのハンドラを規定しています。通常アプリケーショ ン側で実装する必要があるのは、これらのハンドラが発生させるイベントのう ち、処理したいものへのインターフェースだけです。インターフェースは1つ のオブジェクトにまとめることも、複数のオブジェクトに分けることも可能で す。ハンドラはすべてのメソッドがデフォルトで実装されるように、 `xml.sax` で提供される基底クラスを継承しなくてはなりません。

class `ContentHandler`
  アプリケーションにとって最も重要なメインの SAX コールバック・インター フェースです。このインターフェースで発生するイベントの順序はドキュメ ント内の情報の順序を反映しています。

class `DTDHandler`
  DTD イベントのハンドラです。

  未構文解析エンティティや属性など、パースに必要な DTD イベントの抽出 だけをおこなうインターフェースです。

class `EntityResolver`
  エンティティ解決用の基本インターフェースです。このインターフェースを 実装したオブジェクトを作成しパーサに登録することで、パーサはすべての 外部エンティティを解決するメソッドを呼び出すようになります。

class `ErrorHandler`
  エラーや警告メッセージをアプリケーションに通知するためにパーサが使用 するインターフェースです。このオブジェクトのメソッドが、エラーをただ ちに例外に変換するか、あるいは別の方法で処理するかの制御をしています。

これらのクラスに加え、`xml.sax.handler` は機能やプロパティ名の シンボル定数を提供しています。

`feature_namespaces`
  値: `"http://xml.org/sax/features/namespaces"`
  true: 名前空間の処理を有効にする。
  false: オプションで名前空間の処理を無効にする (暗黙に namespace-prefixes も無効にする - デフォルト )。
  アクセス: (パース時) リードオンリー; (パース時以外) 読み書き可

`feature_namespace_prefixes`
  値: `"http://xml.org/sax/features/namespace-prefixes"`
  true: 名前空間宣言で用いられているオリジナルのプリフィックス名と属性 を通知する。
  false: 名前空間宣言で用いられている属性を通知しない。 オプションでオリジナルのプリフィックス名も通知しない(デフォルト)。
  アクセス: (パース時) リードオンリー; (パース時以外) 読み書き可

`feature_string_interning`
  値: `"http://xml.org/sax/features/string-interning"` true: すべての要素名、プリフィックス、属性、名前、名前空間、URI、 ローカル名を組込みの intern 関数を使ってシンボルに登録する。
  false: 名前のすべてを必ずしもシンボルに登録しない(デフォルト)。
  アクセス: (パース時) リードオンリー; (パース時以外) 読み書き可

`feature_validation`
  値: `"http://xml.org/sax/features/validation"`
  true: すべての妥当性検査エラーを通知する(external-general-entities とexternal-parameter-entities が暗黙の前提になっている)。
  false: 妥当性検査エラーを通知しない。
  アクセス: (パース時) リードオンリー; (パース時以外) 読み書き可

`feature_external_ges`
  値: `"http://xml.org/sax/features/external-general-entities"`
  true: 外部一般(テキスト)エンティティの取り込みをおこなう。
  false: 外部一般エンティティを取り込まない。
  アクセス: (パース時) リードオンリー; (パース時以外) 読み書き可

`feature_external_pes`
  値: `"http://xml.org/sax/features/external-parameter-entities"`
  true: 外部 DTD サブセットを含むすべての外部パラメータ・エンティティ の取り込みをおこなう。
  false: 外部パラーメタ・エンティティおよび外部 DTD サブセットを取り込 まない。
  アクセス: (パース時) リードオンリー; (パース時以外) 読み書き可

`all_features`
  すべての機能の一覧。

`property_lexical_handler`
  値: `"http://xml.org/sax/properties/lexical-handler"`
  data type: xml.sax.sax2lib.LexicalHandler (Python 2 では未サポート)
  description: コメントなど字句解析イベント用のオプション拡張ハンドラ。
  アクセス: 読み書き可

`property_declaration_handler`
  Value: `"http://xml.org/sax/properties/declaration-handler"`
  data type: xml.sax.sax2lib.DeclHandler (Python 2 では未サポート)
  description: ノーテーションや未解析エンティティをのぞく DTD 関連イベン ト用のオプション拡張ハンドラ。
  access: read/write

`property_dom_node`
  Value: `"http://xml.org/sax/properties/dom-node"`
  data type: org.w3c.dom.Node (Python 2 では未サポート)
  description: パース時は DOM イテレータにおけるカレント DOM ノード、 非パース時はルート DOM ノードを指す。
  アクセス: (パース時) リードオンリー; (パース時以外) 読み書き可

`property_xml_string`
  値: `"http://xml.org/sax/properties/xml-string"`
  データ型: 文字列
  説明: カレント・イベントの元になったリテラル文字列
  アクセス: リードオンリー

`all_properties`
  既知のプロパティ名の全リスト。