MathMLの空白

空白 (MathML)

[1] MathML における空白の取り扱いについて。

仕様書

定義

[4] MathML における空白 (くうはく) (whitespace) 文字は、 XMLS と同じで

... の4種類です >>10

[11] MathML 仕様書では white space ではなく whitespace と綴っています。

処理モデル

字句要素外の空白

[2] 字句要素にある空白は、無視されます。 MathML1 2.3.5, MathML2 2.4.6, >>10

[14] 字句要素外で空白以外文字は認められていません。 MathML1 2.3.5, MathML2 2.4.6, >>10

字句要素内の空白

[15] 字句要素では MathML1 2.3.5, MathML2 2.4.6, >>10

  • 要素の最初と最後の空白は、除去されます。
  • それ以外の空白列は、1つの SPACE で置き換えられます。
  • ただし、 cs 要素の場合を除きます >>10

歴史

  1. [8] MathML 1
  2. [9] MathML 2

関連

データとしての空白の表現

[16] 字句要素の中で正規化されない空白を本当に表現したい時は、 NBSP など MathML でいう空白以外の空白文字を使う必要があります >>10

[17] 字句要素外で空白を表現したいときは、 NBSP だけが入った mtext 要素を使ったりするのではなくmspace 要素を使うべき (should) です >>10

XML としての空白処理との関係

[12] MathMLXML文書として記述した場合、それを解釈する際には XML で規定された空白の処理を行った結果が XML 処理器から MathML 処理器に渡されます。 DTD を使って検証した場合はそれに基づく空白の処理が行われます。

XML//空白参照。

[13] MathML 文書XML Schema妥当性検証し、 PSVIMathML 処理器に渡す場合は、 XML としての空白の処理だけでなく、 XML Schema に基づく空白の処理も行われます。

[3] MathML では xml:space 属性は使われません。 MathML1 2.3.5, MathML2 2.4.6 先述の MathML としての空白の正規化処理は XML としての処理の後で行われるので、 xml:space の値が結果に反映されることはありません >>10

メモ

[5] declare 要素との一致は XML情報集合として比較するそうです (<IW:MathML2:"chapter4.html#id.4.4.2.8.1">MathML 1 (<IW:MathML1:"chap4_4.html#sec4.4.2.8">) には規定なし)。

after XML space normalization とは書いてあるものの、 MathML としての空白の処理をした後とは書いてありませんが、よいのでしょうか? (名無しさん)

[6] 仕様書にある

<cn type="rational"> 12342 <sep/> 2342342 </cn>

のような例は、 sep の前後の空白が除去されることを想定していると思うのですが、どうなのでしょうか? >>2 の規則だけでは除去されず、特別な規則もないようですが・・・。

cn内容MathML で厳密には決められていなくて、著者と実装が割と自由にできるみたいですが。。。

(名無しさん)

[7] 要素内容空白に関する正規化は DOM に反映されるようです。