Professional Documents
Culture Documents
Strony WWW
zgodne ze standardami
sieciowymi W3C
Autor: Christopher Schmitt, Kimberly Blessing,
Rob Cherny, Meryl K. Evans, Kevin Lawver,
Mark Tramme
Tumaczenie: Robert Grczyski
ISBN: 978-83-246-1755-5
Tytu oryginau: Adapting to Web Standards:
CSS and Ajax for Big Sites (Voices That Matter)
Format: 168x237, stron: 312
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treci
Podzikowania ....................................................................................................................................... 7
O autorach ................................................................................................................................................ 9
13
WPROWADZENIE
15
25
59
87
121
161
Cz II Studium przypadku
175
177
Spis treci
ROZDZIA 6. EVERYTHINGTORI.COM
181
ROZDZIA 7. AOL.COM
213
4
Programowanie
aplikacjisieciowych
Profesjonalnezespoyprogramistwbudujcewitrynyinternetowenieograniczaj
si dotworzeniatrecistatycznych,aleoferujtakeaplikacjedynamiczneiwitryny
wykorzystujcesystemyzarzdzaniatreci(CMS).Wtakimprzypadkuuywany
jestkodwarstwyinterfejsuuytkownika(UI),podzielonydalejnakodj zyka
znacznikw,arkuszestylwCSSorazskryptyJavaScript.ZnaczenieUIpowoduje,
egotowawitrynainternetowajestwi ksza,aponadtowyduajsi okresyczasu
mi dzyznaczcymimodernizacjamiwitryny.Powstajewi cpytanie,dlaczegonie
pokusisi oograniczeniezalenociodprogramistwtworzcychkodwewn trzny
bdekspertwzzakresusystemwCMS,skoroprogramiciUImoglibysamo
dzielniezarzdzazmianamiprzeprowadzanymiwUI?
Jeelidodadotegowyzwaniawynikajcezkoniecznociintegracjizelementami
opracowanymiprzezfirmytrzecieorazstarszymiinowszymielementamisieciowymi
organizacji,towyraniewidaniesko
czonepokadykorzycipyncychzestosowania
standardwsieciowych.Wrzeczywistociwszystko,cojesttworzonewramach
koduinterfejsuuytkownikako
cowego,powinnozostazaimplementowane
zuyciemtechnikzgodnychzestandardamisieciowymi.
122
Aplikacje sieciowe
obcione jarzmem przeszoci
Wielu programistw aplikacji sieciowych nauczyo si jzyka HTML w latach dziewidziesitych ubiegego stulecia i od tamtego okresu nie uaktualnili stosowanych technik
programowania w celu wdroenia nowych technologii. Przedstawienie nowych
poziomw separacji i cisego uywania standardw lub specyfikacji aplikacji programicie, ktry ksztaci si w okresie powszechnego stosowania zupy znacznikw,
moe by naprawd ciekawym dowiadczeniem. Nowoczesne podejcie bazujce na
standardach sieciowych jest znacznie czystsze, efektywniejsze i logiczniejsze. Zwykle
zmierza rwnie do postawienia programisty sieciowego przed sytuacj albo to dziaa,
albo nie dziaa czsto wskrzeszajc w nim zainteresowanie programowaniem
interfejsu.
Z definicji witryny internetowe opierajce si na standardach sieciowych d
do cisego przestrzegania standardw, zawsze gdy tylko jest to moliwe. Kiedy
oprogramowanie sieciowe umieszcza lub nawet tworzy kod warstwy UI, naley
oczekiwa takiego samego poziomu dyscypliny. W duszej perspektywie czasu
takie podejcie przyniesie korzyci witrynie oraz aplikacji poprzez ograniczenie ryzyka,
ktre nieuchronnie pojawia si wraz z kolejnymi modyfikacjami. Podejcie wykorzystujce standardy sieciowe zwiksza poziom zgodnoci i dostpnoci treci witryny
oraz redukuje poziom uywanych zasobw i wysiku, ktry trzeba woy w zmian
interfejsu uytkownika aplikacji lub statycznych fragmentw witryny.
Problem polega jednak na tym, e wci istnieje ogromna ilo archaicznego, niespjnego lub po prostu przestarzaego kodu, ktry zosta zaimplementowany w oprogramowaniu sieciowym. Programici musz bardzo dokadnie przyjrze si zarwno
wasnym, jak i komercyjnym implementacjom oprogramowania w celu okrelenia jak
i kiedy oprogramowanie witryny moe zyska na zastosowaniu standardw sieciowych.
ROZDZIA 4
123
124
Kryteria wartociowania
W przypadku oceny kadego dokumentu aplikacji naley wzi pod uwag kilka
czynnikw:
Skd pochodzi dana warstwa UI?
Jaka jest struktura kodu interfejsu?
Czy kod to poprawny HTML lub XHTML?
Czy w dokumencie znajduje si deklaracja DOCTYPE, a dokument jest generowany w trybie standardw czy dziwactw?
W jaki sposb zostay zdefiniowane aspekty prezentacyjne?
Czy programici aplikacji zrozumieli kod UI?
Czy programici UI zrozumieli kod wewntrzny?
Ilu czonkw zespou zrozumiao sposb integracji UI oraz kodu wewntrznego?
W jaki sposb jest generowany kod znacznikw?
Czy oprogramowanie odwouje si do jakiegokolwiek biecego kodu prezentacyjnego, takiego jak pliki arkuszy stylw CSS? Jeeli tak, to do jakich plikw?
Czy te pliki zmieniaj si w projekcie?
Jak blisko kod interfejsu jest powizany z wewntrzn logik biznesow
(o ile w ogle jest powizany)?
Czy istnieje jakikolwiek sposb abstrakcji kodu UI od kodu aplikacji?
Jeli aplikacja generuje kod interfejsu, czy istnieje jakikolwiek sposb kontroli
tego procesu?
Jeeli uytkownik ma moliwo generowania treci lub kodu, to czy istnieje
jakikolwiek sposb zablokowania tego, co uytkownik moe zrobi?
Jak duy wysiek trzeba bdzie woy w modyfikacje warstwy UI?
Jak due jest ryzyko zwizane z modyfikacj warstwy UI aplikacji?
Jakie s potencjalne korzyci i wady wynikajce z zaniechania przeprojektowania
aplikacji?
Jakie s ograniczenia zwizane z tym, e oprogramowanie firm trzecich moe
wymaga dostosowania do wasnych potrzeb?
Szczerze mwic, to jest ogromna ilo informacji, ktre trzeba zebra, przeanalizowa,
a nastpnie rozway.
ROZDZIA 4
Wskazwki,
reguy oraz standardy sieciowe
Aplikacje sieciowe opracowane przez organizacj mog osiga korzyci wynikajce
ze stosowania standardw sieciowych, wytycznych programowania, punktw wzajemnego oddziaywania oraz wskazwek dotyczcych sposobu pisania oraz stylu kodu UI.
Reguy programowania
Istniej standardy dotyczce jakoci i spjnoci programowania, podobne do czsto
stosowanych przez programistw w kodzie wewntrznym aplikacji. Jednak w chwili
obecnej zostay rozszerzone na kod interfejsw, co moe by zupen nowoci.
Kady kod UI powinien spenia podstawowe, najlepsze praktyki dotyczce
standardw sieciowych, czyli midzy innymi stosowa styl POSH, arkusze stylw
CSS oraz dyskretny kod JavaScript (jak to opisano w rozdziaach odpowiednio
1., 2. i 3.).
Kluczowe znaczenie ma tworzenie kodu niezalenego od rodzaju przegldarek
internetowych, zapewniajcego dostpno oraz umoliwiajcego (w razie
potrzeby) eleganck degradacj funkcji.
Programy warstwy UI powinny odwoywa si do klas CSS i atrybutw ID poprzez
wycignicie ich z gbi logiki aplikacji do innych, atwo dostpnych miejsc kodu.
W ten sposb przeprowadzanie modyfikacji informacji prezentacyjnych niesie
ze sob minimalne ryzyko dla aplikacji. Wymienione klasy CSS i atrybuty ID mog
by powierzchownymi waciwociami klas obiektu, przechowywane w plikach
konfiguracyjnych lub zmiennych o zasigu aplikacji, co umoliwia ich atw
zmian w przyszoci.
125
126
ROZDZIA 4
RYSUNEK 4.1.
Formularze s najczciej
umieszczane w tabelach
HTML i uywaj znacznikw
prezentacyjnych
127
128
RYSUNEK 4.2.
Stosowanie nowoczesnego
kodu znacznikw
powoduje, e tworzenie
prostych formularzy
jest zdumiewajco atwe
<label for="txtLName">Nazwisko:</label>
<input type="text" id="txtLName" tabindex="2" />
</p>
<p>
<label for="txtFName">Tytu:</label>
<input type="text" id="txtTitle" tabindex="3" />
</p>
<p><input type="submit" value="Wylij" tabindex="4" /></p>
</fieldset>
</div>
</form>
Przedstawiony powyej kod formularza moe zosta poczony z poniszym arkuszem
stylw CSS, ktry powinien by stosowany wzgldem kadego formularza na witrynie,
co zapewni im spjny wygld. Wprawdzie takie rozwizanie wymaga uycia dodatkowego
kodu, ale zastosowanie spjnego sposobu tworzenia formularzy i nadawania im stylu
bdzie ogromn zalet dla aplikacji.
h1 {
margin: 0;
font-weight: normal;
font-size: 15px;
}
#formBlock {
width: 300px;
}
#formBlock p {
margin: 0 0 3px;
}
p {
width: 100%;
}
ROZDZIA 4
label {
background-color: #ccc;
display: block;
float: left;
width: 28%;
text-align: right;
margin-right: 2px;
padding: 2px 0;
}
input {
float: left;
width: 65%;
margin-bottom: 4px;
margin-top: 1px;
padding: 1px;
}
input[type=submit] {
width: 10%;
}
fieldset {
border: none;
padding: 0;
margin: 0;
}
legend {
font-weight: bold;
margin-bottom: 12px;
}
Analiza nowego kodu XHTML napisanego z uwzgldnieniem standardw sieciowych
pokazuje zasadnicze usprawnienia w stosunku do formularzy utworzonych bez
zastosowania podejcia semantycznego:
W kodzie nie ma ju niepotrzebnej tabeli HTML sucej do nadania wygldu
formularzowi.
Formularz zawiera elementy <label>, ktre przypisuj etykiety faktycznym kontrolkom formularza doskonae rozwizanie z punktu widzenia dostpnoci,
funkcja opracowana z myl o uytkowniku i obsugiwana przez wikszo
przegldarek internetowych.
Zastosowany zosta atrybut tabindex uatwiajcy ustalenie kolejnoci przechodzenia midzy polami oraz zwikszajcy dostpno strony za pomoc klawiatury.
Formularz zosta zgrupowany w znaczniku <fieldset> oraz oznaczony etykiet
za pomoc znacznika <legend>, ktry grupuje i opisuje formularz w celu zwikszenia jego dostpnoci.
129
130
ROZDZIA 4
131
132
ROZDZIA 4
UWAGA
W przedstawionej powyej tabeli idealnym rozwizaniem byoby rwnie uycie wiersza
<th> w celu utworzenia nagwkw opisujcych kolumny. W ten sposb mona zwikszy zarwno poziom dostpnoci treci strony, jak i semantyczno kodu. Jeeli projekt
graficzny nie zakada wywietlania nagwkw tabeli to zawsze mona je ukry za pomoc
arkusza stylw CSS. Pozostan one jednak dostpne dla urzdze wspomagajcych.
Problem
Zalet stosowania technologii, takich jak PHP lub nawet klasyczne ASP, jest fakt,
e programista sieciowy zachowuje pen kontrol nad sposobem generowania kodu UI
zaleta, ktrej nie naley lekceway. Koszty zwizane z utrzymaniem i obsug
interfejsu uytkownika aplikacji mog sta si problemem w zespole, gdy zachodzi
prawdopodobiestwo, e kod UI nie zosta napisany przez programistw tego zespou.
W takich przypadkach bardzo wana jest przede wszystkim komunikacja oraz ponowna
ocena. Oczywicie, s to przecie procedury biznesowe, a nie techniki programowania,
ale bardzo czsto te podstawowe procesy po prostu nie zachodz.
Problem polega na tym, e we wspczesnym wiecie coraz wicej nowych produktw i technologii zyskuje szerok akceptacj, a wic proces oceny oraz programowania
UI sta si znacznie trudniejszy ni wczeniej. W przypadku zoonych aplikacji biznesowych jzyki skryptowe na przykad te omwione dotd w ksice wypady
z obiegu, poniewa sama platforma nie narzuca architektury warstwom aplikacji.
Ciarem spoczywajcym na programistach jest stosowanie strukturalnych wzorcw
projektowych, ktre wymagaj uywania dobrych praktyk w zakresie programowania.
Starsze narzdzia, takie jak PHP i ColdFusion, byy czsto znacznie bardziej dostpne
dla programistw lub projektantw UI ni niektre nowsze technologie.
Zasadniczy problem pozosta, a w przypadku wikszoci nowych rodowisk programowania dziaajcych po stronie serwera sta si nawet jeszcze powaniejszy. Problem
dotyczy zwaszcza sytuacji, gdy osadzony skrypt dziaajcy po stronie serwera,
na przykad PHP lub klasyczne ASP (obecnie ASP.NET) stosujcy podejcie warstwowe,
prbuje oddzieli logik biznesow od kodu wewntrznego. Problem moe rwnie
wystpi, gdy jzyk XSLT jest uywany do generowania kodu XHTML lub HTML z XML.
Jaki jest wic ten zasadniczy problem? Kiedy inynierowie oprogramowania budowali
coraz dojrzalsze i dziaajce na warstwach rodowiska interfejsw, takie jak Java,
ASP.NET lub XML/XSLT, to programici interfejsw nie poznali elementw odpowiedzialnych za interfejs w tyche rodowiskach programistycznych i najczciej
nigdy nie poznaj.
133
134
ROZDZIA 4
Z punktu widzenia standardw sieciowych istnieje kilka kwestii, na ktre trzeba zwrci
uwag, uywajc Visual Studio.NET, zwaszcza w wersji wczeniejszej ni 2005, oraz
kodu ASP.NET generowanego przez serwer:
Wikszo przykadw i materiaw edukacyjnych ASP.NET zawiera nieprawidowy kod.
Visual Studio.NET 2003 oraz wczeniejsze wersje maja z saw z powodu przepisywania i zmiany formatowania kodu HTML strony (kiedy programista przejdzie
do trybu graficznego), nawet jeli zostaa utworzona i starannie dopracowana
w innej aplikacji bd zwykym edytorze tekstowym przez programist UI.
Formularze i kontrolki danych mog by znacznikami ASP.NET, ktre bardzo czsto maj osadzone w nich atrybuty prezentacyjne. Wygenerowany kod rdowy
najczciej nie jest zgodny z XHTML lub HTML, cho w wersji 2005 zanotowano
135
136
na tym polu ogromn popraw. Jeeli programista nie woy dodatkowego wysiku
w nadzr generowanych danych wyjciowych, to wymienione atrybuty znacznikw
bd miay osadzon olbrzymi ilo danych prezentacyjnych.
W wersjach 2003 i wczeniejszych, kiedy programista uywa wbudowanych
narzdzi do tworzenia strony, tak utworzona strona HTML bya wywietlana
w trybie dziwactw, poniewa deklaracja DOCTYPE doczona do dokumentu
nie zawieraa URI.
ASP.NET zawiera funkcj inteligentnego generowania, ktra oznacza, e serwer
podejmuje decyzje dotyczce rodzaju wysyanej do przegldarki internetowej
warstwy kodu UI na podstawie ustawie dokonanych po stronie serwera. Serwer
zgaduje poziom obsugi danej technologii przez przegldark internetow.
Kod ASP.NET dziaajcy po stronie serwera uywa duych iloci atrybutw ID
w kontrolkach osadzonych na stronie. Najczciej, w zalenoci od kontekstu,
wymienione atrybuty ID maj dynamicznie zmieniane nazwy na podstawie ich
pooenia w dokumencie. Dlatego te programici CSS i JavaScript maj znacznie
utrudnione zadanie w kwestii odwoywania si do obiektw strony poprzez ich
wartoci ID. I nie ma tutaj znaczenia, e taki sposb odwoywania jest otwarty,
rozpoznawany wszdzie i zgodny ze standardami sieciowymi. W niektrych
przypadkach zastosowanie klasy CSS moe by odpowiednim rozwizaniem.
Mona rwnie sprbowa zastosowa wymagany atrybut ID elementowi nadrzdnemu, a odwoa si do danego obiektu poprzez kontekst. Idealnym wyjciem
jest, gdy projektanci interfejsu i programici kodu wewntrznego wsppracuj
ze sob podczas ustawiania atrybutw ID dla interfejsu uytkownika. Wwczas
bdzie to najlepszy sposb wykorzystania moliwoci kodu zarwno interfejsu
jak i wewntrznego ale takie rozwizanie nie jest dostpne w kadym przypadku.
Warto zwrci uwag na jeden interesujcy fakt. Mianowicie, wymienione problemy
mona pokona wkadajc dodatkowy wysiek oraz powicajc wicej czasu i uwagi aspektom kodu interfejsu uytkownika.
WSKAZWKA
Jednym ze sposobw poradzenia sobie z funkcj inteligentnego generowania jest
ustawienie opcji konfiguracyjnej ClientTarget wartoci Uplevel. W ten sposb ASP.NET
przestanie zakada, e jedyna przegldarka oferujca zaawansowane funkcje to Microsoft
Internet Explorer, i zacznie wysya zaawansowany kod do wszystkich. Jednak takie rozwizanie powoduje powstanie problemw z niektrymi funkcjami, zwaszcza dotyczcymi ASP.NET
1.1 i JavaScript. Bd one obsugiwane jedynie przez przegldark IE, poniewa Microsoft
w pewnych miejscach zastosowa kod obsugiwany tylko i wycznie przez t przegldark.
Naley zachowa szczegln ostrono i dokadnie przetestowa aplikacj ASP.NET jeszcze
przed jej wdroeniem. Co wicej, wymienione funkcje zostay w pewnym stopniu zmienione
w ASP.NET 2.0 kolejny powd do wykonywania wczesnych i czstych testw.
ROZDZIA 4
137
138
RYSUNEK 4.3.
Kontrolka DataGrid
w ASP.NET wywietlajca
dane
ROZDZIA 4
</tr>
<tr valign="top" style="color:Maroon;font-family:Arial;
font-size:12px;">
<td>Kaskadowe arkusze stylw</td><td>CSS</td><td>Warstwa
prezentacyjna</td>
<td>Warstwa prezentacyjna witryny. Arkusze stylw s oddzielnymi
dokumentami i zawieraj informacje definiujce wygld
i dziaanie witryny internetowej.</td>
</tr>
<tr valign="top" style="color:#400000;backgroundcolor:#
CCCCCC;font-family:Arial;font-size:12px;">
<td>JavaScript</td><td>JS</td><td>Obsuga zdarze, interakcja,
zdarzenia</td>
<td>Czasami nazywana warstw obsugi zdarze, nadzoruje
interakcj z uytkownikiem, zdarzenia oraz sposb zachowania
stron internetowych.</td>
</tr>
</table>
Przedstawiona tabela jest do prosta, zawiera naprzemienne kolory wierszy, ustawienia rodziny czcionek oraz elegancko stosuje arkusze stylw CSS zamiast znacznikw
<font>. Jednak powyszy fragment kodu pokazuje przykad rodzaju kodu, ktry jest
powszechnie uywany do demonstracji kontrolki DataGrid. Arkusze stylw CSS s
osadzone w kodzie i wielokrotnie powtarzane, co wynika ze stosowania przez ASP.NET
atrybutw takich jak ForeColor, BackColor i innych. Ponadto pierwszy wiersz tabeli,
ktry z zaoenia ma by nagwkiem, to po prostu element <td> wraz z pogrubion
czcionk.
Zaprezentowany kod to powd do wstydu, poniewa w rzeczywistoci ASP.NET posiada
funkcje pozwalajce na przypisywanie klas CSS dla wikszoci wartoci. Ponadto
w ASP.NET 2.0 jest obsugiwany znacznik <th> sucy do generowania nagwka
w tabeli. Atrybut CssClass wystpuje w wikszoci znacznikw, a take istniej inne,
ktre pozwalaj na przypisywanie klas znacznikom w wielu sytuacjach. Warto zwrci
uwag na uycie w poniszym kodzie atrybutu UseAccessibleHeader kontrolki
DataGrid. le si stao, e programici musz stosowa wewntrz kodu wasne sposoby
na zwikszenie poziomu jego dostpnoci, ale taka jest natura bestii i na szczcie
odpowiednie funkcje s dostpne w ASP.NET 2.0.
W zaprezentowanym poniej fragmencie kodu dokonano drobnych modyfikacji kodu
ASP.NET, ktre pozwoliy na zwikszenie jakoci generowanych danych wyjciowych:
<asp:DataGrid ID="catalog" runat="server" AutoGenerateColumns="false"
CssClass="grid-class" UseAccessibleHeader="true">
<ItemStyle CssClass="item" />
<AlternatingItemStyle CssClass="item-alt" />
139
140
ROZDZIA 4
141
RYSUNEK 4.4.
Ta sama kontrolka
DataGrid w ASP.NET,
ale po zastosowaniu
usprawnie zwikszajcych
jej zgodno ze standardami
sieciowymi
</tr>
<tr class="item">
<td>HyperText Markup Language</td><td>HTML</td><td>
Kod znacznikw</td>
<td>Uywany do tworzenia dokumentw. Charakteryzuje si lu n
skadni.</td>
</tr>
<tr class="item-alt">
<td>eXtensible HyperText Markup Language</td><td>XHTML</td>
<td>Kod znacznikw</td><td>To HTML wraz ze skadni XML, a take
cisymi reguami stosowanymi w XML.</td>
</tr>
<tr class="item">
<td>Kaskadowe arkusze stylw</td><td>CSS</td><td>Warstwa
prezentacyjna</td>
<td>Warstwa prezentacyjna witryny. Arkusze stylw s oddzielnymi
dokumentami i zawieraj informacje definiujce wygld
i dziaanie witryny internetowej.</td>
</tr>
<tr class="item-alt">
<td>JavaScript</td><td>JS</td><td>Obsuga zdarze, interakcja,
zdarzenia</td>
<td>Czasami nazywana warstw obsugi zdarze, nadzoruje
interakcj z uytkownikiem, zdarzenia oraz sposb zachowania
stron internetowych.</td>
</tr>
</table>
142
Warto zwrci uwag, e nowy kod zawiera znacznik <th> (kompletny wraz z atrybutem
scope) klasy CSS dla wikszoci elementw, cznie z obsug naprzemiennego koloru
wierszy, oraz nie ma (w wikszoci) osadzonych atrybutw prezentacyjnych. Mimo
e powyszy kod na pewno nie jest doskonay, to jednak stanowi due usprawnienie,
a poprawienie danych wyjciowych wymagao drobnych korekt technicznych. Ten
rodzaj modyfikacji wymaga pracy ze strony programistw interfejsu, ktrzy bd
znali techniki pracy z kodem wewntrznym. Albo programistw kodu wewntrznego,
ktrzy wiedz, jak programowa interfejs.
Znaczniki ASP.NET generujce dane wyjciowe na podstawie danych pochodzcych
z bazy danych posiadaj znacznie wicej opcji. W niektrych sytuacjach zastosowanie
innego znacznika moe by znacznie lepszym rozwizaniem, poniewa zapewni on
wikszy poziom kontroli nad generowanym kodem UI. Przykadowo: kontrolka Repeater
stanowi doskonay wybr podczas tworzenia prostych danych wyjciowych, gdy
definiuje ona ptl danych wyjciowych i uywa maych szablonw kodu, w ktrych
programista moe okreli to, co powinno by wywietlone:
<asp:Repeater id="catalog" runat="server">
<HeaderTemplate>
<table class="grid-class">
<tr>
<th>Nazwa</th>
<th>Nazwa skrcona</th>
<th>Rodzaj</th>
<th>Opis</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr class="item">
<td><%#Container.DataItem("name")%> </td>
<td><%#Container.DataItem("abbr")%> </td>
<td><%#Container.DataItem("typeof")%> </td>
<td><%#Container.DataItem("notes")%> </td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="item-alt">
<td><%#Container.DataItem("name")%> </td>
<td><%#Container.DataItem("abbr")%> </td>
<td><%#Container.DataItem("typeof")%> </td>
<td><%#Container.DataItem("notes")%> </td>
</tr>
ROZDZIA 4
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Przedstawiony powyej kod generuje tabel HTML, ktra jest poczona z przedstawionym wczeniej arkuszem stylw CSS. Powstay kod jest czysty i pozbawiony wszelkich
niepotrzebnych atrybutw prezentacyjnych. Chocia kontrolka Repeater wymaga
uycia nieco wikszej iloci kodu, to jednak daje programicie wiksz kontrol
nad sposobem generowania danych wyjciowych (zobacz rysunek 4.5):
<table class="grid-class">
<tr>
<th>Nazwa</th>
<th>Nazwa skrcona</th>
<th>Rodzaj</th>
<th>Opis</th>
</tr>
<tr class="item">
<td>HyperText Markup Language</td>
<td>HTML</td>
<td>Kod znacznikw</td>
<td>Uywany do tworzenia dokumentw. Charakteryzuje si lu n
skadni.</td>
</tr>
<tr class="item-alt">
<td>eXtensible HyperText Markup Language </td>
<td>XHTML</td>
<td>Kod znacznikw</td>
<td>To HTML wraz ze skadni XML, a take cisymi reguami
stosowanymi w XML.</td>
</tr>
<tr class="item">
<td>Kaskadowe arkusze stylw</td>
<td>CSS</td>
<td>Warstwa prezentacyjna</td>
<td>Warstwa prezentacyjna witryny. Arkusze stylw s oddzielnymi
dokumentami i zawieraj informacje definiujce wygld
i dziaanie witryny internetowej.</td>
</tr>
<tr class="item-alt">
<td>JavaScript</td>
<td>JS</td>
<td>Obsuga zdarze, interakcja, zdarzenia</td>
143
144
RYSUNEK 4.5.
Uycie kontrolki
Repeater ASP.NET w celu
wygenerowania tej samej
tabeli, ale z czystszym
kodem, przy zachowaniu
takiego samego wygldu
ROZDZIA 4
145
RYSUNEK 4.6.
Rne kontrolki serwerowe
platformy ASP.NET maj
moliwo dynamicznego
generowania danych
wyjciowych
}
void Page_Load()
{
if (!IsPostBack)
{
// Kontrolki Web Control.
myLink.Text = "Pro Web Book Dot Com";
myLink.NavigateUrl = "http://www.prowebbook.com";
myLink.CssClass = "webControl";
// Kontrolki tworzce cze HTML.
myOtherLink.InnerText = "NavigationArts";
myOtherLink.HRef = "http://www.navigationarts.com";
myOtherLink.Attributes.Add("class","htmlControl");
// Kontrolka tworzca etykiet.
myLabel.Text = "Hej, spjrz! Ten element jest bez znaczenia!";
// Kontrolka tworzca dosowny tekst.
myLiteral.Text = " (Nieprawidowe cze!)";
// Kontrolka tworzca pierwszy akapit HTML.
myPara.InnerHtml = "cze Pro Web Book " +
" <strong>rzdzi!</strong>";
// Kontrolka tworzca drugi akapit HTML.
myPara2.Visible = false;
}
146
}
</script>
<form id="form1" runat="server">
<ul>
<li><asp:HyperLink runat="server" id="myLink" /></li>
<li><a runat="server" id="myOtherLink" /></li>
<li><asp:LinkButton Text="Kliknij cze"
OnClick="Clicker" runat="server" /></li>
</ul>
<p><asp:Label id="myLabel" runat="server" /></p>
<p id="myPara" runat="server" />
<p id="myPara2" runat="server">Ten element bdzie ukryty.</p>
</form>
Powyszy kod zawiera wiele elementw, na ktre warto zwrci uwag, prezentujcych rne punkty widzenia:
Cao kodu ASP.NET musi by umieszczona w ramach elementu <form> wraz
z atrybutem runat="server", co umoliwi uycie kontrolki <asp:LinkButton />.
O ile bdzie taka moliwo, to naley unika stosowania wymienionej kontrolki.
Wyjanienie zostanie przedstawione wkrtce podczas omawiania wynikowego
kodu XHTML.
Warto zwrci uwag, e w nieuporzdkowanej licie formularza pierwszym
znacznikiem serwerowym ASP.NET jest kontrolka <asp:HyperLink />. To kontrolka
serwerowa Web Control, ktra generuje cze HTML oraz zapewnia programowy
dostp do wszystkich atrybutw i tekstu znacznika, jak to zaprezentowano w bloku
<script> znajdujcym si nad odwoaniem do myLink.
Warto take zauway, e drugie cze nie posiada atrybutu href i rwnie jest
programowo kontrolowane z poziomu znajdujcego si wczeniej bloku <script>.
Ta kontrolka HTML dziaa po stronie serwera (wskazuje to atrybut runat="server"),
ktry zapewnia programowy dostp do atrybutw elementu. W ten sposb
programista ma wiksz kontrol nad danymi wyjciowymi, ale mniejsz nad
funkcjami serwerowymi.
Dodanie atrybutu ID do kodu runat="server" powoduje, podobnie jak w przypadku
dowolnego znacznika HTML, uzyskanie dostpu do jego znacznikw. Takie rozwizanie
daje olbrzymie moliwoci, poniewa programista moe kontrolowa wywietlanie,
tre oraz atrybuty za pomoc jedynie kilku wierszy kodu umieszczonego w warstwie
programowej aplikacji.
Obie kontrolki tworzenia czy wirtualnie wykonuj te same zadania, natomiast kontrolki
Web Control dostarczaj dodatkowych funkcji w stosunku do zwykych kontrolek HTML.
Ponadto kontrolki rodzaju Web Control s w mniejszym stopniu przewidywalne
i zawieraj atrybuty prezentacyjne, ktre programici czsto wykorzystuj w celu
ROZDZIA 4
147
148
ROZDZIA 4
Zarzdzanie treci
Kiedy witryna internetowa musi zosta uaktualniona przez uytkownika pozbawionego
wiedzy technicznej, gdy rozrasta i staje si wiksza lub zawiera tre, ktra musi by
ponownie uyta, skatalogowana, wspdzielona i zapewniajca moliwo jej przeszukiwania, to najczciej stosowanym rozwizaniem jest oprogramowanie do zarzdzania treci. Wymienione oprogramowanie zarzdzania treci jest jedn z powszechnie
dostpnych aplikacji sieciowych, na ktr natknie si kady zesp programistw
sieciowych. Wynika to z faktu, e najczstszym daniem ze strony uytkownikw
biznesowych jest coraz wiksza moliwo kontrolowania witryny.
Niestety, aplikacje suce do zarzdzania treci bardzo czsto generuj wasny jzyk
znacznikw lub wymagaj woenia duych nakadw pracy i wysiku, aby wej
do wiata standardw sieciowych. Na szczcie najczciej nie jest to a takie trudne,
jak si pocztkowo wydaje, przynajmniej w przypadku porzdnych aplikacji zarzdzania
149
150
treci. Szczerze mwic, najtrudniejszym etapem jest czsto okrelenie, gdzie naley
szuka odpowiednich fragmentw kodu, ktre faktycznie odpowiadaj za generowanie danych wyjciowych.
Dostpne s niezliczone systemy zarzdzania treci (CMS) o zrnicowanym stopniu
elastycznoci i zgodnoci ze standardami sieciowymi. Z punktu widzenia standardw
sieciowych, elastyczno zaley od niuansw zwizanych z moliwociami oprogramowania, jak rwnie implementacj, za ktr odpowiada ju zesp programistw.
ROZDZIA 4
151
152
WSKAZWKA
Wszystko okrelane mianem dostpne od rki z natury jest podejrzane, o ile narzdzie
nie zostao wczeniej przystosowane do speniania nowoczesnych standardw.
ROZDZIA 4
153
154
RYSUNEK 4.7.
Szablon systemu CMS
tworzcy ukad, ktry
opiera si na trzech
kolumnach
ROZDZIA 4
155
156
ROZDZIA 4
Konfiguracja edytora
Programici sieciowi powinni powzi odpowiednie kroki, aby edytory bazujce na
przegldarce internetowej nie zniweczyy ich cikiej pracy woonej w definiowanie
stylw i programowanie witryn internetowej zgodnie ze standardami sieciowymi.
Kroki konieczne do podjcia mog obejmowa midzy innymi integracj nowego
uytkownika lub nawet nowego oprogramowania.
Pod uwag naley wzi nastpujce kroki:
Przejrzenie kodu danych wyjciowych edytora WYSIWYG w rnych sytuacjach.
Generowanie przez tego rodzaju edytory niepoprawnego kodu jest do powszechne,
ale rynek nadal si rozwija i wiele z nich potrafi wygenerowa prawidowe dane
HTML lub nawet XHTML, po wprowadzeniu niewielu zmian konfiguracyjnych.
Niektre edytory oferuj widok wywietlajcy kod rdowy. W zalenoci od
poziomu umiejtnoci autora treci, tak funkcj trzeba bdzie wczy lub wyczy.
Cz edytorw uywa modelu opartego na prawach dostpu, co umoliwia
wczenie widoku wywietlajcego kod rdowy niektrym uytkownikom
i wyczenie go innym.
Funkcje kontrolujce aspekty prezentacyjne powinny by ograniczone do minimum.
Naley wyczy funkcje modyfikujce rodzin czcionki, kolor czcionki i kolor ta.
Te parametry powinny by definiowane jedynie w arkuszu stylw CSS.
Edytor powinien mie moliwo stosowania klas CSS. Dobry edytor bdzie potrafi obsuy poczenie pliku CSS z edytorem. Niektre bd wymagay, aby
programista skonfigurowa elementy wywietlane w menu klas CSS. Najlepsze
edytory bd obsugiway kontekst oraz pozwalay na uywanie jedynie niektrych
klas aplikacji, w zalenoci od regu CSS na przykad niedozwolone bdzie uycie
reguy p.error w elemencie <span>.
Obsuga klas CSS aplikacji powinna obejmowa moliwoci w zakresie stosowania
CSS okrelonym elementom. W ten sposb bdzie mona bardzo atwo zastosowa
klas na elemencie <ul>, jak rwnie na zagniedonych w nich elementach <li>,
na podstawie pewnej formy wyboru opcji. Czstym sposobem realizacji takiego
zadania jest proste kliknicie i zaznaczenie drzewka modelu DOM na pasku stanu
(body > div > ul > li > a).
157
158
Firmy trzecie
Wiksze witryny internetowe czsto stosuj okrelony wygld i sposb dziaania,
rwnie na witrynach firm trzecich bd aplikacji biznesowych hostingowanych gdzie
indziej, na przykad na witrynie Investor Relations lub witrynach zajmujcych si
porednictwem w znalezieniu pracy. Te witryny bd posiaday wygld zgodny
z wygldem witryny podstawowej, a uytkownik moe si nawet nie zorientowa,
e zosta przeniesiony na inn witryn.
Podejcie zakadajce stosowanie standardw sieciowych jest idealne w tego rodzaju
sytuacjach, poniewa nie tylko grafika i skrypty mog by przechowywane na gwnych
ROZDZIA 4
serwerach organizacji, ale take wszystkie pliki CSS lub przynajmniej te okrelajce
oglny wygld i dziaanie witryny. W takich sytuacjach organizacja moe udostpni
firmom trzecim cza do niektrych lub wszystkich elementw (na przykad plikw CSS),
a nastpnie usprawnia je przez cay czas, bez koniecznoci wprowadzania modyfikacji
take w aplikacjach firm trzecich.
W tego rodzaju przypadkach prawdopodobnie najlepszym rozwizaniem bdzie
przekazanie firmom trzecim dokumentacji wraz z opisem klas stylw, nagwkami
grafik oraz oglnymi wskazwkami w zakresie ukadu witryny. Warto rwnie przekaza
przykadowe fragmenty kodu oraz szablony przedstawiajce przykad budowania
stron i ukadu witryny.
Jednak podobnie jak w kadej innej organizacji lub platformie oprogramowania,
firmy trzecie bd si rniy stopniem stosowania i zgodnoci ze standardami sieciowymi.
Przykadowo: ich platformy mog by niezgodne z arkuszami stylw opracowanymi
w organizacji. W takich przypadkach pewne kompromisy stan si koniecznoci.
Kompromis moe oznacza wyodrbnienie pewnego fragmentu z pliku CSS lub
utworzenie oddzielnych szablonw kodu znacznikw. Jednak w perspektywie
duszego okresu czasu, warto rozway i przeanalizowa zmian firmy trzeciej,
jeeli nie bdzie ona w stanie nady za rozwizaniami przemysowymi.
159