<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <code class="DOMi">CharacterData</code> 界面は、 <code class="DOMi"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Node</anchor></code>
界面を継承し、文字データの操作に関わる機能を提供します。</p><p>この界面そのものは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">節</anchor>には対応せず、
この界面を継承した節界面を通して利用します。</p><p>なお、文字位置は <code class="DOM">0</code> から数えます。</p><section><h1>継承関係</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CharacterData</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターフェイス</anchor>は、
<code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Node</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターフェイス</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">継承</anchor>しています。</p><figure class="corollary"><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 従って <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EventTarget</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターフェイス</anchor>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">継承</anchor>しています。</p></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CharacterData</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターフェイス</anchor>は次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターフェイス</anchor>により<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">継承</anchor>されています。</p><figure class="short list"><ul><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Comment</anchor></code></li><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ProcessingInstruction</anchor></code></li><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Text</anchor></code></li></ul></figure><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml" class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Attr</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターフェイス</anchor>と一部性質が似ているところもありますが、
継承関係にはありません。</comment-p></section><section><h1>メンバー</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end><table><tbody><tr><td>属性</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">data</anchor></td><td>文字データ</td><td>[DOM1]</td></tr><tr><td>読取専用属性</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">length</anchor></td><td>文字データ長</td><td>[DOM1]</td></tr><tr><td>method</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">substringData</anchor></td><td>文字データの一部を取出す</td><td>[DOM1]</td></tr><tr><td>method</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">appendData</anchor></td><td>文字データに付加</td><td>[DOM1]</td></tr><tr><td>method</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">insertData</anchor></td><td>文字データを挿入</td><td>[DOM1]</td></tr><tr><td>method</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">deleteData</anchor></td><td>文字データを削除</td><td>[DOM1]</td></tr><tr><td>method</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">replaceData</anchor></td><td>文字データを置換</td><td>[DOM1]</td></tr></tbody></table></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal> 特定言語の作法に強く影響されている気がしないでもありませんが(w</p><ul><li>[DOM1] <em>Document Object Model (Core) Level 1</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-FF21A306">http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-FF21A306</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <code class="DOMi">CharacterData</code> は、任意の長さの文字列を扱えなければなりません。しかしながら、束縛によっては <code class="DOM"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOMString</anchor></code> で扱える長さの制限があって、よって <code class="DOM">data</code> 属性で値全体を取出すことが出来ないかもしれません (その時は <code class="DOM">DOMSTRING_SIZE_ERR</code> 例外が発生します)。そのような場合には、 <code class="DOMmethod">substringData</code> method を使うように、と仕様書は言っています。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> [DOM2] <em>Document Object Model Core</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-FF21A306">http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-FF21A306</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal> 実際、 method の多くは <code class="DOMp">offset</code> パラメーターを持ってますが、これは UTF-16 で表した時のオクテット列中の文字の位置 (16ビット1単位) です。だから <code class="DOM">DOMString</code> を勝手に UTF-8 とかにして実装すると、面倒なことになります。だから、言語中立なはずの界面としての DOM で <code class="DOMi">CharacterData</code> は駄目すぎます。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 変な見栄?はってどんな言語でも使えますよ〜なんていわずに、最初から文字列型を UTF-16 に出来るどんな言語でも使えますよ〜と言っとけばいいのにねぇ。</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <cite xml:lang="en">Fix Web IDL extended attribute usage for recent changes</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">domenic</anchor>著, <time>2017-04-25 08:33:14 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/commit/f9ede86ea35753b40f6070352e2f150bc1bd2482">https://github.com/whatwg/dom/commit/f9ede86ea35753b40f6070352e2f150bc1bd2482</anchor-external></p></section></body></html>