Selektory#

Uchwyty API#

Aby ułatwić pisanie specyfikacji używających koncepcji Selektorów najnowszy moduł definiuje kilka uchwytów API (API hooks), które mogą być wywoływane z poziomu innych specyfikacji.

Parsowanie selektora#

Algorytm określa w jaki sposób parsować selektor # (parse a selector) z łańcucha znakowego source. Zwracanym wynikiem będzie lista selektorów kompleksowych lub błąd.

  1. Niech selektor będzie wynikiem parsowania source względem gramatyki complex_selector_list. Jeśli gramatyka nie zostanie zachowana to zwróć błąd.
  2. W przeciwnym razie, jeśli jakieś selektory proste w selector nie są rozpoznawane przez aplikację kliencką, lub selector jest nieprawidłowy w jakiś inny sposób (np. zawiera niezadeklarowany prefiks przestrzeni nazw), to zwróć błąd.
  3. W przeciwnym razie zwróć selector.

Parsowanie selektora relatywnego#

Algorytm określa w jaki sposób parsować selektor relatywny # (parse a relative selector) z łańcucha znakowego source, w oparciu o zestaw elementów referencyjnych refs. Zestaw elementów referencyjnych musi zawierać zero lub więcej elementów, lub pojedynczy wirtualny korzeń zawężający, jak np. obiekt typu Document lub DocumentFragment. Zwracanym wynikiem będzie lista selektorów kompleksowych lub błąd.

  1. Niech selektor będzie wynikiem parsowania source względem gramatyki complex_selector_list. Jeśli gramatyka nie zostanie zachowana to zwróć błąd.
  2. W przeciwnym razie, jeśli jakieś selektory proste w selector nie są rozpoznawane przez aplikację kliencką, lub selector jest nieprawidłowy w jakiś inny sposób (np. zawiera niezadeklarowany prefiks przestrzeni nazw), to zwróć błąd.
  3. W przeciwnym razie absolutyzuj selektor z zestawem elementów referencyjnych w postaci refs.
  4. W przeciwnym razie zwróć selector.

Dopasowanie selektora#

Algorytm określa w jaki sposób dopasować selektor # (match a selector) selector względem drzewa węzłów nodes. Opcjonalnie może być przekazany korzeń zawężający i metoda zawężenia (obejmujące zawężenie lub filtrujące zawężenie). Opcjonalnie może być przekazany wyraźny zestaw elementów referencyjnych element set (również pusty). Zwracanym wynikiem będzie lista z zerem lub większą liczbą elementów.

Jeśli wyraźny zestaw elementów referencyjnych został przekazany, to poniższy algorytm może zostać wywołany bez parametru drzewa węzłów. Drzewo węzłów będzie ustalane w oparciu o każdy element w zestawie; dzięki temu łatwiej wywołać algorytm dla selektora relatywnego.

  1. Jeśli wyraźny zestaw elementów referencyjnych nie został przekazany, to zwróć wynik dopasowywania selector względem node, z korzeniem zawężającym i metodą zawężającą, jeśli zostały przekazane.
  2. W przeciwnym razie niech result będzie pustą listą.
  3. Dla każdego (for each) elementu reference element w element set:

    1. Jeśli nodes nie został przekazany, to niech nodes będzie wszystkimi węzłami z tego samego drzewa, co reference element.
    2. Niech single result będzie wynikiem dopasowywania selector względem nodes, z korzeniem zawężającym i metodą zawężającą, jeśli zostały przekazane, oraz zestawem elementów referencyjnych jako reference element.
    3. Dodaj każdy element z single result do result, chyba że element jest już obecny w result.
  4. Zwróć result.
Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Selektory (H1) Uchwyty API (H2) Parsowanie selektora (H3) Parsowanie selektora relatywnego (H3) Dopasowanie selektora (H3)