4. Definiowanie modułów abstrakcyjnych

Zawartość

Ten rozdział ma charakter normatywny.

Moduł abstrakcyjny to definicja modułu XHTML przy użyciu słownego opisu i pewnej ilości nieformalnych konwencji oznakowania. Choć taka definicja generalnie nie jest użyteczna dla maszyny przetwarzającej typy dokumentu, może jednak być bardzo pomocna w zrozumieniu zawartości modułu przez ludzi. Ten rozdział definiuje sposób, w jaki są definiowane moduły abstrakcyjne XHTML. Moduły zgodne z XHTML nie wymagają podawania definicji w formie modułu abstrakcyjnego. Zachęca się jednak każdego, kto opracowuje moduły XHTML, by dostarczał moduły abstrakcyjne w celu ułatwienia użytkowania modułu.

4.1. Konwencje składniowe

Moduły abstrakcyjne nie są definiowane za pomocą formalnej gramatyki. Jednakże definicje stosują się do opisanych poniżej konwencji składniowych. Konwencje te są podobne do stosowanych w DTD XML i powinny być znajome dla autorów DTD XML. Każdy pojedynczy element składniowy może być łączony z innymi w celu stworzenia bardziej złożonego wyrażenia zgodnego ze zdefiniowaną tu algebrą.

nazwa elementu
Gdy element jest włączony do modelu zawartości, jego dokładna nazwa będzie umieszczona na liście.
zbiór zawartości
Niektóre moduły definiują wykazy dokładnych nazw elementów zwane zbiorami zawartości. Gdy zbiór zawartości jest włączony do modelu zawartości, jego nazwa będzie umieszczona na liście.
expr ?
Dozwolone zero lub jedno wystąpienie expr.
expr +
Wymagane jedno lub więcej wystąpień expr.
expr *
Dozwolone zero lub więcej wystąpień expr.
a , b
Wyrażenie a jest wymagane, z następującym po nim wyrażeniem b.
a | b
Wymagane jest wystąpienie albo wyrażenia a, albo wyrażenia b.
a - b
Wyrażenie a jest dozwolone, z pominięciem elementów z wyrażenia b.
nawiasy
Gdy wyrażenie jest umieszczone w nawiasie, analizowanie jakiegokolwiek podwyrażenia wewnątrz nawiasu poprzedza analizowanie wyrażeń spoza nawiasu (rozpoczynając od najgłębszego poziomu zagnieżdżenia).
rozszerzanie predefiniowanych elementów
W niektórych wypadkach moduł dodaje do elementu atrybuty. Wtedy po nazwie elementu występuje znak et (&).
definiowanie wymaganych atrybutów
Gdy element wymaga definicji atrybutu, po nazwie tego atrybutu występuje gwiazdka (*).
definiowanie typu wartości atrybutu
Gdy moduł definiuje typ wartości atrybutu, robi to poprzez umieszczenie typu w nawiasie po nazwie atrybutu.
definiowanie dopuszczalnych wartości atrybutów
Gdy moduł definiuje dopuszczalne wartości atrybutu, robi to poprzez literalne umieszczenie dopuszczalnych wartości (ujętych w cudzysłów), rozdzielonych pionowymi kreskami (|), wewnątrz nawiasu następującego po nazwie atrybutu. Jeśli atrybut posiada wartość domyślną, po wartości występuje gwiazdka (*). Jeśli atrybut posiada wartość stałą, po nazwie atrybutu występuje znak równości (=), a stała wartość ujęta jest w cudzysłów.

4.2. Typy zawartości

Definicje modułów abstrakcyjnych definiują minimalne, niepodzielne modele zawartości dla każdego modułu. Te minimalne modele zawartości odnoszą się do elementów w samym module. Mogą również odnosić się do elementów w innych modułach, od których zależny jest moduł abstrakcyjny. Wreszcie, model zawartości w wielu wypadkach wymaga, by jako zawartość jednego lub więcej elementów dozwolony był tekst. Symbolem używanym na oznaczenie tekstu jest wtedy PCDATA. Jest to termin zdefiniowany w Rekomendacji XML 1.0 odnoszący się do przetwarzanych danych znakowych. Typ zawartości może być też zdefiniowany jako EMPTY („pusty”), co oznacza, że w swym minimalnym modelu zawartości element nie ma żadnej zawartości.

4.3. Typy atrybutów

W niektórych wypadkach konieczne jest zdefiniowanie typów wartości atrybutu lub zbioru dozwolonych wartości atrybutów. Następujące typy atrybutów (zdefiniowane w Rekomendacji XML 1.0) są używane w definicjach modułów abstrakcyjnych:

Typ atrybutu Definicja
CDATA Dane znakowe
ID Identyfikator unikatowy dla dokumentu
IDREF Odwołanie do unikatowego dla dokumentu identyfikatora
IDREFS Lista rozdzielonych spacją odwołań do unikatowych dla dokumentu identyfikatorów
NAME Nazwa z takimi samymi ograniczeniami znakowymi jak powyższe ID
NMTOKEN Nazwa złożona tylko z leksemów nazwy (zdefiniowanych w XML 1.0 [XML])
NMTOKENS Jedna lub więcej wartości NMTOKEN rozdzielonych białymi znakami
PCDATA Przetwarzane dane znakowe

Obok powyższych predefiniowanych typów danych, modularyzacja XHTML definiuje następujące typy danych i ich znaczenia:

Typ danych Opis
Character Pojedynczy znak z zestawu [ISO10646].
Charset Kodowanie znaków, według [RFC2045].
Charsets Lista rozdzielonych spacjami kodowań znaków, według [RFC2045].
Color

Typ wartości atrybutu „Color” odnosi się do definicji koloru opisanych w specyfikacji [SRGB]. Wartość koloru może być albo liczbą szesnastkową (poprzedzoną znakiem kratki), albo jedną z następujących szesnastu nazw kolorów. W nazwach koloru nie uwzględnia się wielkości liter.

Nazwy kolorów i wartości sRGB
czarny Black = "#000000" zielony Green = "#008000"
srebrny Silver = "#C0C0C0" limetkowy Lime = "#00FF00"
szary Gray = "#808080" oliwkowy Olive = "#808000"
biały White = "#FFFFFF" żółty Yellow = "#FFFF00"
bordowy Maroon = "#800000" granatowy Navy = "#000080"
czerwony Red = "#FF0000" niebieski Blue = "#0000FF"
purpurowy Purple = "#800080" zielononiebieski Teal = "#008080"
fuksja Fuchsia = "#FF00FF" wodny Aqua = "#00FFFF"

Zatem zarówno wartość koloru "#800080", jak i "Purple" odnoszą się do koloru purpurowego.

ContentType Typ mediów, według [RFC2045].
ContentTypes Lista rozdzielonych przecinkami typów mediów, według [RFC2045].
Coords Lista rozdzielonych przecinkami współrzędnych używanych przy definiowaniu powierzchni.
Datetime Informacje dotyczące daty i czasu.
FPI Łańcuch znaków reprezentujący formalny identyfikator publiczny SGML.
FrameTarget Nazwa ramki używanej jako cel określonych akcji.
LanguageCode Kod języka, według [RFC3066].
Length Długość. Wartość może być podana w pikselach albo w procentach dostępnej poziomej lub pionowej przestrzeni. Tak więc wartość "50%" oznacza połowę dostępnej przestrzeni.
LinkTypes

Autorzy mogą używać następujących rozpoznawanych typów łączy, spisanych tu razem z ich umownymi interpretacjami. Wartość LinkTypes odnosi się do listy rozdzielonych spacjami typów łączy. Wewnątrz typów łączy nie są dozwolone białe znaki.

W tych typach łączy nie uwzględniana jest wielkość liter, tj. „Alternate” ma takie samo znaczenie jak „alternate”.

Programy użytkownika, maszyny wyszukujące, itp. mogą interpretować te typy łączy na różne sposoby. Na przykład programy użytkownika mogą udostępniać dokumenty, na które wskazują łącza poprzez pasek nawigacji.

Alternate
Wyznacza zastępcze wersje dla dokumentu, w którym łącze występuje. Używane łącznie z atrybutem hreflang wskazuje przetłumaczoną wersję dokumentu. Używane razem z atrybutem media wskazuje wersję zaprojektowaną dla innego typu medium (lub mediów).
Stylesheet
Odsyła do zewnętrznego arkusza stylów. Szczegóły w module Style Sheet. Używany razem z typem łączy „Alternate” dla arkuszy stylów między którymi użytkownik może wybierać.
Start
Odsyła do pierwszego dokumentu z zestawu dokumentów. Ten typ łączy wskazuje maszynom wyszukiwawczym na dokument będący według autora punktem początkowym całego zestawu.
Next
Odsyła do następnego dokumentu w liniowej sekwencji dokumentów. Programy użytkownika mogą decydować się na wcześniejsze załadowanie „następnego” dokumentu w celu zredukowania oczekiwanego czasu ładowania.
Prev
Odsyła do poprzedniego dokumentu w uporządkowanej serii dokumentów. Niektóre programy użytkownika obsługują także synonim „Previous”.
Contents
Odsyła do dokumentu służącego za spis treści. Niektóre programy użytkownika obsługują także synonim ToC (skrót od „Table of Contents”).
Index
Odsyła do dokumentu zawierającego skorowidz (indeks) dla bieżącego dokumentu.
Glossary
Odsyła do dokumentu zawierającego słownik terminów odnoszący się do bieżącego dokumentu.
Copyright
Odsyła do zapisu o prawach autorskich dla bieżącego dokumentu.
Chapter
Odsyła do dokumentu służącego za rozdział w zestawie dokumentów.
Section
Odsyła do dokumentu służącego za sekcję w zestawie dokumentów.
Subsection
Odsyła do dokumentu służącego za podsekcję w zestawie dokumentów.
Appendix
Odsyła do dokumentu służącego za dodatek w zestawie dokumentów.
Help
Odsyła do dokumentu udzielającego pomocy (więcej informacji, łącza do innych źródeł informacji, itd.)
Bookmark
Odsyła do zakładki. Zakładka to łącze do miejsca zawierającego hasła kluczowe dla rozbudowanego dokumentu. Atrybut title może być użyty, na przykład, w celu nazwania zakładki. Weź pod uwagę, że w każdym dokumencie może być zdefiniowanych kilka zakładek.
MediaDesc

Atrybut typu MediaDesc to lista rozdzielonych przecinkami deskryptorów mediów. Oto lista rozpoznawanych deskryptorów mediów:

screen
Przeznaczony dla niestronicowanych ekranów komputerowych.
tty
Przeznaczony dla mediów używających siatki ze znakami o stałej szerokości, takich jak telegrafy, terminale lub przenośne urządzenia z ograniczonymi możliwościami wyświetlania.
tv
Przeznaczony dla telewizorów i podobnych urządzeń (niska rozdzielczość, kolor, ograniczona możliwość przewijania).
projection
Przeznaczony dla rzutników.
handheld
Przeznaczony dla urządzeń przenośnych (mały ekran, monochromatyczne, grafika oparta na mapach bitowych, ograniczona przepustowość łączy).
print
Przeznaczony dla stronicowanych, nieprzezroczystych materiałów oraz dla dokumentów przeglądanych na ekranie w trybie podglądu wydruku.
braille
Przeznaczony dla urządzeń dotykowych Braille'a.
aural
Przeznaczony dla syntezatorów głosu.
all
Odpowiedni dla wszystkich urządzeń.

Przyszłe wersje XHTML mogą wprowadzić nowe wartości i mogą zezwolić na wartości sparametryzowane. W celu ułatwienia wprowadzenia tych rozszerzeń, programy użytkownika zgodne ze standardem muszą posiadać zdolność parsowania wartości atrybutu media w następujący sposób:

  1. Wartość jest listą rozdzielonych przecinkami pozycji. Na przykład,
    media="screen, 3d-glasses, print and resolution > 90dpi"
    

    jest przeobrażane w:

    "screen"
    "3d-glasses"
    "print and resolution > 90dpi"
    
  2. Każda z pozycji jest ucinana bezpośrednio przed pierwszym znakiem niebędącym literą z zestawu US ASCII [a-zA-Z] (ISO 10646 hex 41-5A, 61-7A), cyfrą [0-9] (hex 30-39) lub łącznikiem/minusem (hex 2D). W tym przykładzie daje to:
    "screen"
    "3d-glasses"
    "print"
    
  3. W dalszej kolejności następuje nieuwzględniające wielkości liter dopasowywanie zdefiniowanych powyżej typów mediów. Programy użytkownika mogą zignorować niedopasowywujące się pozycje. W powyższym przykładzie pozostaną screen i print.

Uwaga. Arkusze stylów mogą zawierać zależne od mediów odmiany (np. konstrukcja CSS w rodzaju @media). W takich wypadkach może być odpowiednie zastosowanie "media =all".

MultiLength Wartością może być relatywna lub absolutna długość (Length). Długość relatywna ma formę „i*”, gdzie „i” jest liczbą całkowitą. Podczas przydzielania przestrzeni elementom o nią się ubiegającym, programy użytkownika najpierw przydzielają długości mierzone w pikselach i procentowo, potem zaś dzielą pozostałą dostępną przestrzeń pomiędzy długości relatywne. Każda relatywna długość otrzymuję część dostępnej przestrzeni, która jest proporcjonalna do liczby całkowitej poprzedzającej znak „*”. Wartość „*” jest równoznaczna z „1*”. Zatem jeśli po przydzieleniu przez program użytkownika przestrzeni pikselowej i procentowej dostępne jest 60 pikseli, a ubiegającymi się o przestrzeń długościami relatywnymi są 1*, 2* i 3*, wtedy 1* dostanie 10 pikseli, 2* dostanie 20 pikseli, a 3* — 30 pikseli.
MultiLengths Lista rozdzielonych przecinkami pozycji typu MultiLength.
Number Liczba. Jedna lub więcej cyfr.
Pixels Wartość jest liczbą całkowitą reprezentującą liczbę pikseli płótna (ekranu, papieru). Tak więc wartość "50" oznacza pięćdziesiąt pikseli. Normatywne informacje dotyczące definicji piksela można uzyskać w [CSS2].
Script

Dane skryptu mogą zawierać się w elemencie script oraz w wartości atrybutów zdarzenia wewnętrznego. Programy użytkownika nie mogą analizować danych skryptu jako oznakowanie HTML, lecz muszą zamiast tego przekazać je jako dane do maszyny skryptowej.

Uwzględnianie wielkości liter w danych skryptu zależy od języka skryptu.

Weź proszę pod uwagę, że dane skryptu będące zawartością elementu nie mogą zawierać odwołań znakowych, lecz dane skryptu będące wartością atrybutu — mogą.

Shape Kształt obszaru.
Text Dowolne dane tekstowe, najczęściej przeznaczone do odczytania przez ludzi.
URI Jednolity identyfikator zasobów (ang. Uniform Resource Identifier), według [URI].
URIs Lista rozdzielonych spacjami jednolitych identyfikatorów zasobów, według [URI].

4.4. Przykładowa definicja modułu abstrakcyjnego

Ten rozdział ma charakter informacyjny

Ten rozdział definiuje modelowy moduł abstrakcyjny jako przykład wykorzystania reguł składniowych zdefiniowanych powyżej. Ponieważ przykład ten stara się wykorzystać wszystkie z rozmaitych zdefiniowanych elementów składniowych, jest on dość skomplikowany. Typowe definicje modułów byłyby znacznie prostsze. Na koniec proszę wziąć pod uwagę, że moduł ten odwołuje się do zestawu atrybutów Common. Jest to zestaw zdefiniowany w specyfikacji Modularyzacja XHTML, który zawiera wszystkie podstawowe atrybuty, których potrzebuje większość elementów.

4.4.1. Moduł XHTML Narciarstwo

Moduł XHTML Narciarstwo definiuje oznakowanie używane dla opisywania aspektów schroniska narciarskiego. Elementy i atrybuty zdefiniowane w tym module to:

Elementy Atrybuty Minimalny model zawartości
miejscowosc_wypoczynkowa Common, href (CDATA) opis, Zakopane+
schronisko Common opis, (Zakopane - wyciag)+
wyciag Common, href opis?
chata Common, href opis?
pokoj Common, href opis?
korytarz Common, href opis?
kominek Common, href opis?
opis Common PCDATA*

Ten moduł definiuje także zbiór zawartości Zakopane z minimalnym modelem zawartości schronisko | wyciag | chata | pokoj | korytarz | kominek.


Strona główna Ostatnia modyfikacja: 17 sierpnia 2005