-
Notifications
You must be signed in to change notification settings - Fork 4
/
836.txt
126 lines (96 loc) · 7.61 KB
/
836.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
116
117
118
119
120
121
122
123
124
125
126
[8] [[XML]] では、いくつかの[[公開識別子]]を指定した[[外部実体]] ([[DTD]])
を[[参照]]することで、 [[HTML]] の[[名前付き文字参照]]が使えるようになります。
* 仕様書
[REFS[
- [1] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-03-05 09:33:40 +09:00]] 版) <https://html.spec.whatwg.org/#xml-parser>
]REFS]
* 公開識別子
[2] 次の[[公開識別子]]が[[名前付き文字参照]]についての[[実体宣言]]を含む [[DTD]]
として規定 [SRC[>>1]] されています。
[FIG(list)[
- [CODE(HTML)@en[[[-//W3C//DTD XHTML 1.0 Transitional//EN]]]]
- [CODE(HTML)@en[[[-//W3C//DTD XHTML 1.1//EN]]]]
- [CODE(HTML)@en[[[-//W3C//DTD XHTML 1.0 Strict//EN]]]]
- [CODE(HTML)@en[[[-//W3C//DTD XHTML 1.0 Frameset//EN]]]]
- [CODE(HTML)@en[[[-//W3C//DTD XHTML Basic 1.0//EN]]]]
- [CODE(HTML)@en[[[-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN]]]]
- [CODE(HTML)@en[[[-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN]]]]
- [CODE(HTML)@en[[[-//W3C//DTD MathML 2.0//EN]]]]
- [CODE(HTML)@en[[[-//WAPFORUM//DTD XHTML Mobile 1.0//EN]]]]
]FIG]
;; [7] これらは、歴史的な [[HTML]] や [[MathML]] の仕様で [[DTD]] の[[公開識別子]]として採用されていたものです。
かつてこれらの [[DTD]] を参照して記述された [[XML]] [[文書]]との互換性のため、
次に述べるような規定が必要となっています。
[20] この一覧は >>21 の [[JSON]] ファイルの [CODE[[[charrefs_pubids]]]]
にも含まれています。
[REFS[
- [21] [CITE@en[data-web-defs/xml-syntax.txt at master · manakai/data-web-defs]] ([TIME[2015-03-19 01:05:22 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/doc/xml-syntax.txt>
]REFS]
* 処理
[3] [[利用者エージェント]]は、[[外部実体]]を取得 ([[retrieve]]) する時、 >>2 の[[公開識別子]]が指定されていれば、
[[HTML Standard]] に示された [[DTD]] に対応するものとして処理する[['''べき''']]です [SRC[>>1]]。
;; [5] [[利用者エージェント]]は、この場合には[[外部実体]]の[[内容]]を取得しようと試みる[['''べき''']]であり、
それ以外の[[外部実体]]の[[内容]]は取得しようと試みる[['''べきではありません''']] [SRC[>>1]]。
[4] その [[DTD]] は、 [[HTML]] の[[名前付き文字参照]]すべての [[XML]] [[実体宣言]] (のみ)
を含んだものです。
* 実装
[85] [[Firefox]] では、[[システム識別子]]が[[絶対URL]]でないと ([[URL scheme]] が含まれていないと)
[[公開識別子]]が[[文字参照]]の [[DTD]] のものだとしても、無視されるようです。
[[Chrome]] ではそのようなことはありません。 [TIME[2014-03-02T05:25:20.500Z]]
[12] どの実装でも [CODE(XML)@en[[[DOCTYPE]]]] [[宣言]]で指定する[[外部部分集合]]や、
[[マーク付け宣言]]の間の[[引数実体参照]]で[[参照]]される[[外部実体]]としてこれらの[[公開識別子]]が指定された場合には
[[HTML Standard]] の規定に添って処理しますが、
[[要素]]内で[[参照]]される[[外部実体]]としてこれらの[[公開識別子]]が指定された場合には展開しない[[外部実体参照]]として扱うようです。
* 適合性
[9] これらの[[公開識別子]]の使用は [[XML]] や [[HTML]] の仕様上特に禁止されていませんが、
いずれも過去の [[HTML]] や [[MathML]] の仕様に基づくものですから、
新たに使用するべきではないでしょう。
;; [10] 現在の [[HTML]] の仕様では、 [[XML文書]]で [CODE(XML)@en[[[DOCTYPE]]]]
[[宣言]]を指定することは求められていません (禁止もされていませんが)。
[11] これらの[[公開識別子]]を使用しないと [[HTML]] の[[名前付き文字参照]]が
[[XML]] ([[XHTML]]) [[文書]]内で使えないことになります ([[定義済実体]]を除く)。
しかしこれらの[[公開識別子]]を使用したとしても [[Webブラウザー]]以外の
[[XML構文解析器]]が対応している保証はありませんから、そもそも [[XML]]
では [[HTML]] の[[名前付き文字参照]]は使用するべきではありません。
* 歴史
** HTML5
[15] 本規定は [[Webブラウザー]]における [[XML]] の実装との互換性のため、
[[Web Applications 1.0]] (現 [[HTML Standard]]) に追加されました。
** W3C HTML WG
[16] [[David Carlisle]] は[[公開識別子]]のリストに
[CODE[[[-//W3C//ENTITIES HTML MathML Set//EN//XML]]]]
を追加することを提案しました。本[[公開識別子]]は [[MathML]] 向けの [[DTD]]
の一部分として内部的に使われていたものでした。
[17] 本規定の趣旨は既存の [[XHTML]] 文書および [[Webブラウザー]]との互換性のためでしたから、
未対応の[[公開識別子]]を新たに追加するのは相応しくありません。そのため [[WHATWG]]
の [[Ian Hickson]] はこの提案を拒み、 [[HTML5]] に追加しませんでした。
[18] 通常ならこれで話が終わるところでしたが、本提案は [[WHATWG]] で却下された後に
[[W3C]] [[HTML WG]] で [[WD]] として出版し、標準化しようと試みられました。
ただ流石にどの [[Webブラウザー]]も実装せず無視しているものを[[勧告トラック]]の先に進めることはできなかったようで、
2015年には [[WG Note]] として出版され [SRC[>>14]] 正式に廃案となりました。
;; [19] 同じように [[WHATWG]] [[HTML5]] で却下された後に [[W3C]] [[HTML WG]]
に持ち込まれた例として [CODE(HTMLa)@en[[[longdesc]]]] がありますが、そちらは不思議なことに
[[W3C勧告]]になっています。こちらはそこまで強硬に[[勧告]]化したい人がいなかったのでしょうかね。
[REFS[
- [76] [CITE@en[Public Identifiers for entity resolution in XHTML]]
( ([TIME[2013-01-16 08:18:42 +09:00]] 版))
<http://www.w3.org/2003/entities/2007doc/xhtmlpubid.html>
- [77] [CITE[''''''[''''''whatwg'''''']'''''' Entity definitions in XHTML]]
( ([TIME[2013-01-17 18:58:07 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-January/038707.html>
- [80] [CITE@en[Public Identifiers for entity resolution in XHTML]]
( ([TIME[2013-02-28 19:03:05 +09:00]] 版))
<http://www.w3.org/TR/2013/WD-xhtml-pubid-20130228/>
- [82] [CITE@en[Public Identifiers for entity resolution in XHTML]]
( ([TIME[2013-08-22 23:43:40 +09:00]] 版))
<http://www.w3.org/TR/2013/WD-xhtml-pubid-20130822/>
- [13] [CITE@en[Public Identifiers for entity resolution in XHTML]] ([TIME[2013-08-14 02:05:45 +09:00]] 版) <http://www.w3.org/2003/entities/2007doc/xhtml-pubid.html>
- [14] [CITE@en[Public Identifiers for entity resolution in XHTML]] ([TIME[2015-03-06 03:15:41 +09:00]] 版) <http://www.w3.org/TR/2015/NOTE-xhtml-pubid-20150317/>
]REFS]
* メモ
[6] [[HTML Standard]] は、これは厳密には [[XML]] 仕様に対する[[意図的違反]]ではないものの、
その精神には反している [SRC[>>1]] と述べています。 [[XML]] 仕様上は指定された[[システム識別子]]の
[[URL]] を無視して[[型録]]等に従っても違反ではありませんから、 >>3
のような動作は仕様違反ではありません。ただ >>2 のような[[公開識別子]]が元々意図していた [[DTD]]
と >>4 のような [[DTD]] は明らかに異なるもので、異なる[[公開識別子]]と [[DTD]]
を結びつけるのは確かに仕様の精神には反しているのかもしれません。