空白スペース |
XML 1.0 では、スペース、タブ、改行、またはラインフィードが空白スペースであると定義されています。XML 1.1 では、新しい改行文字 NEL (#x85) および Unicode 行区切り文字 (#x2028) が空白スペースに追加されています。空白スペースには、トークンや言語要素を分離するという、ほとんどのプログラミング言語や自然言語と同じ役割が XML にもあります。XML パーサーにとって、要素コンテンツのすべての空白スペースは重要であり、それらはクライアントアプリケーションに渡されます。タグ内の空白スペース (属性間などにある空白スペース) は重要ではありません。次の例を考慮してください。
    <p>  This sentence has extraneous
      line breaks.</p>
解析後に、このサンプル要素からの文字データは、基になるアプリケーションに次のように渡されます。
       This sentence has extraneous
    line breaks.
XML では、要素コンテンツのすべての空白スペースはクライアントアプリケーションが使用するために保持することが指定されていますが、XML 作成者は、要素の文字データのスペースとフォーマットを維持する必要があることを示すための、追加の機能を利用できます。詳細については、本章の後の「>特殊な属性」で xml:space 属性の説明を参照してください。 ソフトウェア開発者の作業を容易にするために、パーサーはすべての改行 (#xD) 文字を 1 つのラインフィード (#xA) 文字に正規化することが推奨されています。ラインフィードの前に直接改行文字が指定されている場合、その文字は削除されます。その結果、1 つのラインフィード文字のみが含まれているドキュメントは、行末をマークします。XML 1.1 では、ラインフィード文字へのこの正規化は、Unicode 文字 #x85 (NEXT LINE、NEL) および #x2028 (LINE SEPARATOR) に対しても発生します。