11.11 Standard Module xmllib

  

このモジュールは XML(eXtended Markup Language)フォーマットのテキストファイルを 解析するための基本を提供するXMLParserクラスを定義しています。

XMLParser ()
XMLParserクラスのインスタンスの生成には引数は必要ありません。

このクラスは以下のメソッドを提供します。

reset ()
インスタンスをリセットします。 処理されていないデータは失われます。 これはインスタンス生成時に暗に呼び出されます。

setnomoretags ()
タグの処理を中止します。 これ以降のすべての入力はリテラル(CDATA)として扱われます。

setliteral ()
リテラルモード(CDATAモード)に入ります。

feed (data)
close() is called. --> テキストをパーサに送り込みます。 入力が完全な要素から構成されていれば処理されます。 不完全なデータの場合、すべてが読み込まれるかclose()が 呼び出されるまでバッファリングされます。

close ()
EOF(end-of-file)を読み込んだかのように、バッファのデータを強制的に処理します。 このメソッドは入力の終わりに定義される追加の派生クラスにより 再定義されることがありますが、再定義されたバージョンは常にclose()を 呼び出します。

translate_references (data)
data中の実体とキャラクタ参照をすべて変換し、 変換された文字列を返します。

handle_xml (encoding, standalone)
このメソッドは"<?xml ...?>"タグが処理されるときに呼び出されます。 引数はタグ内のエンコードされた値と単独の属性です。 これらはどちらもオプションです。 デフォルトではそれぞれ、Noneおよび文字列'no'handle_xml()に渡されます。

handle_doctype (tag, data)
このメソッドは "<!DOCTYPE...>"タグが処理されるときに呼び出されます。 引数はルート要素の名前と、 ルート要素の名前の後ろの空白の次の、 解釈されていないタグの中身です。

handle_starttag (tag, method, attributes)
このメソッドはstart_tag()メソッドが定義されている開始タグを 取り扱うために呼び出されます。 tagはタグ名で、methodは開始タグの意味解析をサポートするために 使われるboundメソッドです。 attributesは属性の辞書で、 タグの<>カッコのなかにある キー(name)と、値(value)です。 value中のキャラクタと実体参照は、解釈されます。 例えば、タグ<A HREF="http://www.cwi.nl/"> に対してはこのメソッドは handle_starttag('A', self.start_A, {'HREF': 'http://www.cwi.nl/'}) として呼び出されます。 基本的な実装では単に、methodを一つだけの引数attributesで呼び出します。

handle_endtag (tag, method)
このメソッドは、end_tag()メソッドが定義されているときに、 終了タグを取り扱うために呼び出されます。 tagはタグ名で、methodは終了タグの意味解析をサポートするために使われる boundメソッドです。 もし終了タグに対するend_tag()が定義されていなければ、 このハンドラは呼び出されません。 基本的な実装では、単にmethodが呼び出されます。

handle_data (data)
このメソッドは任意のデータを処理するために呼び出されます。 これは派生クラスによってオーバーライドされます。 ベースクラスの実装は何もしません。

handle_charref (ref)
このメソッドは"&#ref;"形式の キャラクタ参照を処理するために呼び出されます。 refは十進でも"x"を頭につけた十六進数でも構いません。 ベースの実装では、refは0-255でなければなりません。 これは対応するASCII文字に変換され、 この文字を引数にhandle_data()を呼び出します。 refが範囲外のとき、メソッドunknown_charref(ref)が エラーを取り扱うために呼び出されます。 ASCII以外のキャラクタ参照をサポートするためには、 このメソッドをサブクラスでオーバーライドしなければなりません。

handle_entityref (ref)
このメソッドは、一般的な実体参照を処理するために呼び出されます。 形式は"&ref;"で、refは一般的な実体参照です。 これはインスタンス(またはクラス)変数entitydefs (実体名と対応する変換のマッピング) 中のrefを探します。 変換が見つかれば、handle_data()を呼び出します。 そうでなければunknown_entityref(ref)を呼び出します。 デフォルトのentitydefs&amp;, &apos, &gt;, &lt; および&quot;の変換を定義しています。

handle_comment (comment)
このメソッドはコメントを検出したときに呼び出されます。 commentは、デリミタ"<!-"と"->"に囲まれたテキストを含む 文字列です。 ただし、デリミタ自身は含まれません。 例えば、 "<!-text->"の場合は引数'text'で呼び出されます。 デフォルトでは何もしません。

handle_cdata (data)
このメソッドはCDATA要素が検出されたときに呼び出されます。 dataは"<![CDATA["と"]]>"デリミタの間のテキストを 含む文字列です。 ただし、デリミタ自身は含まれません。 例えば、実体"<![CDATA[text]]>"の場合は'text'を 引数として呼び出されます。 デフォルトでは何もしないので、オーバーライドして使用します。

handle_proc (name, data)
このメソッドは、処理命令(PI)が出現したときに呼び出されます。 nameは PIのターゲットで、 dataはPIターゲットと閉じるデリミタの間のテキストを含む文字列ですが、 デリミタ自身は含みません。 例えば、"<?XML text?>"は'XML' and 'text' という引数でこのメソッドを呼び出すことになります。 デフォルトでは何もしません。 ドキュメントが"<?xml...?>"で始まっているとき、 handle_xml()が呼び出されることにも注意してください。

handle_special (data)
このメソッドは、宣言が出現したときに呼び出されます。 dataはデリミタ"<!"と">"に 囲まれたテキストを含む文字列ですが、デリミタ自身は含みません。 例えば、実体"<!ENTITY text>"に対しては、 'ENTITY text'という引数でこのメソッドが呼び出されます。 デフォルトでは何もしません。 "<!DOCTYPE ...>"がドキュメントの先頭にあるとき、 これは単独に扱われることに注意してください。

syntax_error (message)
このメソッドは、文法エラーが検出されたときに呼び出されます。 messageは、何がまずいかの説明です。 デフォルトでは、RuntimeError例外を発生します。 このメソッドがオーバーライドされると、戻ることが許可されます。 このメソッドはエラーから回復可能な場合のみ呼び出されます。 回復不可能なエラーの場合は、syntax_error()を呼び出すことなく、 RuntimeErrorが発生します。

unknown_starttag (tag, attributes)
このメソッドは、定義されていない開始タグを処理するために呼び出されます。 これは派生クラスによって意図的にオーバーライドされます。 ベースクラスの実装は何もしません。

unknown_endtag (tag)
このメソッドは、定義されていない終了タグを処理するために呼び出されます。 これは派生クラスによって意図的にオーバーライドされます。 ベースクラスの実装は何もしません。

unknown_charref (ref)
このメソッドは、解決できない数値キャラクタ参照を処理するために呼び出されます。 これは派生クラスによって意図的にオーバーライドされます。 ベースクラスの実装は何もしません。

unknown_entityref (ref)
このメソッドは、定義されていない実体参照を処理するために呼び出されます。 これは派生クラスによって意図的にオーバーライドされます。 ベースクラスの実装は何もしません。

上に述べたメソッドのオーバーライドや拡張は別として、 派生クラスはつぎに述べるような特別なタグの処理を定義する メソッドや変数を定義することがあります。 入力ストリーム中のタグ名は、大文字小文字を区別し、 メソッド名のtagは正確である必要があります。

start_tag (attributes)
このメソッドは、開始タグtagを処理するために呼び出されます。 attributesは上のhandle_starttag()で述べたのと同じ意味です。 実は、handle_starttag()のベースの実装では、 このメソッドを呼び出しています。

end_tag ()
このメソッドは、終了タグtagを処理するために呼び出されます。

tag_attributes
もし、クラスまたはインスタンス変数tag_attributesが 存在すれば、それはリストか辞書になります。 リストであれば、リストの要素は要素tagに対する適切な属性です。 辞書であれば、キーが要素tagの属性になり、 値が属性のデフォルト値か、デフォルトが存在しなければNoneとなります。 さらに、属性がタグ中に存在すれば、handle_starttag()unknown_starttag()に渡された属性辞書は、 デフォルトを持つすべての属性の値を含んでいます。

guido@python.org