[1] [[MathML]] における[[空白]]の取り扱いについて。 仕様書: = [[MathML 1]] -- [CSECTION@en[2.3.5 Collapsing Whitespace in Input]] = [[MathML 2]] -- [CSECTION@en[2.4.6 Collapsing Whitespace in Input]] [2] - '''XML としての空白処理''': [[MathML]] [[文書]]は [[XML]] [[文書]]なので、 [[XML]] で規定された[[空白]]の処理を行った結果が [[XML]] [[処理器]]から [[MathML]] [[処理器]]に渡されます。 [[DTD]] を使って[[検証]]した場合はそれに基づく[[空白]]の処理が行われます。 ([[XML//空白]]参照。) - '''XML Schema での検証による空白処理''': [[MathML]] [[文書]]を [[XML Schema]] で[[妥当性検証]]し、 [[PSVI]] を [[MathML]] [[処理器]]に渡す場合は、 [[XML]] としての[[空白]]の処理だけでなく、 [[XML Schema]] に基づく[[空白]]の処理も行われます。 - '''字句要素外の空白''': [[字句要素]]の''外''にある[[空白]]は、無視されます。 なお、[[字句要素]]外で[[空白]]''以外''の[[文字]]は認められていません。 [SRC@en[MathML1 2.3.5, MathML2 2.4.6]] - '''字句要素内の空白''': [[字句要素]]の''中''では、 -- [[要素]]の最初と最後の[[空白]]は、除去されます。 -- それ以外の[[空白]]列は、1つの [CODE(charname)@en[[[SPACE]]]] で置き換えられます。 [SRC@en[MathML1 2.3.5, MathML2 2.4.6]] [4] '''空白の定義''': [[MathML]] における[DFN[[RUBY[[[空白]]] [くうはく] @en[white space]]]][[文字]]は、 [[XML]] の [CODE@en[[[S]]]] と同じで - [CODE(char)@en[[[U+0009]]]] [CODE(charname)@en[[[HORIZONTAL TAB]]]] - [CODE(char)@en[[[U+000A]]]] [CODE(charname)@en[[[LINE FEED]]]] - [CODE(char)@en[[[U+000D]]]] [CODE(charname)@en[[[CARRIAGE RETURN]]]] - [CODE(char)@en[[[U+0020]]]] [CODE(charname)@en[[[SPACE]]]] の4種類です。 ;; [[MathML]] 仕様書では [Q@en[whitespace]] と綴っています。 [3] '''[CODE(XMLa)@en[xml:space]]''': [[MathML]] では [CODE(XMLa)@en[[[xml]]:[[space]]]] [[属性]]は使われません。 [SRC@en[MathML1 2.3.5, MathML2 2.4.6]] [5] [CODE(XMLe)@en[[[declare]]]] [[要素]]との一致は [[XML情報集合]]として比較するそうです (、 [[MathML 1]] () には規定なし)。 [Q@en[after XML space normalization]] とは書いてあるものの、 [[MathML]] としての[[空白]]の処理をした後とは書いてありませんが、よいのでしょうか? ([[名無しさん]]) [6] 仕様書にある [PRE(XML example code)[ 12342 2342342 ]PRE] のような例は、 [CODE(XMLe)@en[[[sep]]]] の前後の[[空白]]が除去されることを想定していると思うのですが、どうなのでしょうか? >>2 の規則だけでは除去されず、特別な規則もないようですが・・・。 ;; [CODE(XMLe)@en[[[cn]]]] の[[内容]]は [[MathML]] で厳密には決められていなくて、著者と実装が割と自由にできるみたいですが。。。 ([[名無しさん]]) [7] [[要素]]の[[内容]]の[[空白]]に関する正規化は [[DOM]] に反映されるようです。 ;; ([[名無しさん]])