付録A.1 DOMパーサ,およびSAXパーサ共通の動作の差異

DOMパーサ,およびSAXパーサ共通の動作の差異を次の表に示します。

表A-1 DOMパーサ,およびSAXパーサ共通の動作の差異

項番条件XML Processorの動作
バージョン06-00の場合バージョン07-00以降の場合
1パーサがInputSourceオブジェクトを使用してバイトストリームを読み込む場合XML仕様のアルゴリズムを用いて文字エンコーディングを自動検出します。setEncodingメソッドで指定されたエンコーディングを優先します。
2「EUCで保存されているがXML宣言にencoding指定が存在しないXML文書」など,エンコーディングが不正な状態で解析した場合IOException例外が発生します。SAXException例外が発生します。
3parseメソッドの引数uriまたは引数systemIdに空文字列を指定した場合IOException例外が発生します。SAXException例外が発生します。
4XML文書のDOCTYPE宣言のシステム識別子に空文字列を指定した場合IOException例外が発生します。SAXException例外が発生します。
5DTDでEMPTYと宣言した要素の内容がコメントだけの場合妥当性検証時にエラーになりません。妥当性検証時にエラーになります。
6U+D800~U+DFFFを含み,属性値またはテキストに指定できないXML文書をパースした場合(ただし,サロゲートペアは除く)エラーになります。
J2SE 5.0の場合
エラーになります。
Java SE 6の場合
正常終了します。
ただし,処理結果は不正となるため,注意してください。
7DTDによる妥当性検証で,子要素に定義していない要素を指定した場合KECX01165-Eのエラーを通知します。KECX01164-Eのエラーを通知します。
8UTF-8で記述したXML文書の中のXML宣言のencoding属性値として,「UTF-16」を指定した場合KECX01083-Eのエラーを通知します。KECX01024-Eのエラーを通知します。