Większość znaczników WML została zaczerpnięta z języka XML. Obeznani w HTML`u nie powinni mieć problemów z przyswojeniem wml`a, choć zaznaczam, że pisząc ten kurs myślałem także o osobach słabo orientujących się w tym języku. WML jest o wiele uboższy niż HTML, wprowadzono także kilka znaczących zmian, jak konieczność zamykania wszystkich znaczników, czy inna budowa znaczników pustych. Nowością są także "zadania" i "zdarzenia", które na pierwszy rzut oka mogą się wydać trudne, jednak w dalszej części kursu postaram się udowodnić, że tak nie jest. Pełną specyfikację języka WML w formacie pdf możecie zassać z FTP Netmagii, lub bezpośrednio ze strony WAP Forum; www.wapforum.org
Składnia WML
Dla początkujących webmasterów na pierwszy rzut oka ten artykuł może się wydać skomplikowany, jednak gwarantuję, że przy pierwszym przykładzie wszystko się rozjaśni. Wiem, że w niektórych kursach wml autorzy rozpoczynają od przykładu, jednak ja postanowiłem się wyłamać :-)
Znaczniki lub tagi są ciągiem znaków objętymi ostrymi nawiasami. W języku WML jest ich 34. Wyróżniamy znaczniki obejmujące jakąś treść;
<tag>zawartość</tag>
lub znaczniki puste;
<tag/>
Jeżeli znacznik posiada jakiś dodatkowy atrybut, to piszemy jego nazwę małą literą, a wartość obejmujemy cudzysłowem- to ostatnie jest zalecane w HTML`u, w WML wartości MUSIMY zamknąć w cudzysłów, np.:
<tag atrybut="wartość"> zawartość </tag>
lub:
<tag atrybut="wartość"/>
W kodzie źródłowym możemy umieścić jakąś treść, co do której nie chcemy aby była interpretowana przez przeglądarkę, np. wyświetlana na ekraniku telefonu. W tym celu stosujemy komentarze, które mają następującą składnię;
<!-- komentarz -->
Na początku każdego dokumentu wml ( talii ), musimy umieścić prolog, który jest deklaracją XML i deklaracją typu dokumentu. Prolog wygląda następująco;
<?xml version="1.0"?>
!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
Pod prologiem znajduje się podstawowy znacznik wml, otwierający dokument;
<wml> </wml>
Zaraz za znacznikiem <wml> umieszczamy element;
<head> </head>
W tej części mogą się znaleźć (choć można go pozostawić pustego) podstawowe informacje o dokumencie, możemy w nim umieścić dwa elementy META i ACCESS. Sam znacznik head nie posiada bowiem własnych atrybutów. Pierwszy z nich podaje dodatkowe informacje dotyczące dokumentu i posiada kilka atrybutów; name, http-equiv, forua, content, i scheme.
Najważszejsze z nich zdają się być http-equiv
i content
.
<meta http-equiv="content-type" content="text/vnd.wap.wml" />
Element ten umożliwia wyświetlanie dokumentu, pomimo iż jest on umieszczony na serwerze "nie obsługującym" WAP`a. Definiuje on bowiem typ nagłówka HTTP.
<meta content="charset" user-agent="character-set=rodzaj_kodowania" />
Dzięki temu atrybutowi możemy określić inny standard kodowania niż domyślny, czyli Unicode.
Znacznik ACCESS
, jak sama nazwa wskazuje pozwala na ograniczenie dostępu do danego zestawu kart. Posiada on dwa atrybuty; domain
oraz path
.
<access domain="netmagia.pl" path="/webmaster">
Powyższa definicja powoduje, że na nasz dokument będzie można wejść tylko przechodząc z kart umieszczonych na serwerze Netmagii i umieszczonych w katalogu webmaster. To by było chyba wszystko a propos elementu HEAD
dokumentu. Dodam tylko, dla tych którzy jeszcze nie wiedzą, że ten fragment nie jest pokazywane na ekranie przez przeglądarkę.
Następnym znacznikiem wewnątrz <wml> </wml>
jest <template> </template>
czyli szablon. Służy on do definiowania funkcji klawiszy nawigacyjnych telefonu dla wszystkich kart w danej talii, jednak omówię go dokładniej w dalszej części przy okazji omawiania nawigacji.
<card id="first"> </card>
Po części template
, wreszcie przechodzimy do opisu kart w talii. Jak już wspominałem w jednej talii (dokumencie wml), może się znajdować jedna, lub cała kolekcja kart. Jedną kartę otaczają znaczniki <card> i </card>
przy czym jeżeli w dokumencie są przynajmniej dwie karty, to obowiązkowym atrybutem tego znacznika jest id, np.:
<card id="pierwsza">
<!-- treść pierwszej karty -->
</card>
<card id="druga">
<!-- treść drugiej karty -->
</card>
ID
to nic innego jak unikatowy identyfikator każdej karty. Identyfikator także ułatwia nawigację w zasięgu jednej talii.
Innym przydatnym atrybutem, choć nie oligatoryjnym znacznika card, jest title;
<card title="Tytul">
</card>
Title
to oczywiście tytuł strony. W HTML`u stosujemy znacznik <TITLE> </TITLE> o bardzo podobnej funkcji. Jest on po prostu w jakiś sposub wyróżniany w przeglądarce. W HTML`owej przeglądarce najczęściej jest on pokazywany na pasku tytułowym przeglądarki. W telefonie komórkowym tytuł pojawia się na górze ekraniku. Pewnie zauważyłeś, że doszliśmy wreszcie do pierwszego elementu, który jest wyświetlany w przeglądarce.
Przykład
W końcu doszliśmy do obiecanego przykładu. Proponuję uruchomić Nokia WAP Toolkit. Następnie z menu "File" wybierz "New"- "WML Deck..." Powinien się pojawić nowy dokument wml ze standartowymi znacznikami programu. Możesz albo wymazać wszystko i wpisać kod zamieszczony na dole, albo poprawić kod do tego poniżej. Proponuję to pierwsze rozwiązanie, gdyż wtedy, podczas przepisywania kodu utrwalą Ci się wszystkie znaczniki.
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card title="Debiut">
<p><!-- Tutaj rozpoczyna sie tresc karty -->
Hello World!!!
</p>
</card>
</wml>
|
 |
Po wpisaniu kodu przyciśnij przycisk "Compile"- zapisz stronę do pliku gdzieś na dysku, a następnie naciśnij przycisk "Show" aby zobaczyć efekt Twojej pracy w emulatorze Noki. Jeżeli pojawiają Ci się jakieś komunikaty o błędach, jeszcze raz sprawdź cały kod z tym powyżej i po poprawkach wszystko powinno być w porządku.
Pewnie zauważyłeś, że pojawił się nowy znacznik, o którym jeszcze nie pisałem; <p> </p>
Jest to znacznik określający początek i koniec akapitu, ale o tym już w następnej części dotyczącej formatowania tekstu...