/
852.txt
115 lines (81 loc) · 4.6 KB
/
852.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
[1]
[[MathML]] における[[空白]]の取り扱いについて。
* 仕様書
- [10] [CITE[MathML Fundamentals]] ([TIME[2010-10-21 05:51:46 +09:00]] 版) <http://www.w3.org/TR/2010/REC-MathML3-20101021/chapter2.html#fund.collapse>
* 定義
[4]
[[MathML]] における[DFN[[RUBY[[[空白]]] [くうはく] @en[whitespace]]]][[文字]]は、
[[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種類です [SRC[>>10]]。
;; [11] [[MathML]] 仕様書では [Q@en[white space]] ではなく [Q@en[whitespace]] と綴っています。
* 処理モデル
** 字句要素外の空白
[2]
[[字句要素]]の''外''にある[[空白]]は、無視されます。
[SRC@en[MathML1 2.3.5, MathML2 2.4.6, >>10]]
[14]
[[字句要素]]外で[[空白]]''以外''の[[文字]]は認められていません。
[SRC@en[MathML1 2.3.5, MathML2 2.4.6, >>10]]
** 字句要素内の空白
[15] [[字句要素]]の''中''では [SRC@en[MathML1 2.3.5, MathML2 2.4.6, >>10]]、
- [[要素]]の最初と最後の[[空白]]は、除去されます。
- それ以外の[[空白]]列は、1つの [CODE(charname)@en[[[SPACE]]]] で置き換えられます。
- ただし、 [CODE(XMLe)@en[[[cs]]]] [[要素]]の場合を除きます [SRC[>>10]]。
* 歴史
= [8] [[MathML 1]]
-- [CSECTION@en[2.3.5 Collapsing Whitespace in Input]]
<IW:MathML1:"chapter2.html#sec2.3.5">
= [9] [[MathML 2]]
-- [CSECTION@en[2.4.6 Collapsing Whitespace in Input]]
<IW:MathML2:"chapter2#fund.collapse">
* 関連
** データとしての空白の表現
[16] [[字句要素]]の中で正規化されない[[空白]]を本当に表現したい時は、 [CODE(charname)@en[[[NBSP]]]]
など [[MathML]] でいう[[空白]]以外の[[空白]]文字を使う必要があります [SRC[>>10]]。
[17] [[字句要素]]外で[[空白]]を表現したいときは、 [CODE(charname)@en[[[NBSP]]]]
だけが入った [CODE(XMLe)@en[[[mtext]]]] [[要素]]を使ったりするのでは''なく''、
[CODE(XMLe)@en[[[mspace]]]] [[要素]]を使う[RUBYB[べき]@en[should]]です [SRC[>>10]]。
** XML としての空白処理との関係
[12] [[MathML]] を [[XML文書]]として記述した場合、それを解釈する際には
[[XML]] で規定された[[空白]]の処理を行った結果が
[[XML]] [[処理器]]から [[MathML]] [[処理器]]に渡されます。
[[DTD]] を使って[[検証]]した場合はそれに基づく[[空白]]の処理が行われます。
;; [[XML//空白]]参照。
[13] [[MathML]] [[文書]]を [[XML Schema]] で[[妥当性検証]]し、 [[PSVI]]
を [[MathML]] [[処理器]]に渡す場合は、 [[XML]]
としての[[空白]]の処理だけでなく、
[[XML Schema]] に基づく[[空白]]の処理も行われます。
[3]
[[MathML]] では [CODE(XMLa)@en[[[xml:space]]]]
[[属性]]は使われません。
[SRC@en[MathML1 2.3.5, MathML2 2.4.6]]
先述の [[MathML]] としての[[空白]]の正規化処理は [[XML]] としての処理の後で行われるので、
[CODE(XMLa)@en[[[xml:space]]]] の値が結果に反映されることはありません [SRC[>>10]]。
* メモ
[5]
[CODE(XMLe)@en[[[declare]]]] [[要素]]との一致は [[XML情報集合]]として比較するそうです
(<IW:MathML2:"chapter4.html#id.4.4.2.8.1">、 [[MathML 1]]
(<IW:MathML1:"chap4_4.html#sec4.4.2.8">) には規定なし)。
[Q@en[after XML space normalization]<http://www.w3.org/TR/2003/REC-MathML2-20031021/chapter4.html#id.4.4.2.8.1>]
とは書いてあるものの、 [[MathML]] としての[[空白]]の処理をした後とは書いてありませんが、よいのでしょうか?
([[名無しさん]])
[6]
仕様書にある
[PRE(XML example code)[
<cn type="rational"> 12342 <sep/> 2342342 </cn>
]PRE]
のような例は、 [CODE(XMLe)@en[[[sep]]]]
の前後の[[空白]]が除去されることを想定していると思うのですが、どうなのでしょうか?
>>2 の規則だけでは除去されず、特別な規則もないようですが・・・。
;;
[CODE(XMLe)@en[[[cn]]]] の[[内容]]は [[MathML]] で厳密には決められていなくて、著者と実装が割と自由にできるみたいですが。。。
([[名無しさん]])
[7]
[[要素]]の[[内容]]の[[空白]]に関する正規化は [[DOM]]
に反映されるようです。
;;
<IW:MathML2:"chapter8.html#dom-intro.intro">