/[pub]/suikawiki/sw4data/ids/8/748.txt
Suika

Contents of /suikawiki/sw4data/ids/8/748.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.25 - (show annotations) (download)
Sat Nov 2 06:38:12 2013 UTC (11 years, 7 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.24: +5 -1 lines
File MIME type: text/plain
updated by (anon)

1 [17] [[XML]] の[[生成規則]] [DFN[[CODE(ABNF)@en[[[Char]]]]]] は、[[XML]] で用いられる[[文字]]を表しています。
2 本項では [CODE(ABNF)@en[[[Char]]]] やより一般に [[XML]] における[[文字]]の扱いについて扱います。
3
4 * 仕様書
5
6 [REFS[
7 - [18] [CITE@EN[Extensible Markup Language (XML) 1.0 (Fifth Edition)]] ([TIME[2013-05-28 20:49:56 +09:00]] 版) <http://www.w3.org/TR/xml/#charsets>
8 ]REFS]
9
10 * 適合性
11
12 - ○: 適合
13 - ×: 不適合
14
15 , ,[[XML 1.0]] (文字),[[XML 1.0]] (文字参照),[[XML 1.1]] (文字),[[XML 1.1]] (文字参照),[[HTML]] (文字),[[HTML]] (文字参照)
16 ,[CODE(char)[[[U+0000]]]] ([CODE(charname)@en[[[NULL]]]]) ,× ,==,==,== ,× (置換),==
17 ,[CODE(char)[[[U+0001]]]]-[CODE(char)[[[U+0008]]]] ,× ,==,==,○ (非推奨),×,==
18 ,[CODE(char)[[[U+0009]]]] (タブ) ,○ ,==,==,== ,==,==
19 ,[CODE(char)[[[U+000A]]]] ([CODE(charname)@en[[[LF]]]]) ,○ ,==,==,== ,==,==
20 ,[CODE(char)[[[U+000B]]]] ,× ,==,==,○ (非推奨),×,==
21 ,[CODE(char)[[[U+000C]]]] ([CODE(charname)@en[[[FF]]]]) ,× ,==,==,○ (非推奨),○,==
22 ,[CODE(char)[[[U+000D]]]] ([CODE(charname)@en[[[CR]]]]) ,○ (正規化),○,○ (正規化),○,○ (正規化),×
23 ,[CODE(char)[[[U+000E]]]]-[CODE(char)[[[U+001F]]]] ,× ,==,==,○ (非推奨),×,==
24 ,[CODE(char)[[[U+007F]]]] ([CODE(charname)@en[[[DEL]]]]) ,○ (非推奨),==,×,○ (非推奨),×,==
25 ,[CODE(char)[[[U+0080]]]]-[CODE(char)[[[U+0084]]]] ,○ (非推奨),==,×,○ (非推奨),×,× (置換)
26 ,[CODE(char)[[[U+0085]]]] ([CODE(charname)@en[[[NEL]]]]) ,○ (非推奨),==,○ (正規化),○,×,× (置換)
27 ,[CODE(char)[[[U+0086]]]]-[CODE(char)[[[U+009F]]]] ,○ (非推奨),==,×,○ (非推奨),×,× (置換)
28 ,[CODE(char)[[[U+2028]]]] ([CODE(charname)@en[[[LS]]]]) ,○ ,==,○ (正規化),○ ,==,==
29 ,[CODE(char)[[[U+D800]]]]-[CODE(char)[[[U+DFFF]]]] ([[surrogate]]) ,× ,==,==,== ,○,× (置換)
30 ,[CODE(char)[[[U+FDD0]]]]-[CODE(char)[[[U+FDEF]]]] ([[非文字]]) ,○ (非推奨),==,==,== ,×,==
31 ,[CODE(char)[[[U+FFFE]]]]-[CODE(char)[[[U+FFFF]]]] ([[非文字]]) ,×,==,==,== ,==,==
32 ,[CODE(char)[U+[VAR[???]]FE]]-[CODE(char)[U+[VAR[???]]FF]] ([[非文字]]),○ (非推奨),==,==,== ,×,==
33 ,[CODE(char)[[[U+10FFFE]]]]-[CODE(char)[[[U+10FFFF]]]] ([[非文字]]) ,○ (非推奨),==,==,== ,×,==
34 ,[CODE[[[U-00110000]]]]- ,× ,==,==,== ,==,× (置換)
35
36 ** [CODE(ABNF)@en[RestrictedChar]]
37
38 [19] [[XML 1.1]] では [CODE(ABNF)@en[[[Char]]]] の一部は [DFN[[CODE(ABNF)@en[[[RestrictedChar]]]]]]
39 とされ、[[文字参照]]として [[XML]] で利用することはできるものの、直接含めることはできないとしていました。
40
41 [REFS[
42 - [20] [CITE@en[Extensible Markup Language (XML) 1.1 (Second Edition)]] ([TIME[2006-09-29 19:02:09 +09:00]] 版) <http://www.w3.org/TR/xml11/#charsets>
43 ]REFS]
44
45 [21] この [CODE(ABNF)@en[[[RestrictedChar]]]] には、 [[XML 1.0]] で利用できる文字も利用できない文字も含まれています。
46 [[XML 1.1]] の実質的な後継である [[XML 1.0 5e]] にこの扱いは受け継がれていません。
47
48 * Unicoder によるところの XML における文字の好ましい扱い
49
50 [1] 『Unicode in XML and other Markup Languages』
51 という [[W3C]] [[Note]]
52 <http://www.w3.org/TR/unicode-xml/>
53 / [[UTR]] #20
54 <http://www.unicode.org/reports/tr20/>
55 は、[[マーク付け言語]]で使うべきではない[[文字]]などを解説しています。
56 マーク付け言語としては主として [[XML]]、
57 ある程度は [[HTML]] を対象としています。
58
59 ** マーク付け言語で不適切な文字
60
61 [2] 次の文字はマーク付け言語と一緒に使用するのは不適当です。
62 行分離子 [CODE(char)[[[LS]]]], 段落分離子 [CODE(char)[[[PS]]]], バイト順印 [CODE(char)[[[BOM]]]]
63 を除いては、 [[UA]] は無視するのもよし。
64 適当なマークに変換するのは[[著述工具]]の責任だそうです。
65
66 ,[[符号位置]] ,[[名前]] ,HTML での代替 ,メモ
67 ,[CODE(char)[[[U+2028]]]] ,[CODE(char)[[[LINE SEPARATOR]]]] ,[CODE(HTMLe)[[[br]]]] ,>>4
68 ,[CODE(char)[[[U+2029]]]] ,[CODE(char)[[[PARAGRAPH SEPARATOR]]]] ,[CODE(HTMLe)[[[p]]]] ,>.4
69 ,[CODE(char)[[[U+202A]]]] ,[CODE(char)[[[LEFT-TO-RIGHT EMBEDDING]]]] ,[CODE(HTML)[[CODE(HTMLa)[[[dir]]]]=[[ltr]]]] ,>>3
70 ,[CODE(char)[[[U+202B]]]] ,[CODE(char)[[[RIGHT-TO-LEFT EMBEDDING]]]] ,[CODE(HTML)[[CODE(HTMLa)[dir]]=[[rtl]]]] ,>>3
71 ,[CODE(char)[[[U+202C]]]] ,[CODE(char)[[[POP DIRECTIONAL FORMATTING]]]] ,[CODE(HTML)[</[CODE(HTMLe)[[[bdo]]]]>]] ,>>3
72 ,[CODE(char)[[[U+202D]]]] ,[CODE(char)[[[LEFT-TO-RIGHT OVERRIDE]]]] ,[CODE(HTML)[<[CODE(HTMLe)[bdo]] [CODE(HTMLa)[dir]]=ltr>]] ,>>3
73 ,[CODE(char)[[[U+202E]]]] ,[CODE(char)[[[RIGHT-TO-LEFT-OVERRIDE]]]] ,[CODE(HTML)[<[CODE(HTMLe)[[[bdo]]]] [CODE(HTMLa)[dir]]=rtl>]] ,>>3
74 ,[CODE(char)[[[U+206A]]]] ,[CODE(char)[[[INHIBIT SYMMETRIC SWAPPING]]]] , ,Unicode で非推奨 >>5
75 ,[CODE(char)[[[U+206B]]]] ,[CODE(char)[[[ACTIVATE SYMMETRIC SWAPPING]]]] , ,Unicode で非推奨 >>5
76 ,[CODE(char)[[[U+206C]]]] ,[CODE(char)[[[INHIBIT ARABIC FORM SHAPING]]]] , ,Unicode で非推奨 >>5
77 ,[CODE(char)[[[U+206D]]]] ,[CODE(char)[[[ACTIVATE ARABIC FORM SHAPING]]]] , ,Unicode で非推奨 >>5
78 ,[CODE(char)[[[U+206E]]]] ,[CODE(char)[[[NATIONAL DIGIT SHAPES]]]] ,[CODE(char)[[[U+0660]]]]〜[CODE(char)[[[U+0669]]]] ,Unicode で非推奨 >>5
79 ,[CODE(char)[[[U+206F]]]] ,[CODE(char)[[[NOMINAL DIGIT SHAPES]]]] ,[CODE(char)[[[U+0030]]]]〜[CODE(char)[[[U+0039]]]] ,Unicode で非推奨 >>5
80 ,[CODE(char)[[[U+FEFF]]]] ,[CODE(char)[[[ZERO WIDTH NO-BREAK SPACE]]]] ,[CODE(char)[[[U+2060]]]] ,Unicode で非推奨 >>6
81 ,[CODE(char)[[[U+FFF9]]]] ,[CODE(char)[[[INTERLINEAR ANNOTATION ANCHOR]]]] ,[CODE(HTML)[<[CODE(HTMLe)[[[ruby]]]]><[CODE(HTMLe)[[[rb]]]]>]] ,>>7
82 ,[CODE(char)[[[U+FFFA]]]] ,[CODE(char)[[[INTERLINEAR ANNOTATION SEPARATOR]]]] ,[CODE(HTML)[</[CODE(HTMLe)[rb]]><[CODE(HTMLe)[[[rt]]]]>]] ,>>7
83 ,[CODE(char)[[[U+FFFB]]]] ,[CODE(char)[[[INTERLINEAR ANNOTATION TERMINATOR]]]] ,[CODE(HTML)[</[CODE(HTMLe)[rt]]></[CODE(HTMLe)[ruby]]>]] ,>7
84 ,[CODE(char)[[[U+FFFC]]]] ,[CODE(char)[[[OBJECT REPLACEMENT CHARACTER]]]] ,[CODE(HTMLe)[[[object]]]] など ,>>8
85 ,[CODE(char)[[[U+1D173]]]]〜[CODE(char)[[[U+1D17A]]]] ,"[[タイ]], [[スラー]]など" , ,>>9
86 ,[CODE(char)[[[U+E0000]]]]〜[CODE(char)[[[U+E007F]]]] ,[CODE(char)[Tags]] ,"[CODE(XML)[[[xml]]:[[lang]]]], [CODE(HTMLa)[lang]]" ,>>9
87
88 参考: <http://www.w3.org/TR/unicode-xml/#Suitable>
89
90 [4] [CODE(char)[[[LS]]]] と [CODE(char)[[[PS]]]] は、
91 ブラウザは[[空白]]とし、編集時は適当なマークに置き換えるのが適切です。
92
93 [3] [[BIDI]] 系は [Q[Strongly discouraged in [HTML 4.0] ]]
94 などと書かれていますが、 HTML 4 が激しく非推奨しているように読めて紛らわしい。
95 (<IW:HTML4:"struct/dirlang.html#h-8.2.4"> にはそんなことは書かれていません。)
96
97 <http://www.w3.org/TR/unicode-xml/#Bidi> で、
98 HTML 4 は文字コードによる[[書字方向]]指定と
99 HTML のマークによる指定のいずれかだけを使うように求めているが、
100 文字コードによる指定は処理が複雑になってよくないのでマークを使えと言っています。
101
102 ブラウザは無視し、編集時はマークに変換するのがいいそうです。
103
104 [5] [[DIS10646]] の遺産。ブラウザは無視したらよく、
105 編集時は警告でもして削除するのがよいですが、
106 適当に変換してもいいでしょう。ということです。
107
108 [6] [CODE(char)[U+FEFF]] は、 [CODE(char)[ZERO WIDTH NO-BREAK SPACE]] と [CODE(char)[[[BYTE ORDER MARK]]]]
109 の二つの機能を一つの符号位置に押し込んで、
110 あとから都合が悪くなったので [CODE(char)[[[ZWNBSP]]]]
111 の機能を [CODE(char)[U+2026]] [CODE(char)[WORD JOINER]]
112 として分離したという恥ずかしい前歴があります。
113
114 従って今では [CODE(char)[U+FEFF]] を
115 [CODE(char)[ZWNBSP]] として使用することは Unicode
116 が非推奨としています。
117
118 ブラウザは文中の [CODE(char)[U+FEFF]] は
119 [CODE(char)[ZWNBSP]] として扱い、編集時は
120 [CODE(char)[[[ZWJ]]]] に置き換えてしまう[[及び/又は]]警告を発してよいとされています。
121
122 [7] Unicode に通称 ruby tag が入った経緯は
123 <http://www.kobysh.com/tlk/digitalculture/1998-ruby.html>
124 でも見てください。阿呆らしい。
125
126 ブラウザは無視してかまいません。
127 編集時は次のひとつ以上の動作を取ってかまいません。
128 - [CODE(char)[U+FFF9]] および [CODE(char)[U+FFFA]]〜[CODE(char)[U+FFFB]] の部分を削除
129 - [CODE(char)[U+FFF9]] を削除、
130 [CODE(char)[U+FFFA]] と [CODE(char)[U+FFFB]] をそれぞれ
131 [CODE(char)[ [ ]] と [CODE(char)[ ] ]] に置換
132 - 適当なマークに置換
133
134 (ブラウザも完全に無視したら駄目だと思うのだけどなあ。
135 [CODE(HTMLe)[rt]] 部分を削除しないと。)
136
137 [8] ブラウザは無視してかまいません。
138 編集時は適当なマークに置換可能ならそうしてもいいし、
139 警告を出せるなら出して、削除してしまってかまいません。
140
141 [9] ブラウザは無視してかまいません。
142 編集時には削除しても適当なマークに置換してもかまいません。
143
144 ** マーク付け言語で適当な書式文字
145
146 [10] <http://www.w3.org/TR/unicode-xml/#Format>
147 がマーク付け言語で使うのは適切だと言っている文字と、
148 その説明をどうぞ:
149
150 ,符号位置 ,名前 ,メモ
151 ,[CODE(char)[[[U+00A0]]]] ,[CODE(char)[[[NO-BREAK SPACE]]]]
152 ,[CODE(char)[[[U+00AD]]]] ,[CODE(char)[[[SOFT HYPHEN]]]]
153 ,[CODE(char)[[[U+034F]]]] ,[CODE(char)[[[COMBINING GRAPHEME JOINER]]]] ,>>11
154 ,[CODE(char)[[[U+0600]]]] ,[CODE(char)[[[ARABIC NUMBER SIGN]]]]
155 ,[CODE(char)[[[U+0601]]]] ,[CODE(char)[[[ARABIC SIGN SANAH]]]]
156 ,[CODE(char)[[[U+0602]]]] ,[CODE(char)[[[ARABIC FOOTNOTE MARKER]]]]
157 ,[CODE(char)[[[U+0603]]]] ,[CODE(char)[[[ARABIC SIGN SAFHA]]]]
158 ,[CODE(char)[[[U+06DD]]]] ,[CODE(char)[[[ARABIC END OF AYAH]]]]
159 ,[CODE(char)[[[U+070C]]]] ,[CODE(char)[[[SYRIAC HARKLEAN METOBELUS]]]]
160 ,[CODE(char)[[[U+0F0C]]]] ,[CODE(char)[[[TIBETAN MARK DELIMITER TSHEG BSTAR]]]]
161 ,[CODE(char)[[[U+180B]]]] ,[CODE(char)[[[MONGOLIAN FREE VARIATION SELECTOR ONE]]]]
162 ,[CODE(char)[[[U+180C]]]] ,[CODE(char)[[[MONGOLIAN FREE VARIATION SELECTOR TWO]]]]
163 ,[CODE(char)[[[U+180D]]]] ,[CODE(char)[[[MONGOLIAN FREE VARIATION SELECTOR THREE]]]]
164 ,[CODE(char)[[[U+180E]]]] ,[CODE(char)[[[MONGOLIAN VOWEL SEPARATOR]]]]
165 ,[CODE(char)[[[U+200C]]]] ,[CODE(char)[[[ZERO WIDTH NON-JOINER]]]]
166 ,[CODE(char)[[[U+200D]]]] ,[CODE(char)[[[ZERO WIDTH JOINER]]]]
167 ,[CODE(char)[[[U+200E]]]] ,[CODE(char)[[[LEFT-TO-RIGHT MARK]]]]
168 ,[CODE(char)[[[U+200F]]]] ,[CODE(char)[[[RIGHT-TO-LEFT MARK]]]]
169 ,[CODE(char)[[[U+2011]]]] ,[CODE(char)[[[NON-BREAKING HYPHEN]]]]
170 ,[CODE(char)[[[U+202F]]]] ,[CODE(char)[[[NARROW NO-BREAK SPACE]]]]
171 ,[CODE(char)[[[U+2044]]]] ,[CODE(char)[[[FRACTION SLASH]]]]
172 ,[CODE(char)[[[U+2060]]]] ,[CODE(char)[[[WORD JOINER]]]]
173 ,[CODE(char)[[[U+2061]]]] ,[CODE(char)[[[FUNCTION APPLICATION]]]]
174 ,[CODE(char)[[[U+2062]]]] ,[CODE(char)[[[INVISIBLE TIMES]]]]
175 ,[CODE(char)[[[U+2063]]]] ,[CODE(char)[[[INVISIBLE SEPARATOR]]]]
176 ,[CODE(char)[[[U+2FF0]]]]〜[CODE(char)[[[U+2FFB]]]] ,Ideographic Description Characters
177 ,[CODE(char)[[[U+303E]]]] ,[CODE(char)[[[IDEOGRAPHIC VARIATION INDICATOR]]]]
178 ,"[CODE(char)[[[U+FE00]]]]〜[CODE(char)[[[U+FE0F]]]], [CODE(char)[[[U+E0100]]]]〜[CODE(char)[[[U+E01DF]]]]" ,Variation Selectors
179
180 [11] <http://www.w3.org/TR/2003/NOTE-unicode-xml-20030613/#Format>
181 では [Q[Combining Grapheme Joiner]]
182 が [CODE(char)[[[U+0363]]]] になっていますが、
183 [CODE(char)[U+0363]] は [CODE(char)[[[COMBINING LATIN SMALL LETTER A]]]] だったりします。
184
185 [12] ここに挙がっている文字は、大体は、純粋(謎)な文字としての表現と書式 (極端に言えば飾り) との区別が難しい表現を実現するためのものです。
186 [[ハイフン付け]]関係などは本来マーク + スタイル言語で実現するべきだとは思いますが、
187 スタイル言語の規格および実装が完成していない現状ではマーク付け言語で使っても仕方がないでしょう。
188 (といっても文字としても実装されている例はさほどないのだけど。)
189
190 ただし、 [CODE(char)[FRACTION SLASH]] などは、
191 [[MathML]] で実現できると書いているくらいですから、
192 不適当に分類するべきではないですか。
193
194 ** 互換写像を持つ文字
195
196 [13] [[互換写像]]を持つ文字を含む文章をマークするときの処遇が
197 <http://www.w3.org/TR/unicode-xml/#Compatibility>
198 に書かれています。
199
200 互換写像を持つ文字には、丸付き文字、片仮名の組み文字、
201 全角文字、半角文字などが含まれます。
202 いずれも、本来は組版の機能により実現されるべきものですが、
203 文字コードの闇歴史で次々と実用化(wされてきました
204 (そして Unicode はそれを貪欲に取込んでいます)。
205
206 互換写像を持つ文字は、一般には機械的にマークに置き換えることはできません。
207 ([[不思議マーク付け]]を機械的に [[Strict]] 化できないのと同じ理由。)
208 <http://www.w3.org/TR/unicode-xml/#Compatibility>
209 はどれは機械的に変換できて、どれはとりあえず残すべきかをまとめています。
210
211 互換写像を持つ文字は、マーク付けとスタイル指定で置き換えることができます。
212 ただし、 [[CSS]] ですべてを表現できるわけではありません。
213 たとえば丸付きは CSS では実現できません。
214 組み文字のように CSS 3 で実現しそうなものもあります。
215
216 *** 表現情報付きの文字
217
218 [14] <http://www.w3.org/TR/unicode-xml/#Generating>
219 によれば、「斜体の [Q[hello]]」はマークで実現するべきだが、
220 プランク定数 (斜体の [Q[h]]) は [CODE(char)[[[U+210E]]]]
221 を使うべきだと言っています。
222
223 [15] しかし >>14 のようなやり方には批判的な意見もあります。
224 文字コードが深い意味まで介入した結果が
225 [CODE(char)[U+1D400]]〜[CODE(char)[U+1D7FF]]
226 ([Q[Mathematical Alphanumeric Symbols]]) です。
227 (数式では普通の [Q[a]] と太字の [Q[a]] と 斜体の
228 [Q[a]] と・・・は意味が違うかもしれないから云々の結果、
229 数学用と称して太字だの斜体だの sans serif だの、
230 沢山の [Q[a]] が符号化されています。)
231
232 ** 非文字
233
234 [16] [[非文字]]符号位置は、応用が内部で使ってもかまいませんが、情報交換に用いるべきではありません。
235 <http://www.w3.org/TR/unicode-xml/#Noncharacters>
236
237 [DEL[
238 [[XML1.1]] では非文字は除外されていますが、
239 [[XML1.0]] は制定時期の関係から多くの非文字は除外されていません。
240 ]DEL]
241
242 * 応用
243
244 [FIG[
245 [3]
246 > The use of the word "character" in this document is in the sense of production [2] of [Extensible Markup Language (XML) 1.0 Recommendation (Third Edition)].
247
248 [FIGCAPTION[
249 [15] [CITE@EN[XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)]]
250 <http://www.w3.org/TR/2010/REC-xpath-functions-20101214/#string-types>
251 ]FIGCAPTION]
252 ]FIG]
253
254 * 関連
255
256 [22] [[XMLにおける名前]]の項も参照してください。

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24