Ten fragment podręcznika omawia hipertekstową strukturę dokumentów HTML (HyperText Markup Language). Dokumenty HTML mogą zawierać teksty, grafikę, dźwięk i animacje oraz odsyłacze, dzięki którym możliwe jest naturalne czytanie dokumentów w kolejności innej, niż po kolei od początku do końca. Elementem, który nadaje dokumentom HTML hipertekstowe właściwości, jest kotwica (ang. anchor). W notacji HTML element ten oznaczamy parą znaczników
<a href="adres">aktywny tekst odsyłacza</a>
Za jego pomocą możliwe jest swobodne tworzenie odsyłaczy wewnątrz pojedynczego dokumentu (np. odwołania do paragrafów, sekcji, rozdziałów itp.) lub do innych dokumentów, znajdujących się na lokalnej maszynie albo na serwerze (hoście) położonym gdzieś daleko w świecie… Ogólną postać adresowania plików i innych zasobów dostępnych w sieci określa się terminem URI (Universal Resource Identifier).
Odsyłacze mogą wskazywać nie tylko na dokumenty traktowane jako całość, ale także na ich wybrane fragmenty lub oznaczone miejsca. Symboliczna nazwa fragmentu dokumentu, używana w odsyłaczach hipertekstowych, nosi nazwę zakładki lub identyfikatora.
Zanalizujmy działanie następującego odsyłacza:
Odsyła on czytelnika do dokumentu zawartego w pliku o nazwie
semi7.html
, a ściślej — do jego nazwanego
fragmentu opatrzonego nazwą „konwencjaURI
”.
Adres docelowy tego odsyłacza ma zawartość
../semi7.html#konwencjaURI
Odsyłacz wskazuje więc, że wskazywany plik winien znajdować się w kartotece nadrzędnej względem kartoteki zawierającej bieżący dokument. Jeżeli plik docelowy nie jest dostępny (np. nie istnieje w podanej kartotece), to realizacja odsyłacza nie będzie możliwa; mimo to sam odsyłacz jest poprawny.
Pierwotna kopia dokumentu, który teraz czytasz, nosi nazwę hyperref.html
i mieści się w systemie plików serwera karnet.ar.wroc.pl
w kartotece
użytkownika jasj
, w podkartotece cwiczenia/HTML
.
Kartoteką nadrzędną jest więc ~jasj/cwiczenia
.
Plik karnet.ar.wroc.pl/~jasj/cwiczenia/semi7.html
rzeczywiście
istnieje, mieści w sobie dokument hipertekstowy zawierający zakładkę
konwencjaURI
w miejscu, w którym znajduje się opis pojęcia
URI. Wszystko jest więc w porządku: jeżeli oglądasz
tę właśnie kopię dokumentu, to odsyłacz będzie działać i w każdej chwili
możesz z niego skorzystać. Jeżeli jednak plik zostanie usunięty lub jeżeli
zostanie zmieniona jego nazwa, to na każdą próbę jego pobrania serwer odpowie
komunikatem o niepowodzeniu (np. 404: not found),
który przeglądarka wyświetli po jego otrzymaniu.
Spróbuj jednak zapisać bieżący plik na dysku w swoim systemie i odczytać
go swoją przeglądarką. Wtedy odsyłacz będzie wskazywał na plik o nazwie
semi7.html
, położony na Twoim dysku; jedyny powód istnienia
tego pliku we wskazanym miejscu mógłby być taki, że wcześniej sam go tam
umieściłeś — jeżeli jednak tego nie zrobiłeś, to nie masz co liczyć
na realizację tego odsyłacza; Twoja przeglądarka wygeneruje i wyświetli
komunikat o niepowodzeniu, podając jego przypuszczalną przyczynę
(jak taki komunikat wygląda w Twojej przeglądarce?).
Opisany wyżej przykład adresu URI ma postać względną; postać bezwzględna musi zawierać następujące elementy adresu: nazwę protokołu, nazwę maszyny i ścieżkę dostępu do pliku, a po niej być może także dodatkowe elementy.
Odsyłacz
wskazuje na zakładkę konwencjaURI
w pliku o nazwie semi7.html
znajdującym się w kartotece ~jasj/cwiczenia
serwera Uniwersytetu Przyrodniczego we Wrocławiu;
adresem docelowym tego odsyłacza jest
http://karnet.ar.wroc.pl/~jasj/cwiczenia/semi7.html#konwencjaURI
.
Realizacja tego połączenia jest możliwa tylko wtedy, gdy masz dostęp
do Internetu, a wskazany serwer pracuje i zawiera wskazany plik.
Jeżeli te warunki są spełnione, otrzymasz kopię dokumentu pobraną
ze wskazanego miejsca.
Adresem absolutnym URI można opisać także plik położony
w lokalnym systemie plików, niedostępny przez sieć. Służy do tego protokół
file:
. Na przykład plik semi7.html
jest dostępny
dla użytkowników maszyny karnet
pod ścieżką dostępu
/home/jasj/public_html/cwiczenia/semi7.html
.
Ponieważ chodzi o użytkowników tej konkretnej maszyny,
podawanie jej nazwy nie jest konieczne.
Zatem odpowiednim adresem URI będzie
file:///home/jasj/public_html/cwiczenia/semi7.html
.
Czytelnik prawie na pewno pracuje w tej chwili na innej maszynie,
adres typu file:
będzie się odnosił do jego własnego
systemu plików.
Zamiast pustej nazwy maszyny dopuszczalne jest również użycie nazwy
localhost
, oznaczającej maszynę użytkownika:
file://localhost/mnt/floppya/semi7.html
Jeżeli plik znajduje się w głównej kartotece dyskietki,
to jego adresem URI w systemach Windows
będzie prawdopodobnie file:///a:/semi7.html
;
w systemach Linux może mu odpowiadać adres
file:///mnt/floppya/semi7.html
.
Tworząc dokument składający się z kilku plików wzajemnie połączonych odsyłaczami powinniśmy zadbać o to, by używać tylko adresów względnych; tylko wtedy skopiowanie całego kompletu plików w inne miejsce (czy to do innej kartoteki, czy na inny serwer) nie naruszy działania odsyłaczy.
Jeżeli odwołujemy się do zewnętrznego źródła informacji, które istnieje niezależnie od naszych działań, stosujmy adresy bezwzględne: tylko wtedy każdy czytelnik na pewno trafi do wskazanego przez nas dokumentu.
Pamiętajmy, że adresy typu file://
wskazują zawsze na zasoby maszyny
czytelnika. Jako autorzy możemy ich użyć, gdy chcemy ograniczyć krąg odbiorców
pliku do użytkowników komputera, w którego systemie ten plik się znajduje.
W swoim dokumencie możesz tworzyć własne zakładki; niżej wyjaśnimy zasady ich tworzenia i używania.
Jeżeli chcesz odwołać się z jakiego dokumentu do TEGO WAŻNEGO FRAGMENTU, to możesz to zrobić pod warunkiem, że upatrzony przez Ciebie fragment jest nazwany (named) lub opatrzony zakładką (bookmark). Jeżeli jesteś autorem dokumentu zawierającego TEN WAŻNY FRAGMENT, to nic nie stoi na przeszkodzie, by nadać mu nazwę. Robi się to, umieszczając w odpowiednim miejscu tekstu źródłowego polecenia formatujące jednym z niżej wyjaśnionych sposobów.
Znacznik otwierający dowolnego elementu HTML
można opatrzyć atrybutem id="nazwa"
. Spowoduje to
nadanie identyfikatora nazwa
całemu obszarowi tego
elementu, aż do znacznika zamykającego.
Nazwę fragmentu nazwa
określa autor dokumentu;
on też jest odpowiedzialny za jej unikalność w obszarze całego pliku dokumentu.
Nadaną w ten sposób nazwę obszaru można stosować w odsyłaczach hipertekstowych
na takich samych zasadach, jak etykiety zakładek wprowadzone elementem a
z atrybutem name="nazwa"
.
Mechanizm nazywania fragmentów jest ogólniejszy i nowocześniejszy,
niż mechanizm tworzenia zakładek opisany w następnym podrozdziale.
Bieżący akapit został opatrzony nazwą opis-atrybutu-id
,
gdyż jego znacznik otwierający ma postać
<p id="opis-atrybutu-id">
Opisany niżej mechanizm tworzenia zakładek za pomocą elementu a
jest reliktem z wczesnych wersji języka HTML.
W nowo tworzonych dokumentach nie należy go stosować. Warto jednak go znać,
gdyż jest rozumiany przez oprogramowanie i często spotyka się go w praktyce.
Element a
z atrybutem name="nazwa"
definiuje punkt zakotwiczenia zakładki o nazwie nazwa
.
Nazwę zakładki określa autor dokumentu.
Zgodnie z ogólnymi zasadami znakowania można opatrzyć zakładką miejsce:
<a name="nazwa" />
lub wybrany fragment tekstu, umieszczając go w zakresie
elementu a
:
<a name="nazwa">wybrany fragment</a>
Na początku bieżącego akapitu został umieszczony znacznik zakotwiczenia o treści
<a name="opis-elementu-a-z-atrybutem-name" ></a>
który opatruje to miejsce w dokumencie zakładką o nazwie
opis-elementu-a-z-atrybutem-name
.
Niezależnie od wyboru sposobu przydzielania nazw (zakładki czy identyfikatory)
fragmentom dokumentu, wybór samej nazwy zależy od decyzji autora.
Warto pamiętać, że nazwa taka z założenia będzie składnikiem adresu
URI. Dla uniknięcia nieporozumień najprościej będzie,
jeżeli do jej utworzenia zostaną użyte tylko niektóre znaki
zestawu podstawowego ASCII:
wielkie i małe litery łacińskie, cyfry, kropka, łącznik (-
)
i znak podkreślenia (_
). Niewskazane są spacje, nawiasy, znaki:
!
,
"
,
#
,
$
,
%
,
&
,
'
,
/
,
:
,
;
,
=
,
?
,
@
,
\
,
^
,
`
,
|
i wszystkie znaki zestawów rozszerzonych, w tym litery polskiego alfabetu.
W obrębie jednego dokumentu identyfikatory nie mogą się powtarzać.
Element a
definiuje odsyłacz, a jego adres docelowy — ten, do którego
chcemy odesłać czytelnika — zadaje się jako wartość atrybutu href
(z ang. Hypertext REFerence).
Odsyłacze do nazwanych fragmentów i miejsc tego dokumentu, np. do TEGO WAŻNEGO FRAGMENTU, można umieszczać w dowolnym miejscu tego lub dowolnego innego dokumentu. Fragment, który ma być celem odsyłacza, musi być nazwany lub opatrzony zakładką. Inaczej nie będzie się dało go zaadresować.
Wskazanie w danym dokumencie jako adresu docelowego fragmentu tego samego dokumentu,
na przykład fragmentu opatrzonego przykładową nazwą wazne-miejsce
,
ma postać
<a href="#wazne-miejsce">opis odsyłacza</a>
Napis wazne-miejsce
stanowi nazwę zakładki lub fragmentu;
obszar zawierający TEN WAŻNY FRAGMENT
rzeczywiście nosi taką nazwę. Znak kratki (#
) mówi, że jest to nazwa
fragmentu, a nie serwera ani pliku.
Adres docelowy fragmentu dokumentu umieszczonego w innym pliku (adresowanym za pomocą odsyłacza względnego) ma postać
nazwa-pliku#nazwa-fragmentu
Na przykład zamieszczony w początkowej części tego rozdziału odsyłacz z adresem względnym do opisu konwencji adresowej URI zawartego w dokumencie z kartoteki nadrzędnej, ma postać
<a href="../semi7.html#konwencjaURI">URI</a>
Adres docelowy fragmentu dokumentu umieszczonego na zdalnym serwerze ma postać
http://adres-serwera/nazwa-pliku#nazwa-fragmentu
Na przykład zamieszczony w tym rozdziale odsyłacz z adresem absolutnym,
wskazujący na nazwany fragment dokumentu z serwera karnet
,
dostępny przez sieć WWW, utworzono z tekstu źródłowego
<a href="http://karnet.ar.wroc.pl/~jasj/cwiczenia/semi7.html#konwencjaURI">URI</a>
Na przykład ten wyraz
wskazuje na zakładkę o nazwie punkt_docelowy
,
której punkt zakotwiczenia powinien być zdefiniowany
w tym dokumencie (jeżeli tak nie jest, to odsyłacz nie będzie działać).
Gdy pukniemy w wyróżniony wyżej „wyraz” (przeglądarka wyróżnia
fragmenty dokumentu objęte odsyłaczem; opisz, jak to wygląda w przypadku
Twojej przeglądarki!), zostaniemy „przeniesieni” do miejsca,
w którym znajduje się punkt zakotwiczenia zakładki o nazwie
punkt_docelowy
podanej w odsyłaczu.
Mówiąc ściślej, przeglądarka podejmie próbę załadowania żądanego dokumentu (czyli
tego dokumentu; skoro jest to bieżący dokument, to nie trzeba
go ładować), a jeżeli to się uda, to wyświetli go w taki sposób, żeby widoczny był
właśnie ten pożądany fragment.
To jest punkt docelowy, o którym mowiliśmy przed chwilą. Poniżej znajduje się lista odsyłaczy. Możesz z niej skorzystać, jeżeli chcesz skoczyć:
id
,a
z atrybutem name
,