###
4 DocumentType オブジェクト

文書で宣言されている記法 (notation) やエンティティ (entity) に関する (外部サブセット(external subset) がパーザから利用でき、情報 を提供できる場合にはそれも含めた) 情報は、 `DocumentType` オブジェクトから手に入れることができます。文書の `DocumentType` は、`Document` オブジェクトの `doctype` 属性で入手することが できます; 文書の `DOCTYPE` 宣言がない場合、文書の `doctype` 属性は、このインタフェースを持つインスタンスの代わりに `None` に設定されます。

`DocumentType` は `Node` を特殊化したもので、以下の 属性を加えています:

`publicId`
  文書型定義 (document type definition) の外部サブセットに対する 公開識別子 (public identifier) です。文字列または `None` になります。

`systemId`
  文書型定義 (document type definition) の外部サブセットに対する システム識別子 (system identifier) です。文字列の URI または `None` になります。

`internalSubset`
  ドキュメントの完全な内部サブセットを与える文字列です。 サブセットを囲むブラケットは含みません。ドキュメントが内部サブセット を持たない場合、この値は `None` です。

`name`
  `DOCTYPE` 宣言でルート要素の名前が与えられている場合、その 値になります。

`entities`
  外部エンティティの定義を与える `NamedNodeMap` です。 複数回定義されているエンティティに対しては、最初の定義だけが 提供されます (その他は XML 勧告での要求仕様によって無視されます)。 パーザによって情報が提供されないか、エンティティが定義されていない 場合には、この値は `None` になることがあります。

`notations`
  記法の定義を与える `NamedNodeMap` です。 複数回定義されている記法名に対しては、最初の定義だけが 提供されます (その他は XML 勧告での要求仕様によって無視されます)。 パーザによって情報が提供されないか、エンティティが定義されていない 場合には、この値は `None` になることがあります。