[14]
DOMString
は、
Web IDL における主たる文字列型です。
実質的に
JavaScript
の文字列型と同じものを表しているといえるものです。
[21] DOMString
とは、「DOM における文字列」
という程度の意味の名称です。
「DOM
」とついていることにさしたる意味はありません。
String
との関係[15]
Web IDL で DOMString
型とされているものは、
JavaScript の String
(プリミティブ型) に相当しています。
[16] JavaScript の String
は Web IDL
の DOMString
にそのまま無変換で引き渡すことができますし、
そうでないものは ToString
による型変換を経て引き渡されます。
[17] 逆に Web IDL の DOMString
は
JavaScript に引き渡されると String
(プリミティブ型)
となります。
[18]
DOMString
は16ビット符号単位の配列として文字列を表しています
(これは JavaScript の String
と同じです)。
[19] 一般的にはこれは UTF-16 と呼ばれていますが、 サロゲート符号位置が単体で出現する不正な UTF-16 となる場合があります。つまり WTF-16 です。
[22] もっともこれは必ずしも内部的に WTF-16 を文字コードとして実装しなければならないわけではありません。 諸々の挙動が観測できない限りにおいて、利用者エージェントは好きな文字コードを使えます。 例えば WTF-8 を使って実装することができます。
[20]
Web IDL には他に USVString
や CSSOMString
もあります。
[1] DOMString
は、 DOM の仕様書やその IDL
定義で使われている型です。
多くのプログラム言語等に存在する文字列型の DOM
版を特にこう呼ぶと考えて良いでしょう。
[2] DOM は言語非依存を頑張ってるとか言ってるくせに、
この DOMString
にはかなり厳しい制限があります。
それに場合によっては不合理な挙動も規定されています。
[8] >>2 DOM 3 仕様書では DOMString
の章は基本型の章の一部になりまして、
基本型の章には bindings may use different types
と書いてあるので、 DOMString
を使わないことでこの問題は回避できると思われます。
(ただ、 length
系で UTF-16 でないことによる面倒臭さは残りますが。)
DOMString
は連続する16ビット値です。 IDL
的に書くと、 typedef sequence<unsigned short> DOMString;
と表されます。DOMString
を UTF-16 で符号化しなければなりません。従って1文字が2つの16ビット値で表現される (サロゲート・ペア) こともあります。DOMString
という名前を使う必要はありません。例えば Java 束縛では、 (Java 標準の)
String
型 (こちらも UTF-16 で文字を表現。)
を使います。[4] >>2 でいう不合理とは、具体的には、次の事項が挙げられます。
DOMString
Type
IW:DOM3:"Core/core.html#ID-C74D1578"U+10000
以上の値の文字が含まれる時に値を適当に増やすとかの工作が必要になります。[12] Definition of DOMString (Cameron McCormack 著, 版) http://lists.w3.org/Archives/Public/www-dom/2007AprJun/0005.html (名無しさん)
[5] 文字列比較について。
原則: 文字列を構成する16ビット値をバイナリ比較します。 すなわち、大文字・小文字は区別します。
HTML の場合: XML でなく従来の HTML を扱う場合、
正規化:
[9] 仕様書:
[10] 文字群は次の時、 XML 1.1 附属書 B で定義された通り完全正規化されています。 [DOM 3]
normalize-characters
が true
に設定された場合。Document
.normalizedDocument
()
またはメソッド Node
.normalize
()
によって引数 normalize-characters
]] が true
に設定された場合。この2つのメソッドの場合を除いて、一般に DOM メソッドを使用した文字の操作で完全正規化状態が保存されることは保証されません。
[23] OMG IDL から Web IDL への移行に伴い、
DOMString
は
Web IDL
で定められるデータ型の1つとなりました。
[13] IRC logs: freenode / #whatwg / 20130809 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20130809