/[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.6 - (hide annotations) (download)
Wed Dec 5 13:05:29 2012 UTC (12 years, 6 months ago) by wakaba
Branch: MAIN
Changes since 1.5: +5 -1 lines
File MIME type: text/plain
updated by (anon)

1 wakaba 1.3
2     * 仕様書
3    
4     [REFS[
5 wakaba 1.4 - [20] [CITE@en-US[DOM Standard]] ([TIME[2012-11-23 14:12:13 +09:00]] 版) <http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature>
6 wakaba 1.5 - [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 wakaba 1.3 ]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 wakaba 1.5 [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 wakaba 1.3 *** 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 wakaba 1.4 ** 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 wakaba 1.3 * 例
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 wakaba 1.6 <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>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24