XML ドキュメントに Low-Order ASCII 文字が含まれている場合のエラー メッセージ

この記事は、XML ドキュメントに Low-Order ASCII 文字が含まれている場合に発生する問題を解決するのに役立ちます。

元の製品バージョン: Microsoft XML
元の KB 番号: 315580

現象

MSXML パーサーのバージョン 3.0 以降を使用して、特定の下位の印刷不能 ASCII 文字 (つまり ASCII 32 より下の文字) を含む XML ドキュメントを解析しようとすると、次のエラー メッセージが表示されることがあります。

テキスト コンテンツで無効な文字が見つかりました。

原因

MSXML パーサーのバージョン 3.0 以降では、World Wide Web Consortium (W3C) XML 言語仕様によって定義されている有効な XML 文字範囲が厳密に適用されます。 バージョン 3.0 以降の MSXML を使用して解析された XML ドキュメントには、定義された有効な XML 文字範囲の範囲外の文字を含めることはできません。 [ 詳細情報 ] セクションに一覧表示されている範囲の低順序の印刷不可 ASCII 文字は、有効な XML 文字ではありません。 これらの文字のインスタンスを含む XML ドキュメントは W3C 仕様に準拠していないため、バージョン 3.0 以降の MSXML では正常に解析できません。

解決方法

この問題を解決するには、印刷できない下位の ASCII 文字のインスタンスを削除するか、文字を空白文字 (ASCII 32、16 進 #x20) などの代替有効な文字に置き換えます。 このソリューションは、XML ドキュメントを W3C 仕様に準拠させます。 ただし、これらの文字のインスタンスを削除または置換すると、データを使用し、文字が重要な他のアプリケーションに影響を与える可能性があります。 このような追加の影響はテストによってのみ識別でき、特定の状況に適した修正プログラムまたは回避策を実装することによって対処する必要があります。

詳細

バージョン 2.6 以前の MSXML パーサーでは、XML ドキュメントに、W3C の有効な XML 文字範囲の範囲外にある低順序の印刷不可 ASCII 文字を含める必要があります。 ただし、バージョン 3.0 以降の MSXML パーサーの設計は、W3C XML 言語仕様で定義されている有効な XML 文字範囲を厳密に適用するように変更されています。 この設計変更は、準拠していない XML ドキュメントを識別できるようにするために必要です。

W3C XML 言語仕様 1.0 で定義されている有効な XML 文字と文字範囲 (16 進値) を次に示します。

#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

MSXML バージョン 3.0 以降で拒否される、印刷できない下位 ASCII 文字の文字範囲を次に示します。

#x0 - #x8 (ASCII 0 - 8)
#xB - #xC (ASCII 11 - 12)
#xE - #x1F (ASCII 14 - 31)

この設計変更は、次のユーザーとアプリケーションに影響する可能性があります。

  • インターネット エクスプローラー ユーザー: インターネット エクスプローラー バージョン 5.5 以前 (および置換モードで MSXML 3.0 をインストールしていない) を使用して、指定された低順序の印刷不可 ASCII 文字の 1 つ以上のインスタンスを含む XML ドキュメントを参照して表示したユーザーは、インターネット エクスプローラー 6.0 にアップグレードした後にエラー メッセージが表示されますエクスプローラー6.0 は MSXML 3.0 SP2 を置換モードでインストールし、それを使用して XML ドキュメントを解析します。
  • MDAC および ADO ユーザー: 指定された低順序の印刷不可 ASCII 文字の 1 つ以上のインスタンスを含む ADO 永続化 XML ドキュメントを ADO Recordset オブジェクトに読み込む開発者とユーザーは、MDAC 2.7 にアップグレードした後にエラー メッセージが表示されます。MDAC 2.7 では MSXML 3.0 SP2 がインストールされているため、これは ADO 2.7 Recordset オブジェクトが使用する MSXML パーサーのバージョンです。
  • MSXML ドキュメント オブジェクト モデル (DOM) を使用するアプリケーション: バージョンに依存しない PROGIDs アプリケーション: XML ドキュメントの解析に使用される MSXML DOM オブジェクトをインスタンス化するアプリケーションでは、MSXML 3.0 またはそのいずれかのサービス パックが置換モードでインストールされている場合、または MSXML 3.0 または 4.0 バージョン固有 PROGIDsの を使用するようにコードが変更された場合に、指定されたエラーが生成されます。

関連情報

「現象」セクションで指定されているエラー メッセージの他の既知の原因と回避策の詳細については、次を参照してください。