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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (show annotations) (download)
Sat Jan 26 13:55:42 2013 UTC (12 years, 4 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.7: +5 -1 lines
File MIME type: text/plain
updated by (anon)

1
2 * 仕様書
3
4 [REFS[
5 - [20] [CITE@en-US[DOM Standard]] ([TIME[2012-11-23 14:12:13 +09:00]] 版) <http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature>
6 - [22] [CITE[Scalable Vector Graphics (SVG) 2]] ([TIME[2012-11-29 19:07:20 +09:00]] 版) <https://svgwg.org/svg2-draft/single-page.html#chapter-feature>
7 - [23] [CITE[Scalable Vector Graphics (SVG) 2]] ([TIME[2012-11-29 19:07:20 +09:00]] 版) <https://svgwg.org/svg2-draft/single-page.html#svgdom-FeatureStrings>
8 - [24] [CITE[Scalable Vector Graphics (SVG) 2]] ([TIME[2012-11-29 19:07:20 +09:00]] 版) <https://svgwg.org/svg2-draft/single-page.html#struct-ConditionalProcessingRequiredFeaturesAttribute>
9 ]REFS]
10
11 * 構文
12
13 [3] 機能名では、大文字・小文字は区別されません [SRC[DOM 1 [ABBR[FE] [First Edition]] [CODE(DOMm)[hasFeature]], DOM 1 [ABBR[SE] [Second Edition]] [CODE(DOMm)[hasFeature]], DOM 2 Core [CODE(DOMm)[hasFeature]], DOM 3 Core 1.3.6]]。
14
15 DOM 1 [ABBR[FE] [First Edition]] では、 [SAMP(DOM)[HTML]] と [SAMP(DOM)[XML]]
16 の2つの値だけが認められていました
17 [SRC[DOM 1 [ABBR[FE] [First Edition]] [CODE(DOMm)[hasFeature]]]]。
18 DOM 1 [ABBR[SE] [Second Edition]] と DOM 2 は、
19 [[XML 1.0]] の [CODE(ABNF)[[[Name]]]] でなければならないとしています
20 [SRC[DOM 1 [ABBR[SE] [Second Edition]] [CODE(DOMm)[hasFeature]], DOM 2 Core [CODE(DOMm)[hasFeature]]]]。
21 DOM 3 にはこのような制限はないようです。
22
23 [9]
24 >>3 だけしか規定がないようですが、
25 [CODE(DOMp)[[[features]]]] で使い物になる値にしたければ、次の配慮が必要です。
26 - 最初の1文字に [CODE(char)[+]] を使わない
27 - [CODE(char)[[[SP]]]] を使わない
28 - 名前は数字からはじめない。
29 版は数字からはじめる。
30
31 版は、メソッドの引数として使われるところで [Q[version number]]
32 とされていますから、数しか認められないと思われます。
33 DOM 1 では [SAMP(DOM)[1.0]] だけ、 DOM 2 では [SAMP(DOM)[1.0]] と
34 [SAMP(DOM)[2.0]] だけが指定できるとされていました
35 [SRC[DOM 1 [ABBR[FE] [First Edition]] [CODE(DOMm)[hasFeature]], DOM 1 [ABBR[SE] [Second Edition]] [CODE(DOMm)[hasFeature]], DOM 2 Core [CODE(DOMm)[hasFeature]]]]。
36 DOM 3 ではそのような制限はないようです。
37
38 [11]
39 衝突の虞を防ぐため、 DOM 仕様書以外で定義する機能の名前は固有にするべきです。
40 衝突を防ぐ方法として、以前は[[逆ドメイン名]]を使うべきとされていました
41 [SRC[DOM 1 [ABBR[SE] [Second Edition]] [CODE(DOMm)[hasFeature]], DOM 2 Core [CODE(DOMm)[hasFeature]]]] が、
42 後に DOM 仕様書の規定外に改められました [SRC[DOM 2 Errata core-5, DOM 3 Core 1.3.6]]。
43
44 [[SVG 1.0]] の DOM は逆ドメイン名の機能名を使っていましたが、
45 [[SVG 1.1]] では [[URI参照]]を使っています。 SVG の DOM
46 以外の機能名やプログラム言語・ライブラリ等で機能名を識別するために
47 URI 参照が使われることが増えており、そのため逆ドメイン名より自由度が高い
48 URI 参照を使えるようにと DOM の規定も変更されたのでしょう。
49
50 [[#comment]]
51
52
53 * 既知の値
54
55 [4]
56 ,機能名 ,版 ,説明
57 ,[CODE(DOM)[[[Core]]]] ,[CODE(DOM)[2.0]] ,Core Module (Level 2) [SRC[DOM 2 Core 1.2]] ,DOM 3 Core 1.4]]
58 ,[CODE(DOM)[Core]] ,[CODE(DOM)[3.0]] ,Core Module (Level 3) [SRC[DOM 3 Core 1.4]]
59 ,[CODE(DOM)[[[DDE-T]]]] ,[CODE(DOM)[1.0]] ,[SRC[DDE]]
60 ,[CODE(DOM)[[[HTML]]]] ,[CODE(DOM)[1.0]] ,HTML Module (Level 1) [SRC[DOM 1 2.1]]
61 ,[CODE(DOM)[[[org.atsc.dom.core]]]] , , ,[SRC[DASE]]
62 ,[CODE(DOM)[[[org.atsc.dom.environment]]]] , , ,[SRC[DASE]]
63 ,[CODE(DOM)[[[org.atsc.dom.events]]]] , , ,[SRC[DASE]]
64 ,[CODE(DOM)[[[org.atsc.dom.html]]]] , , ,[SRC[DASE]]
65 ,[CODE(DOM)[[[org.atsc.dom.native]]]] , , ,[SRC[DASE]]
66 ,[CODE(DOM)[[[org.atsc.dom.views]]]] , , ,[SRC[DASE]]
67 ,[CODE(DOM)[[[org.w3c.dom.smil]]]] , ,SMIL DOM の例 [SRC[DOM 1 [ABBR[SE] [Second Edition]] [CODE(DOMm)[hasFeature]]]]
68 ,[CODE(DOM)[[[org.w3c.dom.svg]]]] , ,SVG DOM の例 [SRC[DOM 2 Core [CODE(DOMm)[hasFeature]]]]
69 ,[CODE(DOM)[[[XML]]]] ,[CODE(DOM)[1.0]] ,XML Module (Level 1) [SRC[DOM 1 1.3]] ,DOM 3 Core 1.5]]
70 ,[CODE(DOM)[XML]] ,[CODE(DOM)[2.0]] ,XML Module (Level 2) [SRC[DOM 2 Core 1.3]] ,DOM 3 Core 1.5]]
71 ,[CODE(DOM)[XML]] ,[CODE(DOM)[3.0]] ,XML Module (Level 3) [SRC[DOM 3 Core 1.5]]
72 ,[CODE(DOM)[[[XMLVersion]]]] ,[CODE(DOM)[1.0]] ,[[XML 1.0]] [SRC[DOM 3 Core [CODE(DOMa)[xmlVersion]]]] ,DOM 3 Core 1.5]]
73 ,[CODE(DOM)[XMLVersion]] ,[CODE(DOM)[1.1]] ,[[XML 1.1]] [SRC[DOM 3 Core [CODE(DOMa)[xmlVersion]]]]
74
75 [10]
76 - [[DOM 1]]
77 -- [ABBR[SE] [Second Edition]] Compliance
78 <IW:DOM1:"introduction.html#ID-Compliance">
79 -- 1.3. Extended Interfaces
80 <IW:DOM1:"level-one-core.html#ID-E067D597">
81 -- 2.1. Introduction
82 <IW:DOM1:"level-one-html.html#ID-1176245063">
83 - [[DOM 2]]
84 -- Core Conformance
85 <IW:DOM2:"Core/introduction.html#ID-Conformance">
86 -- Core 1.2. Fundamental Interfaces
87 <IW:DOM2:"Core/core.html#ID-BBACDC08">
88 -- Core 1.3. Extended Interfaces
89 <IW:DOM2:"Core/core.html#ID-E067D597">
90 - [[DOM 3]]
91 -- Core Conformance
92 <IW:DOM3:"Core/introduction.html#ID-Conformance">
93 -- Core 1.4 Fundamental Interfaces: Core Module
94 <IW:DOM3:"Core/core.html#ID-BBACDC08">
95 -- Core [CODE(DOMa)[xmlVersion]]
96 <IW:DOM3:"Core/core.html#Document3-version">
97 -- Core 1.5 Extended Interfaces: XML Module
98 <IW:DOM3:"Core/core.html#ID-E067D597">
99 - [DASE] [CITE[DTV A S E L 1 (DASE-1) P 2: D A E ATSC Standard]]
100 <http://www.atsc.org/standards/a_100_2.pdf>
101 -- [CSECTION[5.3.1.2.1.4.1 DOMImplementation::hasFeature]]
102 - [DDE] [CITE[Declarative Data Essence -- Transitional]] <http://www.smpte.org/standards/pdf/s397m.pdf>
103 -- [CSECTION[8.1 DOM and Host Object Basis]]
104
105 [[#comment]]
106
107
108 * 他との関係
109
110 [5] 応用は、メソッド
111 [CODE(DOMm)[[[getDOMImplementation]] ([VAR(DOMp)[features]])]] やメソッド
112 [CODE(DOMm)[[[getDOMImplementationList]] ([VAR(DOMp)[features]])]]
113 を使うと特定の機能を実装した DOM [[実装]]を要求できます。
114
115 メソッド [CODE(DOMm)[[[hasFeature]] ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
116 やメソッド [CODE(DOMm)[[[isSupported]] ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
117 を使うと特定の機能が実装されているか調べることができます。
118 (版を問わない時は [CODE(DOM)[[[null]]]] や空文字列を指定できます。)
119
120 [6]
121 DOM 2 モジュールまででは、既存の界面の拡張である界面はみな、
122 その拡張に対応する機能に対応していれば、束縛規定の型変換機構を使って利用することができました。
123 (例えば、 [CODE(DOM)[[[Events]]]] 機能に対応していれば
124 [CODE(DOMi)[[[Node]]]] の実現値から [CODE(DOMi)[[[EventTarget]]]]
125 (is‐a [CODE(DOMi)[Node]]) の実現値を得ることができました。)
126 DOM 3 では、特定の DOM を実装する部分部品と強調できるべきとされています
127 ([[DOM//実装//混合]]を参照してください)。このため、メソッド
128 [CODE(DOMm)[[[getFeature]] ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
129 が用意されており、特定の機能を実装した実現値を得ることができます。
130
131 [7] メソッド
132 [CODE(DOMm)[hasFeature ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
133 やメソッド
134 [CODE(DOMm)[isSupported ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
135 では、 [CODE(DOMp)[feature]] 名の前に [CODE(char)[+]]
136 を付けることができます。付けなければ直接型変換可能な界面の機能だけが考慮されますが、
137 付けた場合は [CODE(DOMm)[getFeature ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
138 を使って得られるものも考慮に入れられます。
139
140 * 歴史
141
142 ** W3C DOM
143
144 [1] 各 [[DOM]] モジュールは1つ以上の[DFN[[RUBYB[機能] [feature]]]]
145 (名前と版) を定義します。
146
147 [REFS[
148 - [2] [[DOM 1]]
149 -- Core [CODE(DOMm)[hasFeature]]
150 <IW:DOM1:"level-one-core.html#ID-5CED94D7">
151 -- Errata Section 1.2 Interface DOMImplementation
152 <http://www.w3.org/DOM/updates/REC-DOM-Level-1-19981001-errata.html>
153 - [[DOM 2]]
154 -- Core [CODE(DOMm)[hasFeature]]
155 <IW:DOM2:"Core/core.html#ID-5CED94D7">
156 -- Errata core-5. 2001-01-17. [error]. DOMImplementation.hasFeature
157 <http://www.w3.org/2000/11/DOM-Level-2-errata#core-5>
158 -- Errata core-14. 2001-07-11. [clarification]. DOMImplementation.hasFeature
159 <http://www.w3.org/2000/11/DOM-Level-2-errata#core-14>
160 - [[DOM 3]]
161 -- Core 1.3.6 DOM Features
162 <IW:DOM3:"Core/core.html#DOMFeatures">
163 -- Core [CODE(DOMm)[getDOMImplementation]]
164 <IW:DOM3:"Core/core.html#ID-getDOMImpl">
165 -- Core [CODE(DOMm)[getDOMImplementationList]]
166 <IW:DOM3:"Core/core.html#ID-getDOMImpls">
167 -- Core [CODE(DOMm)[getFeature]]
168 <IW:DOM3:"Core/core.html#DOMImplementation3-getFeature">
169 -- Core [CODE(DOMm)[hasFeature]]
170 <IW:DOM3:"Core/core.html#ID-5CED94D7">
171 -- Core [CODE(DOMm)[getFeature]]
172 <IW:DOM3:"Core/core.html#Node3-getFeature">
173 ]REFS]
174
175 ** SVG
176
177 [REFS[
178 - [15] [CITE[SVG Document Object Model (DOM) – SVG 1.1 (Second Edition)]] ([TIME[2011-08-10 03:35:27 +09:00]] 版) <http://www.w3.org/TR/SVG/svgdom.html#FeatureStrings>
179 - [14] [CITE[Feature Strings – SVG 1.1 (Second Edition)]] ([TIME[2011-08-10 03:35:27 +09:00]] 版) <http://www.w3.org/TR/SVG/feature.html>
180 ]REFS]
181
182 *** SVG 1.0
183
184 [REFS[
185 - [17] [CITE[Document Structure - SVG 1.0 - 20010904]] ([TIME[2001-09-01 01:37:36 +09:00]] 版) <http://www.w3.org/TR/2001/REC-SVG-20010904/struct.html#RequiredFeaturesAttribute>
186 - [16] [CITE[SVG Document Object Model (DOM) - SVG 1.0 - 20010904]] ([TIME[2001-09-01 01:37:36 +09:00]] 版) <http://www.w3.org/TR/2001/REC-SVG-20010904/svgdom.html#FeatureStrings>
187 ]REFS]
188
189 *** SVG 1.1
190
191 @@
192
193 *** SVG 1.2
194
195 [REFS[
196 - [18] [CITE[Feature Strings – SVG Tiny 1.2]] ([TIME[2008-12-19 17:31:29 +09:00]] 版) <http://www.w3.org/TR/SVGTiny12/feature.html>
197 - [19] [CITE[Document Structure – SVG Tiny 1.2]] ([TIME[2008-12-19 17:31:29 +09:00]] 版) <http://www.w3.org/TR/SVGTiny12/struct.html#RequiredFeaturesAttribute>
198 ]REFS]
199
200 ** WHATWG
201
202 @@ HTML5
203
204 [REFS[
205 - [21] [CITE@en-US[DOM Standard]] ([TIME[2012-11-23 14:12:13 +09:00]] 版) <http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature>
206 ]REFS]
207
208 * 例
209
210 [8] 型変換の例:
211 [PRE[
212 my EventTarget $evt;
213 if ($node.[CODE(DOMm)[isSupported ([CODE(DOMp)["Events"]], [CODE(DOMp)["3.0"]])]]) {
214 ## 直接型変換可能な場合
215 $evt = (EventTarget) $node;
216 } else if ($node.[CODE(DOMm)[isSupported ([CODE(DOMp)["+Events"]], [CODE(DOMp)["3.0"]])]]) {
217 ## 間接的に型変換可能な場合
218 $evt = (EventTarget) $node.[CODE(DOMm)[getFeature ([CODE(DOMp)["Events"]], [CODE(DOMp)["3.0"]])]];
219 }
220 ]PRE]
221
222 [[#comment]]
223
224
225 * memo
226
227 [12]
228 実装によっては Core, 1.0 に true を返します。
229 ([[名無しさん]])
230
231
232
233 [13] [CITE@en[DOM features - WHATWG Wiki]]
234 ( ([TIME[2012-04-07 02:07:28 +09:00]] 版))
235 <http://wiki.whatwg.org/wiki/DOM_features>
236
237 [25] [CITE@en[Web Applications 1.0 r7562 Update references to DOM spec so they call it its real name. (Boy am I late to _this_ party.) This update will also make <iframe seamless> do event retargetting once DOM is updated to support that (see bug 18780 - marked this bug 'editorial' since this change doesn't work without the DOM stuff). Also, a lot of clean-up to affected areas.]]
238 ( ([TIME[2012-12-05 08:55:00 +09:00]] 版))
239 <http://html5.org/tools/web-apps-tracker?from=7561&to=7562>
240
241 [26] [CITE[Document Object Model for MathML]]
242 ( ([TIME[2001-02-20 21:36:11 +09:00]] 版))
243 <http://www.w3.org/TR/2001/REC-MathML2-20010221/chapter8.html>
244
245 [27] [CITE@EN[Delivery Context: Client Interfaces (DCCI) 1.0]]
246 ( ([TIME[2007-12-11 04:28:19 +09:00]] 版))
247 <http://www.w3.org/TR/2007/CR-DPF-20071221/#iddiv296456272>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24