要素内容空白

要素内容空白

[1] 要素内容子要素の周りに現れる空白を、 要素内容空白 (ようそないようくうはく) (element content white space) といいます。

[2] 仕様書:

[4] 要素内容中のs (SGML): SGMLにおいて、要素内容には文字データが出現できませんが、 sは出現できます JIS 6.6s認知されたものは無視されます JIS 5.2.1

XMLの場合 (>>3) とは違って、マーク区間宣言文字参照も明示的には禁じられていません。 実際条件区間名前指定文字参照sが出現することは問題ないと思われます。 ただ、XMLの場合と同じく (というよりこちらが元でしょうが)CDATA区間数値指定文字参照を使うと、 それがデータとして認識されてしまうので、妥当なくなると思われます。

JIS 6.6.1 (RS & RE の無視) は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情報集合文字情報項目には要素内容空白 (ようそないようくうはく) (element content whitespace) 特性があります。 この特性は、その文字要素内容に現れる空白かどうかを示す真理値とされています。

[5] isElementContentWhitespace (DOM): DOMText界面で定義されているisElementContentWhitespace属性 (読取専用) は、要素内容空白 (定義は >>4 を参照。) をそのテキスト節点が含んでいるかどうかを表すとされています。 また、XML情報集合との対応に関する附属書では、 要素内容空白の場合のみisElementContentWhitespaceであるとなっているようです。

DOMXML情報集合とは異なり、隣接する文字を1つのText節点としてまとめています。 それについて、附属書には隣接するものならすべて同じになるはずだという旨が書かれています。 しかし、妥当文書から構築したXML情報集合ならその通りですが、 そうでなければ空白とそうでない文字が混ざっているかもしれません。 XML文書から構築したばかりではない、何らかの編集を経た情報集合なら、空白でも要素内容空白値が異なるものが混ざっているかもしれません。そうした場合はどうするのでしょうかね?

[8] element-content-whitespace (DOM): DOMの設定オプションにelement-content-whitespaceがあります。 Document.normalizeDocumentで、 であれば要素内容空白が保存され、 ならば捨てられます。捨てるのはText節点で、 isElementContentWhitespace属性を見て判断するべきだとされています。 LSParserおよびLSSerializerについても同じオプションが使えることになっています。

[6] whitespacewhite space: DOMの場合、white spaceに直すよりも、 XML情報集合が既にwhitespaceになっているのでそれに合わせておこうという判断がなされたそうです。 XML情報集合についても、特性名はwhitespaceですが、 本文中ではwhite spaceになっています。 W3Cの仕様書執筆者に対する指針ではwhite spaceと綴ることになっているようです。

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>