1. ホーム
  2. Web制作
  3. XML/XSLT

コード内で空白を処理するためのXMLの構文解析

2021-12-30 04:34:23

1. XMLの仕様では、空白には、スペース、タブ、空白行が含まれます。XML文書を編集する際、読みやすくするためにタグを区切るために空白を使うことが多いが、インタラクティブな空白文書では、これらの空白は不要であるが、時には残しておくことが必要な場合がある。例えば、詩やプログラムコードの中の空白文字である
2. XMLプロセサは,常に文書中のトークンでないすべての文字をアプリケーションに渡し,検証を行うXMLプロセサは,これらの文字のうち,要素の内容に現れる空白を構成する文字をアプリケーションに通知する。
3. XML 文書では、要素に xml:space という特殊な属性を使用することで、この要素に空白を保持することをアプリケーションに通知することができる。
4. xml:space は Enumerated タイプとして宣言され、その値は "default" または "preserve " のいずれか、あるいは両方でなければなりません。

<ATTLIST 詩 xml:space (デフォルト preserve)'preserve' >
は、xml:space 属性が poem 要素で宣言されており、列挙型で、値 "default" と "preserve" を取ることができ、この属性のデフォルト値は preserve ' であることを意味します。
<ATTLIST pre xml:space (preserve)#FIXED 'preserve' >
これは、xml:space属性が、同じくenum型である要素preで宣言されているが、一つの値 "preserve" しか持たず、デフォルトでFIXEDキーワードで宣言されていることを意味している。デフォルト値 "default" で宣言することは、アプリケーションのデフォルトのホワイトスペース処理モードをこの要素に使用することを示し、'preserve' はすべてのホワイトスペースを保存するようにアプリケーションに指示するものです。
5. 5. ある要素が xml:space 属性を使用する場合、他の xml:space 属性によって上書きされない限り、その要素の内容に含まれるすべての要素に適用されます。

XML文書には、2種類の空白文字がある。次の例は、この2種類の空白を説明するものである。

有効な空白文字
/{br
有効なホワイトスペースは、通常、要素がテキストとマークアップの両方を含む場合に発生します。例えば

XML/HTMLコード 内容をクリップボードにコピーする
  1. <スパン < 名称 > タンメイパティル <

    名称 >

そして

XML/HTMLコード 内容をクリップボードにコピーする
  1. <スパン < 名称 > タンメイ・パティル <

    名称 >

上の2つの要素は、TanmayとPatilの間の空白が同じでないため、異なっています。XMLファイル中のこのような要素を読み取るプログラムは、それらを区別しておかなければなりません。

無効な空白文字
無効な空白とは、その要素の内容においてのみ許される空白を意味します。例えば

XML/HTMLコード 内容をクリップボードにコピーする
  1. <スパン < アドレス.カテゴリ アドレス.カテゴリ = 居住地" > <スパン

または

XML/HTMLコード 内容をクリップボードにコピーする
  1. <スパン < アドレス... .カテゴリー アドレス... .カテゴリー = <スパン .居住地" >

上の2つの例は、同じものです。ここでは、空白を示すドット(.)を渡しています。上の例では、addressとcategoryの間の空白が無効であることを示しています。

また、要素に特別な属性 xml:space を付けます。これは、要素の空白をアプリケーションで削除してはいけないことを示します。この属性は、次の例に示すように、defaultまたはpreserveに設定することができます。

XML/HTMLコード 内容をクリップボードにコピーする
  1. <スパン <未定義 >

これを

値 default は、この要素がアプリケーションのデフォルトのホワイトスペース処理モードを受け入れることができることを示す。
値 preserve は、アプリケーションがすべての空白を保護することを示す。