属性値の正規化

XmlTextReader.Normalization は、XmlTextReader に用意されているプロパティの 1 つです。子のプロパティを使用すると、空白の正規化と属性の正規化を実行するかどうかをアプリケーションで定義できます。非検証パーサーに設定するこのプロパティは、www.w3.org/TR/2000/REC-xml-20001006.html#AVNormalize で公開されている勧告『Extensible Markup Language (XML) 1.0』のセクション「Attribute-Value Normalization」に定義されています。Normalization プロパティの既定の設定は false です。false の場合、このフラグによって数値エンティティの文字範囲チェックが無効になるため、XmlTextReader� のような文字エンティティを許容します。

W3C の勧告によると、属性の値は、アプリケーションに渡す前、またはその有効性をチェックする前に、次のように正規化する必要があると規定されています。

  • 文字参照については、参照されている文字を属性値に追加します。
  • エンティティ参照については、エンティティの置換テキストを再帰的に処理します。
  • 空白文字 (#x20、#xD、#xA、#x9) については、正規化された値に #x20 を追加します。例外として、外部解析対象エンティティの一部または内部解析対象エンティティのリテラル エンティティ値に "#xD#xA" というシーケンスが現れた場合は、1 つの #x20 に置き換えます。
  • その他の文字は、正規化された値にそのまま追加します。
  • 宣言された値が CDATA ではない場合は、前後の空白 (#x20) 文字を破棄し、連続した空白 (#x20) 文字を 1 つの空白 (#x20) 文字に置き換えます。

参照

XmlReader による XML の読み取り | 文字ストリームによるコンテンツ全体の読み取り | ドキュメント タイプ宣言 | XmlTextReader による空白の取り扱い | XmlException を使用した XmlTextReader の例外処理 | XmlReader クラス | XmlReader メンバ | XmlNodeReader クラス | XmlNodeReader メンバ | XmlTextReader クラス | XmlTextReader メンバ | XmlValidatingReader クラス | XmlValidatingReader メンバ