Koszalin 08.06.2002 Tomasz Kuszczak III Informatyka Grupa 1.4
Transkrypt
Koszalin 08.06.2002 Tomasz Kuszczak III Informatyka Grupa 1.4
Koszalin 08.06.2002 Tomasz Kuszczak III Informatyka Grupa 1.4 [email protected] XHTML Politechnika Koszalińska Wstęp XHTML (Extensible HyperText Markup Language) jest kolejną wersją języka HTML zalecaną do opisu stron przez World Wide Web Consortium (W3C). Zastosowane nowe rozwiązania i możliwości tego języka sprawiły, że nie zdecydowano się na nazwanie go HTML 5. Rozwój języka HTML zakończono na HTML 4. Wymagania rynku sprawiły, że pojawiła się potrzeba rozbudowy możliwości języka opisu stron zamieszczanych w Internecie i dostosowania do XML. W XHTML podobnie jak w XML wykorzystano surowe reguły składni, co sprawia że kod zachowuje się w bardziej przewidywalny sposób. Ułatwia to rozwój bardziej stabilnych i szybszych przeglądarek stron internetowych. XHTML został podzielony na moduły, co umożliwia programistom wybór grupy znaczników (tags), którą konkretnie ich aplikacja ma używać zachowując zgodność. Przykładowo przeglądarka internetowa wykorzystana w palmtopie może śmiało ignorować ramki (frames) i formularze (forms) ciągle mogąc być uważaną na za zgodną ze standardową. Cecha ta znacznie ułatwia zarządzanie zawartością stron internetowych i ich dostosowanie dla różnych urządzeń. Ponadto zostały rozbudowane możliwości HTML umożliwiając łatwe tworzenie stabilnych interfejsów (robust interfaces). Przykładowo rozszerzono formularze HTML poprzez zastosowanie XForms o czym więcej w dalszej części pracy. Dlaczego używać XHTML Mimo iż HTML odniósł niebywały sukces, język ten nie przystaje do dzisiejszych aplikacji zorientowanych na wykorzystanie sieciowe w handlu i przedsiębiorstwach. XHTLM zmienia sposób w jaki HTML jest zbudowany. W odróżnieniu do HTML, XHTML jest stworzony do używania go ze znacznikami z innych aplikacji XML jak np. MathML (Rys.1). Nowe standardy budowy stron internetowych mają sprawić, aby HTML był bardziej dostępny i łatwiejszy w użyciu. W tym celu znaczniki HTML zostały usunięte ze specyfikacji i zastąpione przez XForms. Modułowa budowa XHTML pozwala na zdefiniowanie i dodawanie nowych znaczników i atrybutów do już istniejących. Tworzy to mechanizm do rozszerzania i rozbudowy XHMTL wychodząc naprzeciw przyszłym potrzebom użytkowników na pojawiających się nowych platformach sprzętowych (Rys.2). Przykładowo XHTML zawiera moduł o nazwie TextModule, który zawiera znaczniki zaczerpnięte z HTML odpowiadające za formatowanie tekstu i akapitów np. H1-H6, P, PRE, BLOCKQUOTE, EM i inne. Następnym jest ListModule zawierający znaczniki skorelowane z tworzeniem list. Dalej są moduły Basic Forms, Basic Tables, Scripting, Style i inne. Modułowość XHTML będzie powodowała, iż przeglądarki internetowe w przyszłości będą dostarczały obszar roboczy, w którym twórcy stron internetowych będą mogli podłączyć (plug in) każdy rodzaj modułu przeznaczonego do wyświetlania konkretnej zawartości i konkretnego typu danych. Umożliwi się w ten sposób grupom specjalistów z danej dziedziny np. chemikom, lekarzom czy matematykom pracę nad rozwojem różnych profili używających standardowych elementów HTML rozszerzonych o elementy spełniające oczekiwania specjalistów. Tak będzie się rozwijał XHTML. W XHTML pola formularzy (form fields) są związane ze zdefiniowanym typem danych i mniej z konkretną prezentacją (presentation), co ułatwia wykorzystanie i przetwarzanie danych przez inne oprogramowanie np. generowanie raportów, statystyk itd. (Rys.3). Nowa specyfikacja XForms uczyni łatwiejszym dostosowanie do regionalnych różnic w walucie, numerach telefonów, określaniu daty, adresów pocztowych i umożliwi współdziałanie z wielką różnorodnością urządzeń zewnętrznych jak mikrofony, kamery, skanery. Dwa główne powody dlaczego powinno się używać XHTML to: • Możliwości rozszerzania. Dokumenty XML muszą być poprawnie sformułowane (be well formed), czyli elementy muszą być poprawnie zagnieżdżone. W HTML dodanie nowej grupy elementów wymagało zmiany całego DTD. W przypadku dokumentów XHTML wymagane jest tylko aby nowe elementy były wewnętrznie zgodne i poprawnie sformułowane, aby zostać dodane do istniejącego DTD. Cecha ta w ogromny sposób ułatwia rozwój i integrację nowych zbiorów elementów. • Możliwość szerokiego zastosowania. Przewiduje się, iż będzie ciągle wzrastała popularność urządzeń nie będących komputerami (non-desktop devices) oferujących dostęp do Internetu, a co za tym idzie będzie wzrastała różnorodność platform sprzętowych. W większości przypadków urządzenie te nie są przystosowane do obsługi źle sformułowanych (ill-formed) dokumentów HTML, które są obsługiwane przez przeglądarki na tradycyjnych komputerach. Właściwie przeglądarki niedesktopowe jeżeli nie otrzymają dobrze sformułowanych znaczników to nie będą w stanie wyświetlić zawartości dokumentu. Przykładowe użycie XHTML Dokument XHTML nie różni się znacząco od dokumentu HTML, poza różnicami które wytłuściłem poniżej: 1 2 3 4 5 6 7 8 9 10 11 12 13 <?xml version=”1.0” encoding=”UTF-8”?> <!DOCTYPE html PUBLIC ”-//w3c//DTD XHTML ”DTD/xhtml1-transional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml”> <head> 1.0 Transitional//EN” <title>Szybki przykład Kruszona</title> </head> <h1> Szybki przykład Kruszona <h1> <a href=”http://www.kruszon.w.pl”> <img src=”Kruszon wita.jpg” height=”600” width=”800” border=”0” align=”center” alt=”Portret Kruszona” /></a> <p> Kruszon wita na swojej stronie wszystkich zagubionych w sieci. </p> </body> </html> 1- Deklaracja XML; 2- Wyszczególnia definicję typu dokumentu (DOCTYPE) na XHTML Transitional; 3- Deklaracja jako dokumentu HTML i deklaracja XHTML namespaces; 10- Znacznik obrazka jest zamknięty, cudzysłów przy wartości; 11- Zamknięcie akapitu; Zasady efektywnego wykorzystania XHTML Nazwa elementu i atrybutu musi być napisana małymi literami. Zasada ta musi być przestrzegana w celu zachowanie zgodności z XML. Przykład: <IMG SRC=”abc.gif” WIDTH=”123” HEIGHT=”10”> <Img src=”abc.gif” Width=”123” hEIght=”10”> <img src=”abc.gif” width=”123” height=”10” /> niepoprawnie niepoprawnie poprawnie Zawartość atrybutu musi być zawarta w cudzysłowie. Przykład: <body background=abc.gif> <body background=”abc.gif”> Wszystkie elementy wymagają znacznika końcowego (termination) w przypadku elementów pustych. Przykład: <p>This is not XHTML complaint code <p>This is XHTML complaint code</p> <option>More Options <option>More Options</option> <base /> <meta /> <dt>first list</dt> niepoprawnie poprawnie lub zakończenia niepoprawnie poprawnie niepoprawnie poprawnie poprawnie poprawnie poprawnie W przypadku użycia zakotwiczeń (anchor) należy użyć zarówno id i name w znaczniku. Przykładowo: <a name="cyberplex">...</a> <a id="cyberplex" name="cyberplex">...</a> niepoprawnie poprawnie Elementy mogą być zagnieżdżone, ale nie mogą na siebie zachodzić. Przeglądarki w komputerach dopuszczają takie błędy, ale XHTML w trosce o elastyczność zastosowań, którą ma zapewniać nie może na to pozwolić. Wszystkie dokumenty XHTML muszą być napisane symetrycznie, czyli poprawnie sformułowane (well formed). Przykład: <b>this code is not <u>symmetrical</b></u> <b>this code is <u>symmetrical</u></b> niepoprawnie poprawnie Nie jest dopuszczalne minimalizowanie i skracanie wpisów par wartości w atrybutach. Zminimalizowany wpis zawiera jedynie jedną wartość. Przykładowo: HTML XHTML <td nowrap>text</td> <td nowrap="nowrap">text</td> HTML XHTML <dl compact> <dl compact=”compact”> HTML XHTML <ul compact> <ul compact=”compact”> HTML XHTML HTML XHTML <option .. selected> <option .. selected=”selected”> <td nowrap>text</td> <td nowrap=”nowrap”>text</td> HTML XHTML <input type=”radio” .. checked> <input type=”radio” .. checked=checked” /> HTML XHTML <input type=”checkbox” . checked> <input type=”checkbox” .. checked=”checked” /> Unikać należy niepotrzebnych pustych odstępów. Na przykład: <a href= “abc.gif”> <a href=”abc.gif”> niepoprwnie poprawnie Tabela podsumowująca prezentująca podstawowe zasady pisania kodu w XHTML. # 1 2 3 4 5 6 7 8 9 Reguła Niepoprawnie Poprawna forma XHTML Nazwy elementów I atrybutów muszą być małymi literami Wartości atrybutów muszą być w cudzysłowie Niepuste elementy wymagają kończącego znacznika Puste elementy wymagają zakończena lub terminacji Należy używać “id” i “name” w znacznikach zakotwiczeń Elementy mogą być zagnieżdzone, ale nie zachdzić na siebie Pary wartości atrybutów nie mogą być skracane Unikać pustych miejsc Unikać używania atrybutów border, hspace, vspace i align używając znacznika <img>, szczególnie przy Style Sheets <IMG SRC=”abc.gif” WIDTH=”123” HEIGHT=”10”> <img src=”abc.gif” width=”123” height=”10” /> <body background=abc.gif> <body background=”abc.gif”> <option>Dalsze opcje Kruszona <option>Dalsze opcje Kruszona</option> <img src=”abc.gif” width=”40” height=”40”> <img src=”abc.gif” width=”40” height=”40” /> <a name="Kruszon">...</a> <a id="Kruszon" name="Kruszon">...</a> <b>ten kod nie jest <u>symetryczny</b></u> <b>ten kod jest <u>symetryczny</u></b> <option .. selected> <option .. selected=”selected”> <a href= “abc.gif”> <img src=”abc.gif” vspace=”10” hspace=”10” border=”2” align=”left”> <a href=”abc.gif”> <img src=”abc.gif”> szczególnie przy Style Sheets Co czyni dokument HTML dokumentem XHTML Wszystkie dokumenty XHTML muszą: • zawierać deklarację DOCTYPE pojawiającą się przed główną częścią dokumentu (root element) tzn. przed znacznikiem <html>; • określać jedną z trzech dostępnych DTD dla XHTML (strict, transitional, frameset); • posiadać część główną dokumentu określającą XHTML namespace tzn. należy dodać znacznik XML namespace xmlns i wartości definiujące stronę jako dokument XHTML. DTD XHTML Przykładowe DTD: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> Podczas tworzenia dokumentu XHTML DTD do której się ma on odnosić jest zadeklarowana na jego początku. Unikalna etykieta Formal Public Identifer (FPI) jest w stanie rozpoznać każde DTD. Znaki umieszczone w cudzysłowie pojawiające się po słowie PUBLIC są odniesieniem FPI do W3C XHTML 1.0 DTD. XHTML 1.0 Strict <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> Używamy XHTML 1.0 Strict DTD kiedy do formatowania dokumentu używamy Kaskadowych Arkuszy Stylów (Cascading Style Sheets - CSS). Innymi słowy, używając tego DTD nie możemy użyć znaczników <font> i <table> do kontroli sposobu wyświetlania naszego dokumentu przez przeglądarkę internetową. Należy używać tego DTD kiedy zależy nam na przejrzystym dokumencie pozbawionym niepotrzebnych znaczników przeznaczonych do prezentacji dokumentu w przeglądarce. Przykładowo w przypadku użycia znacznika <img> nie możemy używać atrybutów border, hspace, vspace, align. XHTML 1.0 Transitional <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> Używamy XHTML 1.0 Transitional DTD kiedy znaczniki przeznaczone do prezentacji i formatowania dokumentu w przeglądarce internetowej mają być użyte w samym dokumencie. Zaletą tego DTD jest fakt, iż wykorzystujemy w sferze prezentacje mechanizmy istniejące w HTML, co czyni nasz dokument dostępny nawet dla tych internautów posiadających starsze wersje przeglądarek internetowych nie obsługujących CSS. XHTML 1.0 Frameset <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "DTD/xhtml1-frameset.dtd"> Tego DTD używamy kiedy chcemy użyć ramek HTML (HTML Frames) w celu podziału okna przeglądarki na dwie lub więcej części. XML Namespaces XML Namespaces jest odniesieniem do listy obowiązujących znaczników, które mogą być użyte w XHTML. W3C definiuje XML Namespaces jako: „zbiór nazw możliwych do zidentyfikowania dzięki odniesieniu do unikalnego URI (Uniform Resource Identifer), który jest używany w dokumentach XML jako typ elementu lub nazwa atrybutu”. XHTML używa trzech różnych typów DTD dla różnych sposobów jego wykorzystania, ale Namespaces są w każdym przypadku te same. XML pozwala również na wykorzystanie wielu namespaces (multiple namespaces) w jednym dokumencie. W standardowym dokumencie HTML możemy wykorzystać zalety prezentacji XHTML i użyć MATH Namespace do wyświetlania znaczników związanych z zagadnieniami matematycznymi. Przykład użycia: 00 0 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd" > 1 2 <html xmlns="http://www.w3.org/HTML/1998/html4" xmlns:xdc="http://www.Kruszon.w.pl/books"> 3 4 5 6 7 8 <head> <title>Przeglad ksiazek</title> </head> <:body> <xdc:bookreview> <xdc:title>XML: A Primer</xdc:title> <table> <tr align="center"> <td>Autor</td><td>Cena</td> <td>Strony</td><td>Data</td></tr> <tr align="left"> <td><xdc:author> Adam Mickieiwcz </xdc:author></td> <td><xdc:price> 70 </xdc:price></td> <td><xdc:pages> 300 </xdc:pages></td> <td><xdc:date> 2001/02 </xdc:date></td> </tr> </table> </xdc:bookreview> 9 10 Poniżej zamieszczam opis przykładowego dokumentu. poszczególnych ustępów powyższego 00 <?xml version="1.0" encoding="UTF-8"?> Taka deklaracja jest wymagana jedynie w przypadku, gdy dekodowanie znaków (character encoding) zawartych w dokumencie różni się od standardowego UTF-8 lub UTF-16, które są domyślne. 0 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1transitional.dtd" > Deklaracja !DOCTYPE w górnej części dokumentu jest to Public Text Identifier (PTI), natomiast część zawarta w cudzysłowie jest to Formal Public Identifier (FPI). Powinien pojawić się na samym początku dokumentu, aby przyporządkować go do określonego DTD. 1 <html xmlns="http://www.w3.org/HTML/1998/html4" 2 xmlns:xdc="http://www.kruszon.w.pl/books"> W celu zamieszczenia jednego lub wielu namespace należy dodać jeden lub więcej atrybutów namespace xmlns w znaczniku <html>. W tym przykładzie pierwsza część namespace nie posiada prefiksu podczas gdy druga część ma prefiks xdc. Wszystkie części nie posiadające prefiksu są uważane za namespace http://www.w3.org/HTML/1998/htm14. Elementy z prefiksem xdc są skojarzone z http://www.kruszon.w.pl/books. Prefiks nie oznacza nic ponadto, iż jest tylko skrótem do pełnej nazwy namespace. Nieco mylące jest to, że są to adresy URL i mogłoby się wydawać, że muszą na coś wskazywać. Otóż nie. Są to tylko nazwy i nie jest ważne na co wskazują ich adresy sieciowe. Powodem dla którego W3C zdecydowało się użyć URL jako nazw dla namespaces jest fakt, iż zawierają one nazwy domenowe np. www.xml.com, które obowiązują w całym Internecie i są unikalne na skalę światową. Oczywistym pytaniem jest: na cholerę jest nam to potrzebne? Po prostu namespace jest stworzone aby usprawnić pracę ludziom tworzącym strony internetowe. Przykładowo wyobraźmy sobie, że jesteśmy programistami pracującymi dla kruszon.w.pl i mamy za zadanie napisać program przeznaczony do przeglądania książek oferowanych przez DobraKsiazka.pl i mający przekazywać odpowiednie ich ceny. Problem w tym, iż zawartość dokumentów z DobraKsiazka.pl jest przemieszana ze znacznikami HTML i musimy być pewni czy mamy do czynienia z tytułem książki czy np. z tytułem strony HTML. Najlepszym wyjściem z tej sytuacji jest użycie namespace http://www.dobraksiazka.pl/books. 7 <xdc:bookreview> Prefiks xdr jest skojarzony z http://www.kruszon.w.pl/books natomiast bookreview jest znacznikiem wewnątrz namespace. 8 <xdc:title>XML: A Primer</xdc:title> Namespace xdr ma swój własny znacznik <title> poza standardowym <title> HTML. Znacznik <xdr:title> oznacza początek tytułu książki, a </xdr:title> jej koniec. 9 <td><xdc:author> Simon St. Laurent </xdc:author></td> Namespace xdr ma więcej swoich własnych znaczników takich jak np. <xdr:author>, <xdr:price>, <xdr:page>, <xdr:date> razem z odpowiadającymi im znacznikami zamykającymi. 10 </xdc:bookreview> Ten znacznik oznacza zamknięcie bookreview. Zakończenie. Wydaje mi się, że wystarczającym stopniu przybliżyłem czytelnikowi XHTML aby uzyskać pozytywną ocenę z przedmiotu „Witryny i portale internetowe”. Wszystkie materiały pozyskałem z Internetu i specyfikacji XHTML. Szerokie fragmenty dokumentu pochodzą z anglojęzycznego dokumentu autorstwa Riwan Dar z firmy Cyberplex (CX). Obok polskich pojęć zamieściłem także oryginały zdając sobie sprawę z niedoskonałości własnego angielskiego, a ponadto uważam że angielskie słowa czasami lepiej opisują przekazywaną treść niż ich polskie odpowiedniki.