Ogólne#
Collections#
W tym miejscu umieszczam powtarzające się specyficzne pojęcia i algorytmy w dziale COLLECTIONS, czyli mogą mieć one zastosowanie dla wszystkich interfejsów z tego działu.
Pojęcia#
collection
live
static
Kolekcja # (collection) to obiekt, który reprezentuje listę węzłów z drzewa węzłów. Kolekcja może być aktualna # (live) lub statyczna # (static). Jeśli nie oznaczono inaczej, to kolekcja zawsze jest aktualna (szczegóły).
Właściwości i metody w obiektach reprezentujących aktualne kolekcje muszą operować na bieżących bazowych danych (underlying data), a nie na migawce tych danych.
filter
root
W chwili tworzenia kolekcji zostaje ona skojarzona z filtrem # (filter) oraz korzeniem # (root).
represents
Następnie kolekcja reprezentuje # (represents) widok poddrzewa zakorzenionego w skojarzonym korzeniu, zawierającego tylko te węzły, które pasują do skojarzonego filtra. Widok ten jest liniowy (podobnie zresztą jak w przypadku iteratora węzłowego). Jeśli nie sprecyzowano żadnych specyficznych wymagań to węzły w kolekcji muszą być posortowane zgodnie z porządkiem drzewa (szczegóły).
supported property indices
Obsługiwane indeksy właściwości # (supported property indices) w obiekcie kolekcji są liczbami z przedziału od 0
do liczby węzłów z reprezentacji kolekcji minus jeden. Jeśli nie będzie takich elementów, to indeksy właściwości nie są obsługiwane.
supported property names
Obsługiwane nazwy właściwości # (supported property names) w obiekcie kolekcji, wszystkie niewyliczalne, są wartościami z listy zwracanej według następujących kroków:
- Niech result będzie pustą listą.
Dla każdego (for each) elementu element z widoku poddrzewa reprezentowanego przez kolekcję, zgodnie z porządkiem drzewa, wykonaj poniższe podkroki:
- Jeśli element ma unikatowy identyfikator, który nie znajduje się w result, to dodaj unikatowy identyfikator posiadany przez element do result.
- Jeśli element znajduje się w przestrzeni nazw HTML i ma swój atrybut
name
, którego wartością nie jest pusty łańcuch znakowy i nie znajduje się ona już w result, to dodaj wartość tego atrybutname
posiadanego przez element do result.
- Zwróć result.