[1] 要素内容で子要素の周りに現れる空白を、 要素内容空白といいます。
[2] 仕様書:
s
[4]
要素内容中のs
(SGML):
SGMLにおいて、要素内容には文字データが出現できませんが、
s
は出現できます JIS 6.6。
s
と認知されたものは無視されます JIS 5.2.1。
XMLの場合 (>>3) とは違って、マーク区間宣言や文字参照も明示的には禁じられていません。
実際条件区間や名前指定文字参照でs
が出現することは問題ないと思われます。
ただ、XMLの場合と同じく (というよりこちらが元でしょうが)、
CDATA
区間や数値指定文字参照を使うと、
それがデータとして認識されてしまうので、妥当でなくなると思われます。
s
の無視の更に後に行われるのか??
cf. Web SGML K.3.8.2 (KEEPRSRE)[3] 要素内容で出現可能な空白 (XML): XMLにおいて、要素内容な要素が妥当であるためには文字データが出現してはなりません。 しかし、空白は含まれていても構いません。
ここで、空白とは非終端記号S
に一致する文字とされています。
XML 1では間隔、復帰、改行、タブの4種類です。
(XML//空白を参照。)
ただし、出現できるのはS
だけで、
構文上それ以外の形をした空白文字は認められていません。
つまり、CDATA
区間や文字参照は使えません。
実体参照は認められていますが、その置換文がS
に一致しなければなりません。
SGMLではs
は無視することになっていましたが、
XMLには特にそのような規定はないようです。
[4]
要素内容空白
特性
(XML情報集合):
XML情報集合の文字情報項目
には要素内容空白
特性があります。
この特性は、その文字が要素内容に現れる空白かどうかを示す真理値とされています。
文書情報項目
の全宣言処理済
が偽なら、
空白文字に関してこの特性は未知です。[5]
isElementContentWhitespace
(DOM):
DOMのText
界面で定義されているisElementContentWhitespace
属性
(読取専用) は、要素内容空白 (定義は >>4 を参照。)
をそのテキスト節点が含んでいるかどうかを表すとされています。
また、XML情報集合との対応に関する附属書では、
要素内容空白
が真の場合のみisElementContentWhitespace
であるとなっているようです。
DOMはXML情報集合とは異なり、隣接する文字を1つのText
節点としてまとめています。
それについて、附属書には隣接するものならすべて同じになるはずだ
という旨が書かれています。
しかし、妥当な文書から構築したXML情報集合ならその通りですが、
そうでなければ空白とそうでない文字が混ざっているかもしれません。
XML文書から構築したばかりではない、何らかの編集を経た情報集合なら、空白でも要素内容空白
値が異なるものが混ざっているかもしれません。そうした場合はどうするのでしょうかね?
[8]
element-content-whitespace
(DOM):
DOMの設定オプションにelement-content-whitespace
があります。
で、
真であれば要素内容空白が保存され、
偽ならば捨てられます。捨てるのはDocument
.normalizeDocument
Text
節点で、
isElementContentWhitespace
属性を見て判断するべきだとされています。
LSParser
およびLSSerializer
についても同じオプションが使えることになっています。
[6]
whitespace
かwhite space
か:
DOMの場合、white space
に直すよりも、
XML情報集合が既にwhitespace
になっているのでそれに合わせておこうという判断がなされたそうです。
XML情報集合についても、特性名はwhitespace
ですが、
本文中ではwhite space
になっています。
W3Cの仕様書執筆者に対する指針ではwhite space
と綴ることになっているようです。
[7] XPath 1.0のデータ・モデルでは特に規定がないようです。
isElementContentWhitespace
属性 (DOM)[9] 要素内容空白とそうでない文字列が混じっているとどうなるのかよくわかりません。
[10] data
が変化するとどうなるのかよくわかりません。
[11] CDATASection
ではどうなのかよくわかりません。
[12] Text.isElementContentWhitespace - Document Object Model (DOM) | MDN ( ( 版)) <https://developer.mozilla.org/en/docs/DOM/Text.isElementContentWhitespace>