Podstawy#

Typy danych#

W specyfikacjach DOM bardzo często mamy do czynienia z różnymi typami danych. Pojawiają się one przy definiowaniu różnych metod i atrybutów w interfejsach Web IDL. Jedne typy mogą reprezentować złożone struktury, np. być interfejsami, inne typy mogą być prostymi wartościami liczbowymi lub tekstowymi.

W tym miejscu scharakteryzuję krótko najważniejsze proste typy danych, gdyż w większości przypadków zostały one przeniesione ze specyfikacji DOM4 do specyfikacji Web IDL.

DOMString#

Dane tekstowe są oznaczane jako typ DOMString. Typ ten był definiowany we wcześniejszych specyfikacjach DOM (DOM3, DOM2), obecnie został przeniesiony do Web IDL.

DOMString jest sekwencją 16-bitowych jednostek. 16-bitowa jednostka to podstawowa jednostka dla DOMString. Pojedynczy znak, przykładowo w postaci numerycznego odwołania znakowego, może odpowiadać jednej lub dwóm 16-bitowym jednostkom.

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
valuetype DOMString sequence<unsigned short>;

Typ DOMString odpowiada zbiorowi wszystkich możliwych sekwencji jednostek kodowych # (code units). Takie sekwencje są powszechnie interpretowane jako zakodowane łańcuchy znakowe UTF-16, chociaż nie jest to wymagane. W poprzednich specyfikacjach DOMString był definiowany jako sekwencja <unsigned short>, jednak Web IDL opisuje już DOMString jako wewnętrzny typ, tak aby uniknąć specjalnego sekwencyjnego opakowywania w różnych sytuacjach, w których łańcuchy znakowe są wymagane.

Należy zauważyć, że wartość null nie należy do typu DOMString. Aby zezwolić na stosowanie wartości null obok danych tekstowych należy posłużyć się deklaracją DOMString? (tzw. typ nullable).

Oczywiście w praktyce zazwyczaj operujemy na czytelnych postaciach znaków z danej czcionki, zamiast bezpośrednio pracować na jednostkach kodowych Unicode czy wartościach liczbowych z kodowania (np. UTF-16). Kodowaniem i dekodowaniem tych wartości do czytelnych postaci zajmują się aplikacje.

Domyślne kodowanie UTF-16 zostało wybrane ze względu na powszechne zastosowanie. Należy pamiętać, że w HTML i XML zestaw znaków dokumentu (a więc oznaczenia dla numerycznych referencji znakowych) jest oparty na UCS. Pojedyncza numeryczna referencja znakowa w źródle dokumentu może zatem w niektórych przypadkach odpowiadać dwóm 16-bitowym jednostkom w DOMString (wysoki i niski surogat zastępczy).

O ile Web IDL wprowadza nazwę DOMString dla danych tekstowych, to wiązania w rzeczywistych implementacjach mogą stosować inne nazwy. Dla przykładu, w Javie i ECMAScripcie typ DOMString jest wiązany z typem string, ponieważ on także stosuje kodowanie UTF-16.

Web IDL dokładnie definiuje algorytm zamiany wartości typu DOMString na sekwencję znaków Unicode.

Więcej na temat zestawu Unicode, wcześniejszych i obecnych standardów kodowania umieściłem w kursie HTML 4.01 (dział "Zestawy znaków - Wstęp").

DOMTimeStamp#

Typ DOMTimeStamp jest specjalnym typem danych dla upływu czasu, potocznie zwanym znacznikiem czasu (time stamp). Typ ten był definiowany we wcześniejszych specyfikacjach DOM (DOM3, DOM2), obecnie został przeniesiony do Web IDL.

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
typedef unsigned long long DOMTimeStamp;

Znacznik czasu służy do reprezentowania liczby milisekund, jako bezwzględnej (absolute) ilości czasu (w stosunku do niektórych epok) lub jako względnej (relative) ilości czasu. Specyfikacje, które korzystają z tego typu muszą określić, w jaki sposób liczba milisekund będzie interpretowana.

Chociaż specyfikacje DOM korzystają z typu DOMTimeStamp, to wiązania w rzeczywistych implementacjach mogą stosować inne typy. Przykładowo w przeszłości dla Javy, DOMTimeStamp był wiązany z typem long. W przypadku ECMAScript, DOMTimeStamp był wiązany z typem Date ponieważ zakres dla liczb całkowitych był zbyt mały (obecnie problem ten nie występuje i wykorzystywany jest typ number).

Zazwyczaj znacznik czasu wyraża ilość milisekund, jakie upłynęły od 00:00:00 UTC 1 stycznia 1970 roku aż do chwili obecnej. Reprezentuje więc tzw. czas uniksowy (Unix time/POSIX time), który na potrzeby programistyczne został zaimplementowany przez pozostałe systemy.

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Podstawy (H1) Typy danych (H2) DOMString (H3) DOMTimeStamp (H3)