##
13.7.3 minidom と DOM 標準

`xml.dom.minidom` モジュールは、本質的には DOM 1.0 互換の DOM に、いくつかの DOM 2 機能 (主に名前空間 機能) を追加したものです。

Python における DOM インタフェースは率直なものです。以下の 対応付け規則が適用されます:

- インタフェースはインスタンスオブジェクトを介してアクセスされます。 アプリケーション自身から、クラスをインスタンス化してはなりません; `Document` オブジェクト上で利用可能な生成関数 (creator function) を使わなければなりません。導出インタフェースでは基底インタフェースの 全ての演算 (および属性) に加え、新たな演算をサポートします。

- 演算はメソッドとして使われます。DOM では `in` パラメタ のみを使うので、引数は通常の順番 (左から右へ) で渡されます。 オプション引数はありません。`void` 演算は`None` を返します。

- IDL 属性はインスタンス属性に対応付けられます。OMG IDL 言語 における Python への対応付けとの互換性のために、属性 `foo` はアクセサメソッド `_get_foo()` および `_set_foo()` でもアクセスできます。 `readonly` 属性は変更しては なりません; とはいえ、これは実行時には強制されません。

- `short int` 、 `unsigned int` 、 `unsigned long long` 、および `boolean` 型は、全て Python 整数 オブジェクトに対応付けられます。

- `DOMString` 型は Python 文字列型に対応付けられます。 `xml.dom.minidom` ではバイト文字列 (byte string) および Unicode 文字列のどちらかに対応づけられますが、通常 Unicode 文字列 を生成します。`DOMString` 型の値は、W3C の DOM 仕様で、IDL `null` 値になってもよいとされている場所では `None` に なることもあります。

- `const` 宣言を行うと、 (`xml.dom.minidom.Node.PROCESSING_INSTRUCTION_NODE` のように) 対応するスコープ内の変数に対応付けを行います; これらは変更してはなりません。

- `DOMException` は現状では `xml.dom.minidom` でサポートされていません。その代わり、`xml.dom.minidom` は、`TypeError` や `AttributeError` といった 標準の Python 例外を使います。

- `NodeList` オブジェクトは Python の組み込みリスト型を 使って実装されています。 Python 2.2 からは、これらのオブジェクトは DOM 仕様で定義されたインタフェースを提供していますが、それ以前の バージョンの Python では、公式の API をサポートしていません。 しかしながら、これらの API は W3C 勧告で定義されたインタフェース よりも ``Python 的な'' ものになっています。

以下のインタフェースは `xml.dom.minidom` では全く実装 されていません:

- `DOMTimeStamp`

- `DocumentType` (added in Python 2.1)

- `DOMImplementation` (added in Python 2.1)

- `CharacterData`

- `CDATASection`

- `Notation`

- `Entity`

- `EntityReference`

- `DocumentFragment`

これらの大部分は、ほとんどの DOM のユーザにとって一般的な用途として有用 とはならないような XML 文書内の情報を反映しています。