/[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.2 - (hide annotations) (download)
Sun Apr 15 00:32:44 2012 UTC (13 years, 2 months ago) by wakaba
Branch: MAIN
Changes since 1.1: +5 -0 lines
File MIME type: text/plain
updated by (anon)

1 wakaba 1.1
2     [1] 各 [[DOM]] モジュールは1つ以上の[DFN[[RUBYB[機能] [feature]]]]
3     (名前と版) を定義します。
4    
5     [2] 仕様書:
6     - [[DOM 1]]
7     -- Core [CODE(DOMm)[hasFeature]]
8     <IW:DOM1:"level-one-core.html#ID-5CED94D7">
9     -- Errata Section 1.2 Interface DOMImplementation
10     <http://www.w3.org/DOM/updates/REC-DOM-Level-1-19981001-errata.html>
11     - [[DOM 2]]
12     -- Core [CODE(DOMm)[hasFeature]]
13     <IW:DOM2:"Core/core.html#ID-5CED94D7">
14     -- Errata core-5. 2001-01-17. [error]. DOMImplementation.hasFeature
15     <http://www.w3.org/2000/11/DOM-Level-2-errata#core-5>
16     -- Errata core-14. 2001-07-11. [clarification]. DOMImplementation.hasFeature
17     <http://www.w3.org/2000/11/DOM-Level-2-errata#core-14>
18     - [[DOM 3]]
19     -- Core 1.3.6 DOM Features
20     <IW:DOM3:"Core/core.html#DOMFeatures">
21     -- Core [CODE(DOMm)[getDOMImplementation]]
22     <IW:DOM3:"Core/core.html#ID-getDOMImpl">
23     -- Core [CODE(DOMm)[getDOMImplementationList]]
24     <IW:DOM3:"Core/core.html#ID-getDOMImpls">
25     -- Core [CODE(DOMm)[getFeature]]
26     <IW:DOM3:"Core/core.html#DOMImplementation3-getFeature">
27     -- Core [CODE(DOMm)[hasFeature]]
28     <IW:DOM3:"Core/core.html#ID-5CED94D7">
29     -- Core [CODE(DOMm)[getFeature]]
30     <IW:DOM3:"Core/core.html#Node3-getFeature">
31    
32     [[#comment]]
33    
34    
35     * 構文
36    
37     [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]]。
38    
39     DOM 1 [ABBR[FE] [First Edition]] では、 [SAMP(DOM)[HTML]] と [SAMP(DOM)[XML]]
40     の2つの値だけが認められていました
41     [SRC[DOM 1 [ABBR[FE] [First Edition]] [CODE(DOMm)[hasFeature]]]]。
42     DOM 1 [ABBR[SE] [Second Edition]] と DOM 2 は、
43     [[XML 1.0]] の [CODE(ABNF)[[[Name]]]] でなければならないとしています
44     [SRC[DOM 1 [ABBR[SE] [Second Edition]] [CODE(DOMm)[hasFeature]], DOM 2 Core [CODE(DOMm)[hasFeature]]]]。
45     DOM 3 にはこのような制限はないようです。
46    
47     [9]
48     >>3 だけしか規定がないようですが、
49     [CODE(DOMp)[[[features]]]] で使い物になる値にしたければ、次の配慮が必要です。
50     - 最初の1文字に [CODE(char)[+]] を使わない
51     - [CODE(char)[[[SP]]]] を使わない
52     - 名前は数字からはじめない。
53     版は数字からはじめる。
54    
55     版は、メソッドの引数として使われるところで [Q[version number]]
56     とされていますから、数しか認められないと思われます。
57     DOM 1 では [SAMP(DOM)[1.0]] だけ、 DOM 2 では [SAMP(DOM)[1.0]] と
58     [SAMP(DOM)[2.0]] だけが指定できるとされていました
59     [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]]]]。
60     DOM 3 ではそのような制限はないようです。
61    
62     [11]
63     衝突の虞を防ぐため、 DOM 仕様書以外で定義する機能の名前は固有にするべきです。
64     衝突を防ぐ方法として、以前は[[逆ドメイン名]]を使うべきとされていました
65     [SRC[DOM 1 [ABBR[SE] [Second Edition]] [CODE(DOMm)[hasFeature]], DOM 2 Core [CODE(DOMm)[hasFeature]]]] が、
66     後に DOM 仕様書の規定外に改められました [SRC[DOM 2 Errata core-5, DOM 3 Core 1.3.6]]。
67    
68     [[SVG 1.0]] の DOM は逆ドメイン名の機能名を使っていましたが、
69     [[SVG 1.1]] では [[URI参照]]を使っています。 SVG の DOM
70     以外の機能名やプログラム言語・ライブラリ等で機能名を識別するために
71     URI 参照が使われることが増えており、そのため逆ドメイン名より自由度が高い
72     URI 参照を使えるようにと DOM の規定も変更されたのでしょう。
73    
74     [[#comment]]
75    
76    
77     * 既知の値
78    
79     [4]
80     ,機能名 ,版 ,説明
81     ,[CODE(DOM)[[[Core]]]] ,[CODE(DOM)[2.0]] ,Core Module (Level 2) [SRC[DOM 2 Core 1.2]] ,DOM 3 Core 1.4]]
82     ,[CODE(DOM)[Core]] ,[CODE(DOM)[3.0]] ,Core Module (Level 3) [SRC[DOM 3 Core 1.4]]
83     ,[CODE(DOM)[[[DDE-T]]]] ,[CODE(DOM)[1.0]] ,[SRC[DDE]]
84     ,[CODE(DOM)[[[HTML]]]] ,[CODE(DOM)[1.0]] ,HTML Module (Level 1) [SRC[DOM 1 2.1]]
85     ,[CODE(DOM)[[[org.atsc.dom.core]]]] , , ,[SRC[DASE]]
86     ,[CODE(DOM)[[[org.atsc.dom.environment]]]] , , ,[SRC[DASE]]
87     ,[CODE(DOM)[[[org.atsc.dom.events]]]] , , ,[SRC[DASE]]
88     ,[CODE(DOM)[[[org.atsc.dom.html]]]] , , ,[SRC[DASE]]
89     ,[CODE(DOM)[[[org.atsc.dom.native]]]] , , ,[SRC[DASE]]
90     ,[CODE(DOM)[[[org.atsc.dom.views]]]] , , ,[SRC[DASE]]
91     ,[CODE(DOM)[[[org.w3c.dom.smil]]]] , ,SMIL DOM の例 [SRC[DOM 1 [ABBR[SE] [Second Edition]] [CODE(DOMm)[hasFeature]]]]
92     ,[CODE(DOM)[[[org.w3c.dom.svg]]]] , ,SVG DOM の例 [SRC[DOM 2 Core [CODE(DOMm)[hasFeature]]]]
93     ,[CODE(DOM)[[[XML]]]] ,[CODE(DOM)[1.0]] ,XML Module (Level 1) [SRC[DOM 1 1.3]] ,DOM 3 Core 1.5]]
94     ,[CODE(DOM)[XML]] ,[CODE(DOM)[2.0]] ,XML Module (Level 2) [SRC[DOM 2 Core 1.3]] ,DOM 3 Core 1.5]]
95     ,[CODE(DOM)[XML]] ,[CODE(DOM)[3.0]] ,XML Module (Level 3) [SRC[DOM 3 Core 1.5]]
96     ,[CODE(DOM)[[[XMLVersion]]]] ,[CODE(DOM)[1.0]] ,[[XML 1.0]] [SRC[DOM 3 Core [CODE(DOMa)[xmlVersion]]]] ,DOM 3 Core 1.5]]
97     ,[CODE(DOM)[XMLVersion]] ,[CODE(DOM)[1.1]] ,[[XML 1.1]] [SRC[DOM 3 Core [CODE(DOMa)[xmlVersion]]]]
98    
99     [10]
100     - [[DOM 1]]
101     -- [ABBR[SE] [Second Edition]] Compliance
102     <IW:DOM1:"introduction.html#ID-Compliance">
103     -- 1.3. Extended Interfaces
104     <IW:DOM1:"level-one-core.html#ID-E067D597">
105     -- 2.1. Introduction
106     <IW:DOM1:"level-one-html.html#ID-1176245063">
107     - [[DOM 2]]
108     -- Core Conformance
109     <IW:DOM2:"Core/introduction.html#ID-Conformance">
110     -- Core 1.2. Fundamental Interfaces
111     <IW:DOM2:"Core/core.html#ID-BBACDC08">
112     -- Core 1.3. Extended Interfaces
113     <IW:DOM2:"Core/core.html#ID-E067D597">
114     - [[DOM 3]]
115     -- Core Conformance
116     <IW:DOM3:"Core/introduction.html#ID-Conformance">
117     -- Core 1.4 Fundamental Interfaces: Core Module
118     <IW:DOM3:"Core/core.html#ID-BBACDC08">
119     -- Core [CODE(DOMa)[xmlVersion]]
120     <IW:DOM3:"Core/core.html#Document3-version">
121     -- Core 1.5 Extended Interfaces: XML Module
122     <IW:DOM3:"Core/core.html#ID-E067D597">
123     - [DASE] [CITE[DTV A S E L 1 (DASE-1) P 2: D A E ATSC Standard]]
124     <http://www.atsc.org/standards/a_100_2.pdf>
125     -- [CSECTION[5.3.1.2.1.4.1 DOMImplementation::hasFeature]]
126     - [DDE] [CITE[Declarative Data Essence -- Transitional]] <http://www.smpte.org/standards/pdf/s397m.pdf>
127     -- [CSECTION[8.1 DOM and Host Object Basis]]
128    
129     [[#comment]]
130    
131    
132     * 他との関係
133    
134     [5] 応用は、メソッド
135     [CODE(DOMm)[[[getDOMImplementation]] ([VAR(DOMp)[features]])]] やメソッド
136     [CODE(DOMm)[[[getDOMImplementationList]] ([VAR(DOMp)[features]])]]
137     を使うと特定の機能を実装した DOM [[実装]]を要求できます。
138    
139     メソッド [CODE(DOMm)[[[hasFeature]] ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
140     やメソッド [CODE(DOMm)[[[isSupported]] ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
141     を使うと特定の機能が実装されているか調べることができます。
142     (版を問わない時は [CODE(DOM)[[[null]]]] や空文字列を指定できます。)
143    
144     [6]
145     DOM 2 モジュールまででは、既存の界面の拡張である界面はみな、
146     その拡張に対応する機能に対応していれば、束縛規定の型変換機構を使って利用することができました。
147     (例えば、 [CODE(DOM)[[[Events]]]] 機能に対応していれば
148     [CODE(DOMi)[[[Node]]]] の実現値から [CODE(DOMi)[[[EventTarget]]]]
149     (is‐a [CODE(DOMi)[Node]]) の実現値を得ることができました。)
150     DOM 3 では、特定の DOM を実装する部分部品と強調できるべきとされています
151     ([[DOM//実装//混合]]を参照してください)。このため、メソッド
152     [CODE(DOMm)[[[getFeature]] ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
153     が用意されており、特定の機能を実装した実現値を得ることができます。
154    
155     [7] メソッド
156     [CODE(DOMm)[hasFeature ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
157     やメソッド
158     [CODE(DOMm)[isSupported ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
159     では、 [CODE(DOMp)[feature]] 名の前に [CODE(char)[+]]
160     を付けることができます。付けなければ直接型変換可能な界面の機能だけが考慮されますが、
161     付けた場合は [CODE(DOMm)[getFeature ([VAR(DOMp)[feature]], [VAR(DOMp)[version]])]]
162     を使って得られるものも考慮に入れられます。
163    
164     [[#comment]]
165    
166    
167     * 例
168    
169     [8] 型変換の例:
170     [PRE[
171     my EventTarget $evt;
172     if ($node.[CODE(DOMm)[isSupported ([CODE(DOMp)["Events"]], [CODE(DOMp)["3.0"]])]]) {
173     ## 直接型変換可能な場合
174     $evt = (EventTarget) $node;
175     } else if ($node.[CODE(DOMm)[isSupported ([CODE(DOMp)["+Events"]], [CODE(DOMp)["3.0"]])]]) {
176     ## 間接的に型変換可能な場合
177     $evt = (EventTarget) $node.[CODE(DOMm)[getFeature ([CODE(DOMp)["Events"]], [CODE(DOMp)["3.0"]])]];
178     }
179     ]PRE]
180    
181     [[#comment]]
182    
183    
184     * memo
185    
186     [12]
187     実装によっては Core, 1.0 に true を返します。
188     ([[名無しさん]])
189    
190 wakaba 1.2
191    
192     [13] [CITE@en[DOM features - WHATWG Wiki]]
193     ( ([TIME[2012-04-07 02:07:28 +09:00]] 版))
194     <http://wiki.whatwg.org/wiki/DOM_features>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24