plik


ÿþCSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C Autor: Christopher Schmitt, Kimberly Blessing, Rob Cherny, Meryl K. Evans, Kevin Lawver, Mark Tramme T³umaczenie: Robert Górczyñski ISBN: 978-83-246-1755-5 Tytu³ orygina³u: Adapting to Web Standards: CSS and Ajax for Big Sites (Voices That Matter) Format: 168x237, stron: 312 Twórz serwisy internetowe zgodne z standardami! " Jak projektowaæ serwisy WWW zgodne z standardami? " Jak zaprojektowaæ interfejs u¿ytkownika? " Jak zwiêkszyæ wydajnoSæ strony WWW? Wspó³czesne strony internetowe ró¿ni¹ siê, a przynajmniej powinny, od tych sprzed kilku lat. Je¿eli ró¿nic nie widaæ od strony graficznej, to z pewnoSci¹ mo¿na je znalexæ w kodzie strony. Nowoczesne witryny WWW charakteryzuj¹ siê zgodnoSci¹ ze standardami, wykorzystaniem kaskadowych arkuszy stylów oraz udogodnieniami dla osób niepe³nosprawnych. A dziêki zastosowaniu technologii AJAX wspó³czesne witryny kusz¹ interaktywnoSci¹ i dynamizmem. Autorzy niniejszej ksi¹¿ki wprowadzaj¹ Czytelnika w tajniki projektowania serwisów zgodnych z zasadami ustalonymi przez organizacjê W3C. Dziêki tej ksi¹¿ce poznasz rodzaje i zastosowanie standardów sieciowych. Dowiesz siê, w jaki sposób wybraæ jêzyk znaczników, oraz poznasz zalety i wady jêzyków HTML i XHTML. Nauczysz siê korzystaæ z kaskadowych arkuszy stylów, a nastêpnie odkryjesz sposób wykorzystania technologii AJAX w celu tworzenia interaktywnych stron WWW. Co najwa¿niejsze, dostosujesz swoj¹ stronê do wspó³czesnych standardów, dziêki czemu zyska na dostêpnoSci i interaktywnoSci, przyci¹gaj¹c rzesze u¿ytkowników! " Zalety standardów sieciowych " Przygotowanie interfejsu u¿ytkownika " Wady i zalety jêzyków HTML oraz XHTML " Wp³yw deklaracji DOCTYPE na zachowanie przegl¹darki " KorzySci p³yn¹ce z zastosowania kaskadowych arkuszy stylów Wydawnictwo Helion " Sposoby do³¹czania arkuszy stylów do strony ul. KoSciuszki 1c " Zasady wykorzystania technologii AJAX 44-100 Gliwice " Wspó³praca jêzyka JavaScript z CSS tel. 032 230 98 63 " Systemy zarz¹dzania treSci¹ e-mail: helion@helion.pl " Programowanie aplikacji sieciowych " Sposoby na zwiêkszenie wydajnoSci witryn internetowych Dostosuj siê do standardów  zwiêksz dostêpnoSæ i popularnoSæ swojej strony internetowej! Spis tre[ci Podzikowania ....................................................................................................................................... 7 O autorach ................................................................................................................................................ 9 Cz[ I Tworzenie witryn internetowych bazujcych na standardach sieciowych 13 WPROWADZENIE 15 Czym s standardy sieciowe? .............................................................................................16 Podstawowe zalety standardów sieciowych ........................................................17 Internetowe interfejsy u|ytkownika ................................................................................17 Planowanie interfejsu u|ytkownika .................................................................................18 WspóBczesne planowanie witryny internetowej .................................................20 Nowe podej[cie: plany architektury UI ...................................................................22 ROZDZIAA 1. TWORZENIE INTERFEJSU 25 Od czego rozpocz? .............................................................................................................27 Struktura dokumentu: wybór jzyka znaczników ......................................................27 HTML kontra XHTML ......................................................................................................28 PrzeBczanie deklaracji DOCTYPE i jej wpByw na tryb pracy przegldarki internetowej .....................................34 Weryfikowa czy nie weryfikowa poprawno[ci kodu? ...................................44 Tre[ i struktura: od projektu do wykonania ........................................................47 ROZDZIAA 2. WPROWADZENIE DO KASKADOWYCH ARKUSZY STYLÓW 59 Ile plików CSS nale|y utworzy? ........................................................................................60 Plik CSS i strategie jego doBczania ..........................................................................62 Mikroformaty w sBu|bie konwencji i czytelnych nazw ..............................................68 Mikroformaty i POSH .....................................................................................................69 Zbyt wiele klas ..........................................................................................................................72 Classitis klas .......................................................................................................................72 Uzdrowienie classitis ......................................................................................................74 Struktura tre[ci pliku CSS .....................................................................................................78 Media alternatywne w CSS ..................................................................................................81 Prezentacja zapewniajca swobod dziaBania .............................................................85 ROZDZIAA 3. INTEGRACJA Z WARSTW OBSAUGI ZDARZEC 87 Nowoczesne metody technologii Ajax ...........................................................................88 Nowoczesne, progresywne i dyskretne skrypty ..................................................90 Wymagania JavaScript: plik oraz spis funkcji ...............................................................92 BBdny skrypt, oj, bBdny! .............................................................................................93 Dyskretne usprawnienia ...............................................................................................98 Wyskakujce okna ....................................................................................................... 100 Elementy dynamiczne i innerHTML ...................................................................... 104 4 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C WspóBpraca kodu JavaScript z arkuszami stylów CSS i warstw prezentacyjn ................................................ 107 Ogromne witryny internetowe i obsBuga wielu zdarzeD onload ............... 109 WBasne skrypty kontra gotowe struktury .................................................................... 111 PrzykBad kodu struktury jQuery .............................................................................. 113 Struktury znacznie uBatwiaj u|ywanie technologii Ajax ............................. 117 Kilka sBów odno[nie struktur .................................................................................... 119 ROZDZIAA 4. PROGRAMOWANIE APLIKACJI SIECIOWYCH 121 Aplikacje sieciowe obci|one jarzmem przeszBo[ci ................................................ 122 Jako[ oprogramowania i analiza jego elementów ....................................... 122 Wskazówki, reguBy oraz standardy sieciowe .............................................................. 125 ReguBy programowania ............................................................................................. 125 Lepsze formularze tworzone za pomoc nowoczesnego kodu znaczników .............................................. 126 Struktury dziaBajce po stronie serwera oraz narzdzia szablonów ......... 130 Platforma Microsoft ASP.NET ........................................................................................... 134 Dane wyj[ciowe ASP.NET .......................................................................................... 137 Kontrolki HTML ASP.NET, kontrolki Web Control i inne ................................ 144 Zarzdzanie tre[ci .............................................................................................................. 149 Podstawy systemu zarzdzania tre[ci ................................................................ 150 System zarzdzania tre[ci i czysta tre[ ............................................................ 150 Dane wyj[ciowe systemu zarzdzania tre[ci i moduBy ................................ 151 Szablony systemu zarzdzania tre[ci ................................................................. 152 Tryb WYSIWYG dla autorów tre[ci ......................................................................... 156 Firmy trzecie ................................................................................................................... 158 W jaki sposób podej[ do aplikacji sieciowych? ...................................................... 159 ROZDZIAA 5. KRG STANDARDÓW 161 Organizacyjna opieszaBo[ ............................................................................................... 162 Wprowadzenie krgu ......................................................................................................... 164 Mened|er standardów ............................................................................................... 164 Tworzenie i dokumentowanie standardów ....................................................... 165 Szkolenia i komunikacja ............................................................................................ 168 Proces przegldu jako[ci ........................................................................................... 170 Wprawienie caBo[ci w ruch ............................................................................................... 172 Utrzymywanie impetu ................................................................................................ 172 Podsumowanie ..................................................................................................................... 173 Cz[ II Studium przypadku 175 PRAKTYKA NIE OZNACZA DOSKONAAOZCI 177 Komunikacja ........................................................................................................................... 178 Zdolno[ do adaptacji ........................................................................................................ 178 WytrwaBo[ ............................................................................................................................. 179 Próby i cierpienia .................................................................................................................. 179 Spis tre[ci 5 ROZDZIAA 6. EVERYTHINGTORI.COM 181 Kulisy ......................................................................................................................................... 182 ZagBbienie si w [wiat Tori Amos ........................................................................ 184 Rozpoczcie wBa[ciwego procesu tworzenia projektu .................................. 184 Zbudowanie szkieletu ................................................................................................ 185 Budowanie witryny ..................................................................................................... 192 Kulisy arkuszy stylów CSS .......................................................................................... 196 Uruchomienie witryny ........................................................................................................ 205 Spotkanie z projektantem Philipem Fierlingerem ................................................... 206 Utwór koDcowy ..................................................................................................................... 210 ROZDZIAA 7. AOL.COM 213 Utworzenie zespoBu skazanego na sukces i unikanie pora|ek ........................... 215 Co poszBo zle? ................................................................................................................ 215 Projektowanie z uwzgldnieniem wydajno[ci ......................................................... 237 Oszacowanie wydajno[ci przed utworzeniem choby jednego wiersza kodu ................................... 238 Obawy zwizane z wydajno[ci ............................................................................. 242 Wywiad: David Artz ..................................................................................................... 247 Powtarzalne kroki ........................................................................................................ 249 Projekt i architektura systemu ......................................................................................... 250 System wzajemnej pomocy ..................................................................................... 250 Wykonywanie procedur po[redniczcych ......................................................... 251 Rozwa|ania dotyczce organizacji pracy ............................................................ 252 Magia interfejsu .................................................................................................................... 254 Harmonizacja kodu znaczników z deklaracj DOCTYPE ............................... 254 Najlepsze rozwizania w zakresie CSS ................................................................. 258 Arkusze stylów CSS uBatwiajce dostpno[ tre[ci ......................................... 261 Wydajno[ w rzeczywistym produkcie ................................................................ 267 Podsumowanie ..................................................................................................................... 269 PosBowie ............................................................................................................................................... 271 Dodatek A Docelowe przegldarki internetowe .................................................................. 273 Dodatek B Dostpno[ tre[ci ....................................................................................................... 279 Dodatek C Wskazówki dotyczce wydajno[ci witryny internetowej ........................... 281 Dodatek D Przewodnik po selektorach CSS ........................................................................... 291 Skorowidz ............................................................................................................................................ 295 4 Programowanie aplikacji sieciowych Profesjonalne zespo y programistów buduj ce witryny internetowe nie ograniczaj si do tworzenia tre ci statycznych, ale oferuj tak e aplikacje dynamiczne i witryny wykorzystuj ce systemy zarz dzania tre ci (CMS). W takim przypadku u ywany jest kod warstwy interfejsu u ytkownika (UI), podzielony dalej na kod j zyka znaczników, arkusze stylów CSS oraz skrypty JavaScript. Znaczenie UI powoduje, e gotowa witryna internetowa jest wi ksza, a ponadto wyd u aj si okresy czasu mi dzy znacz cymi modernizacjami witryny. Powstaje wi c pytanie, dlaczego nie pokusi si o ograniczenie zale no ci od programistów tworz cych kod wewn trzny b d ekspertów z zakresu systemów CMS, skoro programi ci UI mogliby samo dzielnie zarz dza zmianami przeprowadzanymi w UI? Je eli doda do tego wyzwania wynikaj ce z konieczno ci integracji z elementami opracowanymi przez firmy trzecie oraz starszymi i nowszymi elementami sieciowymi organizacji, to wyra nie wida niesko czone pok ady korzy ci p yn cych ze stosowania standardów sieciowych. W rzeczywisto ci wszystko, co jest tworzone w ramach kodu interfejsu u ytkownika ko cowego, powinno zosta zaimplementowane z u yciem technik zgodnych ze standardami sieciowymi. 122 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C Aplikacje sieciowe obci|one jarzmem przeszBo[ci Wielu programistów aplikacji sieciowych nauczyBo si jzyka HTML w latach dziewi- dziesitych ubiegBego stulecia i od tamtego okresu nie uaktualnili stosowanych technik programowania w celu wdro|enia nowych technologii. Przedstawienie nowych poziomów separacji i [cisBego u|ywania standardów lub specyfikacji aplikacji programi- [cie, który ksztaBciB si w okresie powszechnego stosowania  zupy znaczników , mo|e by naprawd ciekawym do[wiadczeniem. Nowoczesne podej[cie bazujce na standardach sieciowych jest znacznie czystsze, efektywniejsze i logiczniejsze. Zwykle zmierza równie| do postawienia programisty sieciowego przed sytuacj  albo to dziaBa, albo nie dziaBa  czsto wskrzeszajc w nim zainteresowanie programowaniem interfejsu. Z definicji witryny internetowe opierajce si na standardach sieciowych d| do [cisBego przestrzegania standardów, zawsze gdy tylko jest to mo|liwe. Kiedy oprogramowanie sieciowe umieszcza lub nawet tworzy kod warstwy UI, nale|y oczekiwa takiego samego poziomu dyscypliny. W dBu|szej perspektywie czasu takie podej[cie przyniesie korzy[ci witrynie oraz aplikacji poprzez ograniczenie ryzyka, które nieuchronnie pojawia si wraz z kolejnymi modyfikacjami. Podej[cie wykorzy- stujce standardy sieciowe zwiksza poziom zgodno[ci i dostpno[ci tre[ci witryny oraz redukuje poziom u|ywanych zasobów i wysiBku, który trzeba wBo|y w zmian interfejsu u|ytkownika aplikacji lub statycznych fragmentów witryny. Problem polega jednak na tym, |e wci| istnieje ogromna ilo[ archaicznego, niespój- nego lub po prostu przestarzaBego kodu, który zostaB zaimplementowany w opro- gramowaniu sieciowym. Programi[ci musz bardzo dokBadnie przyjrze si zarówno wBasnym, jak i komercyjnym implementacjom oprogramowania w celu okre[lenia jak i kiedy oprogramowanie witryny mo|e zyska na zastosowaniu standardów sieciowych. Jako[ oprogramowania i analiza jego elementów W celu wBa[ciwego okre[lenia natury sytuacji, absolutnie ka|dy element oprogramowania sieciowego w projekcie powinien zosta poddany ewidencji, odpowiednio skatalogo- wany i okre[lony pod wzgldem zgodno[ci (bdz jej braku) ze standardami sieciowymi. Problemy zwizane z tworzeniem aplikacji sieciowej Z perspektywy standardów sieciowych, problemy zwykle pojawiaj si tam, gdzie programi[ci aplikacji musz utworzy warstw UI  w obszarach zwizanych z obsBug, przeprojektowywaniem, delikatnymi zmianami w projekcie oraz oczywi[cie w kwestiach dotyczcych dostpno[ci tre[ci i mo|liwo[ci przegldarek internetowych. ROZDZIAA 4 Programowanie aplikacji sieciowych 123 Zazwyczaj programista sieciowy albo wrzuca kod do szablonów przygotowanych przez zespóB projektantów, albo próbuje dopasowa wygld i dziaBanie do przedstawionego w statycznej reprezentacji aplikacji. Istniej równie| pakiety oprogramowania, które generuj kod UI, pozwalajc na ró|ne poziomy dostosowania go do wBasnych potrzeb. Ponadto, poniewa| programi[ci sieciowi tworz równie| wBasny kod interfejsu, skutkuje to otrzymaniem ró|nego stopnia zgodno[ci ze standardami  czasami caBkiem [wietnego i wystarczajcego, a w innych przypadkach wrcz przeciwnie. Oczywi[cie jest to do[ zBo|ony problem o wielu aspektach, ale kluczowy jest fakt, |e struktury aplikacji, materiaBy edukacyjne, wygenerowany kod oraz narzdzia po- wa|nie cierpi w wyniku braku demonstracji najlepszych praktyk i rozwizaD. Wielu programistów posBuguje si ró|nymi formami zintegrowanego [rodowiska progra- mowania (ang. Integrated Development Environment  IDE), bibliotekami kodu lub kopiuje kod, który mo|e, ale nie musi opiera si na najlepszych rozwizaniach. W wyniku takiej sytuacji kod wewntrzny jest tworzony z u|yciem niewBa[ciwych znaczników wymieszanych wraz z warstw prezentacyjn, w projektach stosuje si ukBady bazujce na tabelach, a ponadto dodatkowe i zupeBnie zbdne znaczniki. Interfejsy czsto zawieraj skrypty bBdnie napisane lub utworzone pod ktem okre[lonej przegldarki internetowej, lub skrypty innych interfejsów w ogóle nie s brane pod uwag. W takim przypadku zmiana projektu staje si prawdziwym problemem  a wcale nie musi nim by. Warstwa UI jest albo utworzona w wyniku pracy czBowieka, albo mo|e by wygene- rowana poprzez oprogramowanie (przy minimalnym poziomie wysiBku) i [lepo zaak- ceptowana przez u|ytkownika. Powstaje pytanie: jak du|o wysiBku trzeba wBo|y w jej opracowanie? Poniewa| wspóBcze[ni in|ynierowie aplikacji, platformy serwerowe i narzdzia zwykle domy[lnie nie tworz kodu interfejsu zgodnego ze standardami sieciowymi, to zadanie zapew- nienia odpowiedniej jako[ci spadBo na zespóB. Osignicie zgodno[ci ze standardami sieciowymi interfejsu aplikacji i systemu zarzdzania tre[ci wymaga wBo|enia du|ego wysiBku. Ustanowienie zbioru najlepszych praktyk dotyczcych kodu UI w oprogra- mowaniu dziaBajcym po stronie serwera mo|e by punktem zwrotnym, od którego rozpocznie si usprawnianie oprogramowania. Trzeba zdawa sobie spraw z istnienia prawdziwego kompromisu midzy rozwi- zaniem, które pozwoli na uniknicie problemów w przyszBo[ci, a po prostu naci- skiem na jak najszybsze wydanie produktu. Z perspektywy dBu|szego okresu czasu d|enie do uzyskania UI zgodnego ze standardami sieciowymi powoduje ograniczenie ryzyka zwizanego z brakiem spójno[ci warstw logiki aplikacji, prezentacji i UI. Jednak|e implementacja standardów mo|e czasami zabra du|o czasu. 124 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C Kryteria warto[ciowania W przypadku oceny ka|dego dokumentu aplikacji nale|y wzi pod uwag kilka czynników: 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 genero- wany w  trybie standardów czy  dziwactw ? W jaki sposób zostaBy zdefiniowane aspekty prezentacyjne? Czy programi[ci aplikacji zrozumieli kod UI? Czy programi[ci UI zrozumieli kod wewntrzny? Ilu czBonków zespoBu zrozumiaBo sposób integracji UI oraz kodu wewntrznego? W jaki sposób jest generowany kod znaczników? Czy oprogramowanie odwoBuje si do jakiegokolwiek bie|cego kodu prezen- tacyjnego, takiego jak pliki arkuszy stylów CSS? Je|eli tak, to do jakich plików? Czy te pliki zmieniaj si w projekcie? Jak blisko kod interfejsu jest powizany z wewntrzn logik biznesow (o ile w ogóle jest powizany)? Czy istnieje jakikolwiek sposób abstrakcji kodu UI od kodu aplikacji? Je[li aplikacja generuje kod interfejsu, czy istnieje jakikolwiek sposób kontroli tego procesu? Je|eli u|ytkownik ma mo|liwo[ generowania tre[ci lub kodu, to czy istnieje jakikolwiek sposób zablokowania tego, co u|ytkownik mo|e zrobi? Jak du|y wysiBek trzeba bdzie wBo|y w modyfikacje warstwy UI? Jak du|e jest ryzyko zwizane z modyfikacj warstwy UI aplikacji? Jakie s potencjalne korzy[ci i wady wynikajce z zaniechania przeprojektowania aplikacji? Jakie s ograniczenia zwizane z tym, |e oprogramowanie firm trzecich mo|e wymaga dostosowania do wBasnych potrzeb? Szczerze mówic, to jest ogromna ilo[ informacji, które trzeba zebra, przeanalizowa, a nastpnie rozwa|y. Czy aplikacja mo|e zosta uaktualniona? Na koniec trzeba wspomnie, |e w przypadku cz[ci oprogramowania by mo|e niewiele bdzie mo|na zdziaBa. Taka sytuacja mo|e wynika z faktu, |e po prostu nie bdzie mo|liwo[ci uaktualnienia kodu interfejsu do postaci zgodnej ze standardami sieciowymi. Powodem mog by albo kwestie zwizane z architektur aplikacji, ROZDZIAA 4 Programowanie aplikacji sieciowych 125 albo nieakceptowanym poziomem ryzyka zwizanego z uaktualnieniem. W takich przypadkach wysiBki staj si wiczeniem w zakresie kompromisów. Albo potrzeby stan si powodem utworzenia dBugoterminowego planem nastawionego na rozwizanie problemów, albo zarówno u|ytkownicy, jak i biznes bd cierpieli z powodu bolesnego procesu uaktualnienia. Midzy krótkoterminowym wysiBkiem i ryzykiem oraz dBugoterminowym wysiBkiem i ryzykiem wystpuj wyrazne kompromisy. Niektóre rozwizania cz[ciowe zakBadaj albo implementacj cz[ci stylów (nawet wyodrbnionych z okre[lonych plików CSS), albo powierzchowne ponowne opracowanie wygldu i dziaBania danej aplikacji. Jednak z perspektywy dBugiego okresu czasu organizacja bdzie z tego powodu cierpiaBa, poniewa| coraz trudniejsze stanie si wprowadzanie zmian w aplikacji. Te zmiany stan si przypadkami szczególnymi i za ka|dym razem bd wymagaBy szczególnego podej[cia. Punkt krytyczny bdzie inny dla ka|dej organizacji. Wskazówki, reguBy oraz standardy sieciowe Aplikacje sieciowe opracowane przez organizacj mog osiga korzy[ci wynikajce ze stosowania standardów sieciowych, wytycznych programowania, punktów wzajem- nego oddziaBywania oraz wskazówek dotyczcych sposobu pisania oraz stylu kodu UI. ReguBy programowania Istniej standardy dotyczce jako[ci i spójno[ci programowania, podobne do czsto stosowanych przez programistów w kodzie wewntrznym aplikacji. Jednak w chwili obecnej zostaBy rozszerzone na kod interfejsów, co mo|e by zupeBn nowo[ci. Ka|dy kod UI powinien speBnia podstawowe, najlepsze praktyki dotyczce standardów sieciowych, czyli midzy innymi stosowa styl POSH, arkusze stylów CSS oraz dyskretny kod JavaScript (jak to opisano w rozdziaBach  odpowiednio  1., 2. i 3.). Kluczowe znaczenie ma tworzenie kodu niezale|nego od rodzaju przegldarek internetowych, zapewniajcego dostpno[ oraz umo|liwiajcego (w razie potrzeby) eleganck degradacj funkcji. Programy warstwy UI powinny odwoBywa si do klas CSS i atrybutów ID poprzez wycignicie ich z gBbi logiki aplikacji do innych, Batwo dostpnych miejsc kodu. W ten sposób przeprowadzanie modyfikacji informacji prezentacyjnych niesie ze sob minimalne ryzyko dla aplikacji. Wymienione klasy CSS i atrybuty ID mog by powierzchownymi wBa[ciwo[ciami klas obiektu, przechowywane w plikach konfiguracyjnych lub zmiennych o zasigu aplikacji, co umo|liwia ich Batw zmian w przyszBo[ci. 126 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C Nale|y za wszelk cen unika stosowania osadzonych w kodzie stylów bdz innych elementów prezentacyjnych. W kwestii aplikacji JavaScript warto wspóBpracowa z programistami interfejsu, tak aby maksymalnie wspóBdzieli skrypty i unika zwizanych z nimi konfliktów. Opracowa najprostszy z mo|liwych i semantyczny kod znaczników aplikacji. Utworzy proste, standardowe reguBy CSS formularzy, tak aby po dodaniu nowych formularzy zostaBy w nich zastosowane style CSS bez potrzeby wBo|enia wikszego wysiBku. Dziki stosowaniu powy|szych wskazówek oraz tworzeniu czystego, rozdzielonego kodu zgodnego ze standardami sieciowymi, programista zagwarantuje, |e aplikacja i oprogramowanie o znaczeniu krytycznym dla biznesu nie bdzie wymagaBo du|ych bdz ryzykownych modyfikacji podczas kolejnego przeprojektowania. Niestety, wymienione powy|ej wskazówki czsto odbiegaj od tego, co znajduje si w pakietach oprogramowania, narzdziach oraz kodzie generowanym przez IDE lub edytory typu WYSIWYG. Te narzdzia zwykle pozwalaj programistom jedynie na usunicie z kodu ustawieD prezentacyjnych, umieszczenie warstwy prezentacyjnej w klasach CSS, itp. Analiza alternatywnych ustawieD lub eksperymenty z funkcjami narzdzia pozwalajce na osignicie po|danych wyników mog wymaga wikszej ilo[ci czasu i wysiBku. Jednak bardzo czsto wystarczy powzi proste kroki pozwalajce na oddzielenie logiki aplikacji od kodu wewntrznego. Lepsze formularze tworzone za pomoc nowoczesnego kodu znaczników Wikszo[ aplikacji sieciowych zawiera w sobie pewne rodzaje formularzy. Aby zapewni tym formularzom elegancki ukBad, programi[ci najcz[ciej u|ywaj tabel HTML. Chocia| stosowanie tej techniki wBa[ciwie nie jest bBdne, to trzeba przypomnie, |e tabele zostaBy opracowane z my[l o umieszczaniu w nich danych tabelarycznych. Poniewa| formularz nie zawiera tego rodzaju danych, to nie ma najmniejszego powodu do stosowania tabeli. Ponadto tabele czsto zawieraj atrybuty prezentacyjne, takie jak bgcolor, align i width, oraz nie oferuj takich korzy[ci w kwestii dostpno[ci tre[ci, jakie mo|na uzyska stosujc podej[cie zgodne ze standardami sieciowymi. Formularze bardzo czsto u|ywaj tak|e kodu po stronie serwera, którego zadaniem jest umieszczenie pewnych warto[ci w formularzu (wicej na ten temat zostanie przedstawione w dalszej cz[ci rozdziaBu). PrzykBadowo: poni|ej przedstawiono kod wy[wietlajcy prosty formularz, który zostaB umieszczony w tabeli (zobacz rysunek 4.1): <p>Prosz wype ni poni szy formularz:</p> <p><b>Informacje o u ytkowniku</b></p> <form action="submit.php" method="post"> ROZDZIAA 4 Programowanie aplikacji sieciowych 127 RYSUNEK 4.1. Formularze s najcz[ciej umieszczane w tabelach HTML i u|ywaj znaczników prezentacyjnych <table width="300" border="0"> <tr> <td bgcolor="#cccccc" width="30%" align="right">Imi :</td> <td><input type="text" name="txtFName" size="30" /></td> </tr> <tr> <td bgcolor="#cccccc" align="right">Nazwisko:</td> <td><input type="text" name="txtLName" size="30" /></td> </tr> <tr> <td bgcolor="#cccccc" align="right">Tytu :</td> <td><input type="text" name="txtTitle" size="30" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Wy lij" /></td> </tr> </table> </form> Dla porównania, poni|ej znajduje si nowa wersja kodu powodujcego wy[wietlenie tego samego formularza (zobacz rysunek 4.2): <p>Prosz wype ni poni szy formularz:</p> <form action="submit.php" method="post"> <div id="formBlock"> <fieldset> <legend>Informacje o u ytkowniku</legend> <p> <label for="txtFName">Imi :</label> <input type="text" id="txtFName" tabindex="1" /> </p> <p> 128 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C RYSUNEK 4.2. Stosowanie nowoczesnego kodu znaczników powoduje, |e tworzenie prostych formularzy jest zdumiewajco Batwe <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="Wy lij" tabindex="4" /></p> </fieldset> </div> </form> Przedstawiony powy|ej kod formularza mo|e zosta poBczony z poni|szym arkuszem stylów CSS, który powinien by stosowany wzgldem ka|dego formularza na witrynie, co zapewni im spójny wygld. Wprawdzie takie rozwizanie wymaga u|ycia dodatkowego kodu, ale zastosowanie spójnego 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%; } ROZDZIAA 4 Programowanie aplikacji sieciowych 129 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 standardów sieciowych pokazuje zasadnicze usprawnienia w stosunku do formularzy utworzonych bez zastosowania podej[cia semantycznego: W kodzie nie ma ju| niepotrzebnej tabeli HTML sBu|cej do nadania wygldu formularzowi. Formularz zawiera elementy <label>, które przypisuj etykiety faktycznym kon- trolkom formularza  doskonaBe rozwizanie z punktu widzenia dostpno[ci, funkcja opracowana z my[l o u|ytkowniku i obsBugiwana przez wikszo[ przegldarek internetowych. Zastosowany zostaB atrybut tabindex uBatwiajcy ustalenie kolejno[ci przechodze- nia midzy polami oraz zwikszajcy dostpno[ strony za pomoc klawiatury. Formularz zostaB zgrupowany w znaczniku <fieldset> oraz oznaczony etykiet za pomoc znacznika <legend>, który grupuje i opisuje formularz w celu zwik- szenia jego dostpno[ci. 130 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C Poniewa| kod formularza jest czystszy i czytelniejszy, to po doBczeniu do aplikacji programi[ci zajmujcy si jej obsBuguj bd mogli Batwiej odczytywa i mody- fikowa ten formularz. Struktury dziaBajce po stronie serwera oraz narzdzia szablonów Je|eli chodzi o technologie skryptowe w Internecie, to dostpnych jest ich kilka, midzy innymi PHP (PHP: Hypertext Preprocessor), klasyczne ASP (ang. Active Server Pages), ColdFusion (opracowana przez firm Macromedia, która kilka lat temu zostaBa przejta przez Adobe). Wymienione platformy jzykowe sBu|ce do wykonywania zadaD po stronie serwera posiadaj modele, które umieszczaj w tych samych plikach kod interfejsu oraz kod wewntrzny aplikacji. W jednym wierszu kodu programi[ci natykaj si na kod wewntrzny umieszczony wewntrz zdefiniowanych ograniczników (na przykBad takich jak <%...%>), a nastpnie znajduj si standardowe znaczniki HTML. Ponadto kod dziaBajcy po stronie serwera bdzie u|ywaB poleceD print w celu wy- generowania kodu HTML, czsto wymieszanego wraz z danymi prezentacyjnymi. Dostpnych jest kilka platform oraz technik programowania  na przykBad ColdFusion Fusebox (http://fusebox.org) oraz system szablonów PHP Smarty (http://smarty.php.net)  które zapewniaj modularyzacj warstw oraz próbuj rozdzieli logik biznesow od kodu interfejsu. W tym celu tworz pliki szablonów zawierajce kod interfejsu, podczas gdy kod wewntrzny zostaje umieszczony w oddzielnych plikach. W rzeczywi- sto[ci osignite wyniki s z reguBy bardzo zró|nicowane, poniewa| kod dziaBajcy po stronie serwera nadal musi  wyprodukowa interfejs u|ytkownika. Pytanie, które mo|na zada pod koniec omawiania tego tematu, brzmi: jaka jest jako[ kodu znaczników tworzcego UI nawet po jego oddzieleniu od logiki biznesowej? Wszelkie dostpne na [wiecie warstwy oprogramowania aplikacji nie zdadz si na nic, je|eli podstawowy kod HTML bdzie BamaB opracowane najlepsze rozwizania lub zostanie umieszczony w plikach, których programi[ci tworzcy UI nie bd mogli kontrolowa lub przez które nie bd mogli przebrn. Proste kroki prowadzce do tworzenia lepszych skryptów dziaBajcych po stronie serwera W przypadku wszystkich platform lub systemów wykorzystujcych szablony mo|na powzi proste kroki, które mog ograniczy potencjalne szkody, nawet w przypadku podstawowego PHP lub podobnych [rodowiskach. W najbardziej podstawowym sensie wszelkie dane wyj[ciowe aplikacji lub generowany kod UI bd przedmiotem stosowania tych samych reguB, które odnosz si do kodu UI nieu|ywajcego bazy danych. Jedyna ró|nica polega na tym, |e tego rodzaju kod jest po prostu generowany, a nie tworzony rcznie przez programistów. ROZDZIAA 4 Programowanie aplikacji sieciowych 131 Warto zwróci uwag, |e wyzwania zwizane z uzyskaniem czystego rozdziaBu logiki biznesowej po stronie serwera od warstwy prezentacyjnej nie s jedynie domen jzyka PHP. Wikszo[ jzyków programowania dziaBajcych po stronie serwera wykorzystuje dobre praktyki programowania i dyscyplin. Cech charakterystyczn, szczególnie w przypadku PHP, klasycznego ASP i ColdFusion, jest bardzo czsto osadzanie logiki aplikacji w tych samych plikach, które zawieraj kod interfejsu, na przykBad: <?php // Wy wietlenie wyników. echo "<table border=\"1\" width=\"400\">"; while ($row = mysql_fetch_assoc($result)) { echo "<tr valign=\"top\">"; echo "<td bgcolor=\"#ffffcc\"><b>$row['username']</b></td>"; echo "<td>$row['firstname']</td>"; echo "<td>$row['lastname']</td>"; echo "<td><font color=\"grey\">$row['notes']</font></td>"; echo "</tr>"; } echo "</table>"; ?> Przedstawiony powy|ej kod wykonuje w PHP proste zadanie  kolejno przechodzi przez wiersze zbioru wynikowego zwróconego przez baz danych. Wikszo[ jzyków skryptowych, w celu wy[wietlenia danych wyj[ciowych pobranych z bazy danych stosuje podobne techniki do przedstawionej powy|ej, opierajc si na strukturze ptli. Oczywi[cie, przedstawiony przykBad jest maBy i bardzo prosty, ale mo|e on by umieszczony gBboko wewntrz innej struktury ptli bdz skomplikowanej struktury ptli. Zaprezentowany powy|ej kod (oraz inne, podobne kody dziaBajce po stronie serwera) ma kilka wad: Elementy prezentacyjne zostaBy osadzone w kodzie ptli. Zmiana projektu wizualnego bdzie wymagaBa zmian w aplikacji. W tym celu trzeba bdzie skorzysta z usBug programisty, zamiast po prostu wprowadzi zmiany w zewntrznym (z punktu widzenia aplikacji) pliku arkuszy stylów CSS. Za ka|dym razem, gdy zajdzie potrzeba zmiany wygldu tabeli, programista bdzie musiaB odszuka kod prezentacyjny i przeprowadzi modyfikacje bezpo[rednio w kodzie logiki aplikacji. W atrybutach prezentacyjnych zastosowano znaki sterujce, poniewa| atrybuty w jzyku HTML u|ywaj znaków cudzysBowów. Ten krok powoduje, |e kod staje si mniej czytelny i trudniejszy w zarzdzaniu. W ka|dej tabeli znajdujcej si na witrynie trzeba bdzie rcznie wprowadzi dane prezentacyjne. 132 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C Mimo |e powy|szy kod jest prosty, to demonstruje pomieszanie kodu wewntrznego z warstw prezentacyjn. Aatwo sobie wyobrazi, jak mógBby wyglda kod wraz z zagnie|d|onymi tabelami sBu|cymi do utworzenia krawdzi i menu oraz stosujcy inne atrybuty prezentacyjne dla ka|dej z kolumn& Kod staBby si zupeBnie nieczytelny. Eleganck alternatyw jest nastpujcy kod: <style type="text/css"> #results { border: 1px solid #000; width: 400px; } #results td { border: 1px inset #000; vertical-align: top; } td.username { background-color: #ffc; } td.notes { color: gray; } </style> <?php echo "<table id=\"results\">"; while ($row = mysql_fetch_assoc($result)) { echo "<tr>"; echo "<td class=\"username\">$row['username']</td>"; echo "<td>$row['firstname']</td>"; echo "<td>$row['lastname']</td>"; echo "<td class=\"notes\">$row['notes']</td>"; echo "</tr>"; } echo "</table>"; ?> W celu zachowania zwizBo[ci, na powy|szym fragmencie kodu przedstawiono tylko blok <style> zawierajcy definicj arkuszy stylów CSS. Mo|na jednak dostrzec, |e w celu zmiany wygldu tabeli, czcionek lub sposobu wyrównania tre[ci w komórce tabeli nie zachodzi potrzeba modyfikacji |adnego wiersza kodu PHP. PrzykBad jest do[ szcztkowy, ale nale|y pamita o jednym  im bardziej skomplikowana logika biznesowa, tym wiksze korzy[ci pByn z wyrzucenia informacji prezentacyjnych z logiki biznesowej. ROZDZIAA 4 Programowanie aplikacji sieciowych 133 UWAGA W przedstawionej powy|ej tabeli idealnym rozwizaniem byBoby równie| u|ycie wiersza <th> w celu utworzenia nagBówków opisujcych kolumny. W ten sposób mo|na zwik- szy zarówno poziom dostpno[ci tre[ci strony, jak i semantyczno[ kodu. Je|eli projekt graficzny nie zakBada wy[wietlania nagBówków tabeli to zawsze mo|na je ukry za pomoc arkusza stylów CSS. Pozostan one jednak dostpne dla urzdzeD wspomagajcych. Problem Zalet stosowania technologii, takich jak PHP lub nawet klasyczne ASP, jest fakt, |e programista sieciowy zachowuje peBn kontrol nad sposobem generowania kodu UI  zaleta, której nie nale|y lekcewa|y. Koszty zwizane z utrzymaniem i obsBug interfejsu u|ytkownika aplikacji mog sta si problemem w zespole, gdy zachodzi prawdopodobieDstwo, |e kod UI nie zostaB napisany przez programistów tego zespoBu. W takich przypadkach bardzo wa|na jest przede wszystkim komunikacja oraz ponowna ocena. Oczywi[cie, 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 wspóBczesnym [wiecie coraz wicej nowych produk- tów i technologii zyskuje szerok akceptacj, a wic proces oceny oraz programowania UI staB si znacznie trudniejszy ni| wcze[niej. W przypadku zBo|onych aplikacji bizneso- wych jzyki skryptowe  na przykBad te omówione dotd w ksi|ce  wypadBy z obiegu, poniewa| sama platforma nie narzuca architektury warstwom aplikacji. Ci|arem spoczywajcym na programistach jest stosowanie strukturalnych wzorców projektowych, które wymagaj u|ywania dobrych praktyk w zakresie programowania. Starsze narzdzia, takie jak PHP i ColdFusion, byBy czsto znacznie bardziej dostpne dla programistów lub projektantów UI ni| niektóre nowsze technologie. Zasadniczy problem pozostaB, a w przypadku wikszo[ci nowych [rodowisk programo- wania dziaBajcych po stronie serwera staB si nawet jeszcze powa|niejszy. Problem dotyczy zwBaszcza sytuacji, gdy osadzony skrypt dziaBajcy po stronie serwera, na przykBad PHP lub klasyczne ASP (obecnie ASP.NET) stosujcy podej[cie warstwowe, próbuje oddzieli logik biznesow od kodu wewntrznego. Problem mo|e równie| wystpi, gdy jzyk XSLT jest u|ywany do generowania kodu XHTML lub HTML z XML. Jaki jest wic ten zasadniczy problem? Kiedy in|ynierowie oprogramowania budowali coraz dojrzalsze i dziaBajce na warstwach [rodowiska interfejsów, takie jak Java, ASP.NET lub XML/XSLT, to programi[ci interfejsów nie poznali elementów odpo- wiedzialnych za interfejs w tych|e [rodowiskach programistycznych  i najcz[ciej nigdy nie poznaj. 134 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C Zwykle elementy odpowiedzialne za interfejs w tych platformach oprogramowania generuj dane wyj[ciowe, w postaci takiego samego, przestarzaBego i niespeBniajcego standardów kod interfejsu, który ju| wcze[niej byB stosowany. Prawdziwym wyzwaniem jest wic implementacja standardów sieciowych w interfejsie tego rodzaju aplikacji. Ostrze|enie przed kodem generowanym po stronie serwera Cz[ nowoczesnych [rodowisk aplikacji posiada funkcje zaprojektowane w celu pomocy podczas usuwania  zbdnego generowania kodu HTML lub innego kodu UI z aplikacji. Koncepcja polega na tym, aby kod HTML (lub XHTML) mógB zosta w Batwy sposób wyizolowany, a nastpnie dynamicznie wygenerowany za pomoc poleceD przekazanych do jzyka programowania pakietu narzdziowego. Zazwyczaj stosowane s wBa[ciwo[ci przypisywane zbiorom danych zwracanych przez zapytania do bazy danych lub inne podobne struktury kontrolujce dynamiczne tworzenie danych wyj[ciowych. Problem zwizany z tego rodzaju podej[ciem to fakt, |e zarówno projekt, jak i osta- tecznie generowany kod opieraj si w du|ym stopniu na decyzjach programistów tworzcych oprogramowanie u|ywane do abstrahowania i generowania kodu. Dlatego te| sukces jest uzale|niony równie| od wysiBków programisty majcych na celu poznanie funkcji UI dostpnych w u|ywanym oprogramowaniu. Ró|ne platformy oferuj zró|nicowane poziomy jako[ci. Programi[ci musz wic  pozna kod zródBowy i faktycznie obserwowa struktur kodu znaczników po jego wygenerowaniu, zamiast po prostu przyglda mu si, gdy| kod znaczników jest generowany dynamicznie. W wikszo[ci przypadków nic nie jest w stanie zastpi czynnika ludzkiego. Przejrzenie rzeczywistych dziaBaniach realizowanych przez kod i zorientowanie si w nich wymaga wykonania kilku dodatkowych kroków. Czasami trzeba bdzie wprowadzi kilka poprawek, a innym razem nie bdzie to konieczne. Skoro Czytelnik dotarB a| do tego miejsca ksi|ki, to powinno by dla niego oczywiste, |e utworzenie interfejsu zgod- nego ze standardami sieciowymi mo|e przynie[ wymierne korzy[ci. Platforma Microsoft ASP.NET Jedn z platform, która zostaBa szeroko zastosowana zwBaszcza w du|ych organizacjach, jest do[ krytycznie przyjta technologia firmy Microsoft o nazwie ASP.NET (nastpca  klasycznego ASP). Klasy podstawowe .NET, obiekty oraz API maj ogromne mo|liwo[ci. Technologia ASP.NET wymusza poprzez stosowany model u|ywanie warstw kodu, które oddzielaj do pewnego stopnia logik programu oraz baz danych od plików  interfejsu u|ytkownika posiadajcych rozszerzenie .aspx. Wymienione pliki zawieraj kod HTML oraz wBasne znaczniki ASP.NET, do których powrócimy w dalszej cz[ci rozdziaBu. Teoretycznie programi[ci UI ucz si wymienionych znaczników w celu uzyskania kontroli nad interfejsem i utworzenia punktów zaczepienia dla programistów kodu wewntrznego. To jest faktycznie mo|liwe, ale w rzeczywisto[ci rzadko osigane. ROZDZIAA 4 Programowanie aplikacji sieciowych 135 ZespóB programistów mógBby podj nie[miaB decyzj dotyczc edukacji zespoBu programistów UI, a nastpnie wspóBpracowa z nimi podczas nauki, natomiast zespóB UI mógBby wykaza motywacj do nauki. Takie rzeczy si zdarzaj. Zazwyczaj, aplikacje sieciowe ASP.NET s tworzone w [rodowisku IDE o nazwie Microsoft Visual Studio.NET. Wymienione [rodowisko IDE oferuje okno dziaBajce w trybie WYSIWYG uzupeBniajce widok kodu zródBowego oraz pozwalajce programi- stom na szybkie przeciganie obiektów na stron, ustawianie wBa[ciwo[ci, tak|e tych dotyczcych atrybutów prezentacyjnych bez konieczno[ci napisania ani jednego wiersza kodu. Te ustawienia generuj kod HTML. TO NIE TAK, {E CZEPIAMY SI PLATFORMY ASP.NET W rzeczywisto[ci jest wrcz na odwrót. Omówione w dalszej cz[ci rozdziaBu przykBady zaprezentuj pot|ne mo|liwo[ci i wszechstronno[ ASP.NET oraz podobnych platform w rkach osoby, która doskonale wie, w jaki sposób posBugiwa si opro- gramowaniem w celu uzyskania kodu zgodnego ze standardami sieciowymi. Do- stpnych jest wiele podobnych platform, a wikszo[ z nich pozwala na modyfikacj sposobu generowania danych wyj[ciowych. Wymaga to jednak wBo|enia wysiBku w celu odszukania i poznania funkcji, które pomagaj w wygenerowaniu wysokiej jako[ci kodu interfejsu. Midzy poszczególnymi platformami koncepcje s niemal takie same. Konieczne jest wBo|enie pewnego wysiBku i po[wicenie czasu na zrozumienie, jakie dane zostan wygenerowane, zamiast zwykBego stwierdzenia  to z grubsza wyglda dobrze . W ten sposób zyskuj wszyscy  u|ytkownicy witryny, firma i caBa reszta. Podczas pracy nad aplikacj programi[ci bywaj caBkiem mocno spici i czsto nie przejmuj si ostatnimi krokami. Oczywi[cie, istniej wyjtki, ale ta sekcja nie jest przeznaczona dla takich indywidualno[ci. Z punktu widzenia standardów sieciowych istnieje kilka kwestii, na które trzeba zwróci uwag, u|ywajc Visual Studio.NET, zwBaszcza w wersji wcze[niejszej ni| 2005, oraz kodu ASP.NET generowanego przez serwer: Wikszo[ przykBadów i materiaBów edukacyjnych ASP.NET zawiera nieprawi- dBowy kod. Visual Studio.NET 2003 oraz wcze[niejsze wersje maja zB sBaw z powodu prze- pisywania i zmiany formatowania kodu HTML strony (kiedy programista przejdzie do trybu graficznego), nawet je[li zostaBa utworzona i starannie dopracowana w innej aplikacji bdz zwykBym edytorze tekstowym przez programist UI. Formularze i kontrolki danych mog by  znacznikami ASP.NET, które bardzo cz- sto maj osadzone w nich atrybuty prezentacyjne. Wygenerowany kod zródBowy najcz[ciej nie jest zgodny z XHTML lub HTML, cho w wersji 2005 zanotowano 136 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C na tym polu ogromn popraw. Je|eli programista nie wBo|y dodatkowego wysiBku w nadzór generowanych danych wyj[ciowych, to wymienione atrybuty znaczników bd miaBy osadzon olbrzymi ilo[ danych prezentacyjnych. W wersjach 2003 i wcze[niejszych, kiedy programista u|ywaB wbudowanych narzdzi do tworzenia strony, tak utworzona strona HTML byBa wy[wietlana w  trybie dziwactw , poniewa| deklaracja DOCTYPE doBczona do dokumentu nie zawieraBa URI. ASP.NET zawiera funkcj  inteligentnego generowania , która oznacza, |e serwer podejmuje decyzje dotyczce rodzaju wysyBanej do przegldarki internetowej warstwy kodu UI na podstawie ustawieD dokonanych po stronie serwera. Serwer  zgaduje poziom obsBugi danej technologii przez przegldark internetow. Kod ASP.NET dziaBajcy po stronie serwera u|ywa du|ych ilo[ci atrybutów ID w kontrolkach osadzonych na stronie. Najcz[ciej, w zale|no[ci od kontekstu, wymienione atrybuty ID maj dynamicznie zmieniane nazwy na podstawie ich poBo|enia w dokumencie. Dlatego te| programi[ci CSS i JavaScript maj znacznie utrudnione zadanie w kwestii odwoBywania si do obiektów strony poprzez ich warto[ci ID. I nie ma tutaj znaczenia, |e taki sposób odwoBywania jest otwarty, rozpoznawany wszdzie i zgodny ze standardami sieciowymi. W niektórych przypadkach zastosowanie klasy CSS mo|e by odpowiednim rozwizaniem. Mo|na równie| spróbowa zastosowa wymagany atrybut ID elementowi nad- rzdnemu, a odwoBa si do |danego obiektu poprzez kontekst. Idealnym wyj[ciem jest, gdy projektanci interfejsu i programi[ci kodu wewntrznego wspóBpracuj ze sob podczas ustawiania atrybutów ID dla interfejsu u|ytkownika. Wówczas bdzie to najlepszy sposób wykorzystania mo|liwo[ci kodu zarówno interfejsu jak i wewntrznego  ale takie rozwizanie nie jest dostpne w ka|dym przypadku. Warto zwróci uwag na jeden interesujcy fakt. Mianowicie, wymienione problemy mo|na pokona wkBadajc dodatkowy wysiBek oraz po[wicajc wicej czasu i uwa- gi aspektom kodu interfejsu u|ytkownika. WSKAZÓWKA Jednym ze sposobów poradzenia sobie z funkcj  inteligentnego generowania jest ustawienie opcji konfiguracyjnej ClientTarget warto[ci Uplevel. W ten sposób ASP.NET przestanie zakBada, |e jedyna przegldarka oferujca zaawansowane funkcje to Microsoft Internet Explorer, i zacznie wysyBa zaawansowany kod do wszystkich. Jednak takie rozwi- zanie powoduje powstanie problemów z niektórymi funkcjami, zwBaszcza dotyczcymi ASP.NET 1.1 i JavaScript. Bd one obsBugiwane jedynie przez przegldark IE, poniewa| Microsoft w pewnych miejscach zastosowaB kod obsBugiwany tylko i wyBcznie przez t przegldark. Nale|y zachowa szczególn ostro|no[ i dokBadnie przetestowa aplikacj ASP.NET jeszcze przed jej wdro|eniem. Co wicej, wymienione funkcje zostaBy w pewnym stopniu zmienione w ASP.NET 2.0  kolejny powód do wykonywania wczesnych i czstych testów. ROZDZIAA 4 Programowanie aplikacji sieciowych 137 DU{E USPRAWNIENIA W ASP.NET 2.0 Zarówno w ASP.NET 2.0 jak i Visual Studio.NET 2005 firma Microsoft podjBa du|e wysiBki, aby generowany kod byB w jeszcze wikszym stopniu zgodny ze standardami siecio- wymi i zapewniaB wiksz dostpno[. Inne wprowadzone usprawnienie polega na tym, |e nowa wersja [rodowiska IDE po przej[ciu do trybu graficznego przepisuje (modyfikuje) znacznie mniejsz ilo[ kodu. Kod kontrolek i formularzy generowany automatycznie przez platformy Visual Studio.NET i ASP.NET jest praktycznie zgodny z jzykiem XHTML w wersji Transitional, co jest pochodn [cisBej natury specyfikacji. Jednak programista nadal musi wBo|y dodatkowy wysiBek, aby unikn generowania osadzonych atrybutów prezentacyjnych i zwikszy poziom dostpno[ci kodu. W pewnych sytuacjach lepiej u|y innych kontrolek, które pozwalaj na wiksz elastyczno[ w zakresie generowanego kodu. Wymienione opcje zostaBy znacznie usprawnione w ASP.NET 2.0. Dane wyj[ciowe ASP.NET Podobnie jak w przypadku innych jzyków, tak|e ASP.NET umo|liwia wy[wietlanie danych wyj[ciowych pochodzcych z bazy danych. Jednak jedynym sposobem zaimplementowanym przez Microsoft jest wykorzystanie znaczników dziaBajcych po stronie serwera. Wszystkie wymienione znaczniki maj atrybuty prezentacyjne, które w domy[le miaBy pomoc programi[cie w nadzorowaniu prezentacyjnych aspektów kodu XHTML danych wyj[ciowych. Poni|ej przedstawiono typowy przykBad kontrolek ASP.NET u|ywajcych funkcji o nazwie DataGrid do utworzenia danych wyj[ciowych w postaci tabeli zawierajcej elementy pochodzce z bazy danych. Kod zostaB osadzony w pliku .aspx otoczonym pozostaB cz[ci dokumentu (X)HTML (zobacz rysunek 4.3). <asp:DataGrid ID="catalog" runat="server" AutoGenerateColumns="false" CellPadding="2" Width="600" BorderColor="black"> <ItemStyle Font-Names="Arial" Font-Size="12px" ForeColor="#800000" VerticalAlign="top" /> <AlternatingItemStyle Font-Names="Arial" Font-Size="12px" ForeColor="#400000" BackColor="#cccccc" /> <HeaderStyle Font-Bold="true" Font-Names="Arial" Font-Size="15px" ForeColor="white" BackColor="black" VerticalAlign="top" /> <Columns> <asp:BoundColumn DataField="Name" HeaderText="Nazwa" /> <asp:BoundColumn DataField="abbr" HeaderText="Nazwa skrócona" /> <asp:BoundColumn DataField="typeof" HeaderText="Rodzaj" /> <asp:BoundColumn DataField="notes" HeaderText="Opis" /> </Columns> </asp:DataGrid> 138 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C RYSUNEK 4.3. Kontrolka DataGrid w ASP.NET wy[wietlajca dane Powy|szy kod powoduje zdefiniowanie tabeli danych wyj[ciowych oraz naprzemiennych kolorów jej wierszy. Atrybuty opisujce wygld i sposób dziaBania tabeli s po prostu niektórymi z dostpnych opcji. W rzeczywisto[ci ilo[ tych opcji jest ogromna. Dane zródBowe tabeli s pobierane poprzez inn warstw kodu. Wynika to z separacji danych od warstwy prezentacyjnej, która jest doskonaBym rozwizaniem cho w przypadku ASP.NET tylko teori. Poni|ej przedstawiono kod wygenerowany przez powy|szy fragment kodu: <table cellspacing="0" cellpadding="2" rules="all" border="1" id="catalog" style="border-color:Black;width:600px;border-collapse: collapse;"> <tr valign="top" style="color:White;background-color:Black; font-family:Arial;font-size:15px;font-weight:bold;"> <td>Nazwa</td><td>Nazwa skrócona</td><td>Rodzaj</td><td>Opis</td> </tr> <tr valign="top" style="color:Maroon;font-family:Arial; font-size:12px;"> <td>HyperText Markup Language</td><td>HTML</td><td>Kod znaczników</td> <td>U ywany do tworzenia dokumentów. Charakteryzuje si lu n sk adni .</td> </tr> <tr valign="top" style="color:#400000;backgroundcolor:# CCCCCC;font-family:Arial;font-size:12px;"> <td>eXtensible HyperText Markup Language</td><td>XHTML</td> <td>Kod znaczników</td><td>To HTML wraz ze sk adni XML, a tak e cis ymi regu ami stosowanymi w XML.</td> ROZDZIAA 4 Programowanie aplikacji sieciowych 139 </tr> <tr valign="top" style="color:Maroon;font-family:Arial; font-size:12px;"> <td>Kaskadowe arkusze stylów</td><td>CSS</td><td>Warstwa prezentacyjna</td> <td>Warstwa prezentacyjna witryny. Arkusze stylów s oddzielnymi dokumentami i zawieraj informacje definiuj ce wygl d i dzia anie 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>Obs uga zdarze , interakcja, zdarzenia</td> <td>Czasami nazywana warstw obs ugi zdarze , nadzoruje interakcj z u ytkownikiem, zdarzenia oraz sposób zachowania stron internetowych.</td> </tr> </table> Przedstawiona tabela jest do[ prosta, zawiera naprzemienne kolory wierszy, usta- wienia rodziny czcionek oraz elegancko stosuje arkusze stylów CSS zamiast znaczników <font>. Jednak powy|szy fragment kodu pokazuje przykBad rodzaju kodu, który jest powszechnie u|ywany do demonstracji kontrolki DataGrid. Arkusze stylów CSS s osadzone w kodzie i wielokrotnie powtarzane, co wynika ze stosowania przez ASP.NET atrybutów takich jak ForeColor, BackColor i innych. Ponadto pierwszy wiersz tabeli, który z zaBo|enia ma by nagBówkiem, to po prostu element <td> wraz z pogrubion czcionk. Zaprezentowany kod to powód do wstydu, poniewa| w rzeczywisto[ci ASP.NET posiada funkcje pozwalajce na przypisywanie klas CSS dla wikszo[ci warto[ci. Ponadto w ASP.NET 2.0 jest obsBugiwany znacznik <th> sBu|cy do generowania nagBówka w tabeli. Atrybut CssClass wystpuje w wikszo[ci znaczników, a tak|e istniej inne, które pozwalaj na przypisywanie klas znacznikom w wielu sytuacjach. Warto zwróci uwag na u|ycie w poni|szym kodzie atrybutu UseAccessibleHeader kontrolki DataGrid. yle si staBo, |e programi[ci musz stosowa wewntrz kodu wBasne sposoby na zwikszenie poziomu jego dostpno[ci, ale taka jest natura  bestii  i na szcz[cie odpowiednie funkcje s dostpne w ASP.NET 2.0. W zaprezentowanym poni|ej fragmencie kodu dokonano drobnych modyfikacji kodu ASP.NET, które pozwoliBy na zwikszenie jako[ci generowanych danych wyj[ciowych: <asp:DataGrid ID="catalog" runat="server" AutoGenerateColumns="false" CssClass="grid-class" UseAccessibleHeader="true"> <ItemStyle CssClass="item" /> <AlternatingItemStyle CssClass="item-alt" /> 140 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C <HeaderStyle CssClass="item-header" /> <Columns> <asp:BoundColumn DataField="Name" HeaderText="Nazwa" /> <asp:BoundColumn DataField="abbr" HeaderText="Nazwa skrócona" /> <asp:BoundColumn DataField="typeof" HeaderText="Rodzaj" /> <asp:BoundColumn DataField="notes" HeaderText="Opis" /> </Columns> </asp:DataGrid> Do powy|szego fragmentu kodu mo|na doBczy arkusz stylów CSS, na przykBad taki: .grid-class { border: 1px solid black; width: 600px; border-collapse:collapse; } .grid-class td { vertical-align: top; padding: 2px; border: 1px solid black; } .item { font: 12px arial, sans-serif; color: #800; } th { font: bold 15px arial, sans-serif; background-color: black; color: white; vertical-align: top; text-align: left; padding: 2px; } .item-alt { font: normal 12px arial, sans-serif; background-color: #ccc; } W takim przypadku wygenerowana tabela HTML bdzie sama jak poprzednia (zobacz rysunek 4.4). Jednak u|yty do jej utworzenia kod jest lepszy i bardziej zgodny ze standardami sieciowymi. Dane wyj[ciowe XHTML zostaBy przedstawione poni|ej: <table class="grid-class" cellspacing="0" rules="all" border="1" id="catalog" style="border-collapse:collapse;"> <tr class="item-header"> <th scope="col">Nazwa</th><th scope="col">Nazwa skrócona</th> <th scope="col">Rodzaj</th><th scope="col">Opis</th> ROZDZIAA 4 Programowanie aplikacji sieciowych 141 RYSUNEK 4.4. Ta sama kontrolka DataGrid w ASP.NET, ale po zastosowaniu usprawnieD zwikszajcych jej zgodno[ ze standardami sieciowymi </tr> <tr class="item"> <td>HyperText Markup Language</td><td>HTML</td><td> Kod znaczników</td> <td>U ywany do tworzenia dokumentów. Charakteryzuje si lu n sk adni .</td> </tr> <tr class="item-alt"> <td>eXtensible HyperText Markup Language</td><td>XHTML</td> <td>Kod znaczników</td><td>To HTML wraz ze sk adni XML, a tak e cis ymi regu ami stosowanymi w XML.</td> </tr> <tr class="item"> <td>Kaskadowe arkusze stylów</td><td>CSS</td><td>Warstwa prezentacyjna</td> <td>Warstwa prezentacyjna witryny. Arkusze stylów s oddzielnymi dokumentami i zawieraj informacje definiuj ce wygl d i dzia anie witryny internetowej.</td> </tr> <tr class="item-alt"> <td>JavaScript</td><td>JS</td><td>Obs uga zdarze , interakcja, zdarzenia</td> <td>Czasami nazywana warstw obs ugi zdarze , nadzoruje interakcj z u ytkownikiem, zdarzenia oraz sposób zachowania stron internetowych.</td> </tr> </table> 142 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C Warto zwróci uwag, |e nowy kod zawiera znacznik <th> (kompletny wraz z atrybutem scope) klasy CSS dla wikszo[ci elementów, Bcznie z obsBug naprzemiennego koloru wierszy, oraz nie ma (w wikszo[ci) osadzonych atrybutów prezentacyjnych. Mimo |e powy|szy kod na pewno nie jest doskonaBy, to jednak stanowi du|e usprawnienie, a poprawienie danych wyj[ciowych wymagaBo drobnych korekt technicznych. Ten rodzaj modyfikacji wymaga pracy ze strony programistów interfejsu, którzy bd znali techniki pracy z kodem wewntrznym. Albo programistów kodu wewntrznego, którzy wiedz, jak programowa interfejs. Znaczniki ASP.NET generujce dane wyj[ciowe na podstawie danych pochodzcych z bazy danych posiadaj znacznie wicej opcji. W niektórych sytuacjach zastosowanie innego znacznika mo|e by znacznie lepszym rozwizaniem, poniewa| zapewni on wikszy poziom kontroli nad generowanym kodem UI. PrzykBadowo: kontrolka Repeater stanowi doskonaBy wybór podczas tworzenia prostych danych wyj[ciowych, gdy| definiuje ona ptl danych wyj[ciowych i u|ywa maBych szablonów kodu, w których programista mo|e okre[li to, co powinno by wy[wietlone: <asp:Repeater id="catalog" runat="server"> <HeaderTemplate> <table class="grid-class"> <tr> <th>Nazwa</th> <th>Nazwa skrócona</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> ROZDZIAA 4 Programowanie aplikacji sieciowych 143 </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> Przedstawiony powy|ej kod generuje tabel HTML, która jest poBczona z przedsta- wionym wcze[niej arkuszem stylów CSS. PowstaBy kod jest czysty i pozbawiony wszelkich niepotrzebnych atrybutów prezentacyjnych. Chocia| kontrolka Repeater wymaga u|ycia nieco wikszej ilo[ci kodu, to jednak daje programi[cie wiksz kontrol nad sposobem generowania danych wyj[ciowych (zobacz rysunek 4.5): <table class="grid-class"> <tr> <th>Nazwa</th> <th>Nazwa skrócona</th> <th>Rodzaj</th> <th>Opis</th> </tr> <tr class="item"> <td>HyperText Markup Language</td> <td>HTML</td> <td>Kod znaczników</td> <td>U ywany do tworzenia dokumentów. Charakteryzuje si lu n sk adni .</td> </tr> <tr class="item-alt"> <td>eXtensible HyperText Markup Language </td> <td>XHTML</td> <td>Kod znaczników</td> <td>To HTML wraz ze sk adni XML, a tak e cis ymi regu ami stosowanymi w XML.</td> </tr> <tr class="item"> <td>Kaskadowe arkusze stylów</td> <td>CSS</td> <td>Warstwa prezentacyjna</td> <td>Warstwa prezentacyjna witryny. Arkusze stylów s oddzielnymi dokumentami i zawieraj informacje definiuj ce wygl d i dzia anie witryny internetowej.</td> </tr> <tr class="item-alt"> <td>JavaScript</td> <td>JS</td> <td>Obs uga zdarze , interakcja, zdarzenia</td> 144 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C RYSUNEK 4.5. U|ycie kontrolki Repeater ASP.NET w celu wygenerowania tej samej tabeli, ale z czystszym kodem, przy zachowaniu takiego samego wygldu <td>Czasami nazywana warstw obs ugi zdarze , nadzoruje interakcj z u ytkownikiem, zdarzenia oraz sposób zachowania stron internetowych.</td> </tr> </table> To jest przykBad czystego kodu HTML wygenerowanego przez logik ASP.NET dziaBajc po stronie serwera. Czytelnik przekonaB si wic, |e rozsdne u|ywanie funkcji aplikacji mo|e zapewni spory poziom kontroli nad sposobem generowania danych wyj[ciowych. Przygldajc si kodowi bazujcemu na znacznikach staje si oczywiste, |e firma Microsoft przeniosBa logik aplikacji do innych plików, a u|ywanie plików interfejsu .aspx z kodem znaczników nie jest zB koncepcj. Niektóre zespoBy tworzce interfejsy bd mogBy operowa i modyfikowa kod znajdujcy si w plikach .aspx bez konieczno[ci poznawania tajników jzyków C# lub Visual Basic.NET. Kontrolki HTML ASP.NET, kontrolki Web Control i inne Istniej tak|e inne obszary, na których platforma ASP.NET powszechnie generuje kod dla programistów. Zamiast u|ywa prostych znaczników HTML, platforma ASP.NET zawiera funkcje pozwalajce na wygenerowanie znaczników HTML. Ponadto zapewnia równie| dostp do dokumentu po stronie serwera na sposób podobny do stosowanego w modelu DOM, cho z u|yciem wBasnej skBadni. Warto przeanalizowa przedstawiony poni|ej kod oraz rysunek 4.6: <script runat="server"> void Clicker(Object sender, EventArgs e) { Response.Redirect("http://www.cherny.com"); ROZDZIAA 4 Programowanie aplikacji sieciowych 145 RYSUNEK 4.6. Ró|ne kontrolki serwerowe platformy ASP.NET maj mo|liwo[ dynamicznego generowania danych wyj[ciowych } 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 tworz ce cze HTML. myOtherLink.InnerText = "NavigationArts"; myOtherLink.HRef = "http://www.navigationarts.com"; myOtherLink.Attributes.Add("class","htmlControl"); // Kontrolka tworz ca etykiet . myLabel.Text = "Hej, spójrz! Ten element jest bez znaczenia!"; // Kontrolka tworz ca dos owny tekst. myLiteral.Text = " (Nieprawid owe cze!)"; // Kontrolka tworz ca pierwszy akapit HTML. myPara.InnerHtml = " cze Pro Web Book " + " <strong>rz dzi!</strong>"; // Kontrolka tworz ca drugi akapit HTML. myPara2.Visible = false; } 146 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C } </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 b dzie ukryty.</p> </form> Powy|szy kod zawiera wiele elementów, na które warto zwróci uwag, prezentuj- cych ró|ne punkty widzenia: CaBo[ kodu ASP.NET musi by umieszczona w ramach elementu <form> wraz z atrybutem runat="server", co umo|liwi u|ycie kontrolki <asp:LinkButton />. O ile bdzie taka mo|liwo[, to nale|y unika stosowania wymienionej kontrolki. Wyja[nienie zostanie przedstawione wkrótce podczas omawiania wynikowego kodu XHTML. Warto zwróci uwag, |e w nieuporzdkowanej li[cie formularza pierwszym znacznikiem serwerowym ASP.NET jest kontrolka <asp:HyperLink />. To kontrolka serwerowa Web Control, która generuje Bcze HTML oraz zapewnia programowy dostp do wszystkich atrybutów i tekstu znacznika, jak to zaprezentowano w bloku <script> znajdujcym si nad odwoBaniem do myLink. Warto tak|e zauwa|y, |e drugie Bcze nie posiada atrybutu href i równie| jest programowo kontrolowane z poziomu znajdujcego si wcze[niej bloku <script>. Ta kontrolka HTML dziaBa po stronie serwera (wskazuje to atrybut runat="server"), który zapewnia programowy dostp do atrybutów elementu. W ten sposób programista ma wiksz kontrol nad danymi wyj[ciowymi, ale mniejsz nad funkcjami serwerowymi. Dodanie atrybutu ID do kodu runat="server" powoduje, podobnie jak w przypadku dowolnego znacznika HTML, uzyskanie dostpu do jego znaczników. Takie rozwizanie daje olbrzymie mo|liwo[ci, poniewa| programista mo|e kontrolowa wy[wietlanie, tre[ oraz atrybuty za pomoc jedynie kilku wierszy kodu umieszczonego w warstwie programowej aplikacji. Obie kontrolki tworzenia Bczy wirtualnie wykonuj te same zadania, natomiast kontrolki Web Control dostarczaj dodatkowych funkcji w stosunku do zwykBych kontrolek HTML. Ponadto kontrolki rodzaju Web Control s w mniejszym stopniu przewidywalne i zawieraj atrybuty prezentacyjne, które programi[ci czsto wykorzystuj w celu ROZDZIAA 4 Programowanie aplikacji sieciowych 147 szybkiego wprowadzenia drobnych zmian. Podczas u|ywania kontrolek Web Control, programi[ci powinni ograniczy si do stosowania atrybutów CssClass i unika u|ywania atrybutów prezentacyjnych. Aby osign wikszy poziom przewidywalno[ci wygenerowanych danych wyj[ciowych, warto stosowa kontrolki HTML, natomiast kontrolki Web Control tylko w okre[lonych przypadkach, gdy jest to niezbdne. Warto szczególnie dokBadnie przyjrze si koDcówce dokumentu: <p><asp:Label id="myLabel" runat="server" /></p> <p id="myPara" runat="server" /> <p id="myPara2" runat="server">Ten element b dzie ukryty.</p> Wszystkie kontrolki s wykonywane po stronie serwera. Blok <script> jest kodem dziaBajcym po stronie serwera, który nie jest wysyBany do przegldarki internetowej u|ytkownika i najcz[ciej znajduje si w oddzielnym pliku. Zadaniem tego kodu jest programowe wygenerowanie przedstawionego poni|ej kodu XHTML (oprócz innego kodu .NET, który w tej chwili nie ma znaczenia podczas tych rozwa|aD): <script type="text/javascript"> <!-- var theForm = document.forms['form1']; if (!theForm) { theForm = document.form1; } function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } // --> </script> <ul> <li><a id="myLink" class="webControl" href="http://www.prowebbook. com">Pro Web Book Dot Com</a></li> <li><a href="http://www.navigationarts.com" id="myOtherLink" class="htmlControl">NavigationArts</a></li> <li><a href="javascript:__doPostBack( ctl00 ,  )">Kliknij cze</a></li> </ul> <p><span id="myLabel">Hej spójrz! Ten element jest bez znaczenia! </span></p> <p id="myPara"> cze Pro Web Book <strong>rz dzi!</strong></p> 148 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C LEKTURA OBOWIZKOWA PODCZAS STOSOWANIA STANDARDÓW SIECIOWYCH W ASP.NET Podczas tworzenia kodu ASP.NET bardzo Batwo zbli|y si do poziomu profesjonalnych standardów sieciowych. To jest po prostu wiczenie w podejmowaniu uzasadnionych i rozsdnych decyzji dotyczcych stylu programowania. Na witrynie MSDN (ang. Microsoft Developers Network) firma Microsoft zamie[ciBa artykuB, którego celem jest pomoc programistom w u|ywaniu standardów sieciowych oraz funkcji zwizanych z dostpno[ci podczas pracy w platformie ASP.NET. Ten artykuB powinien sta si lektur obowizkow dla wszystkich programistów ASP.NET. Niestety, jest on gBboko  zaszyty na witrynie, a omawiane techniki nie zostaBy przedstawione w wikszo[ci przykBadów ASP.NET umieszczonych w Internecie. Wymieniony artykuB znajduje si na stronie: http://msdn2.microsoft.com/en-us/library/aa479043.aspx Wreszcie, firma Microsoft wypu[ciBa na rynek kod typu open source opracowany na bazie mo|liwo[ci rozbudowy ASP.NET, który pozwala programistom na zmian danych wyj[ciowych XHTML z poziomu wielu znaczników ASP.NET wbudowanych w platform ASP.NET. Wymieniony kod nosi nazw  ASP.NET 2.0 CSS Friendly Control Adapters i jest dostpny na stronie: http://www.asp.net/cssadapters/ Przy odrobinie dodatkowego wysiBku, wygenerowany przez ASP.NET kod dziaBajcy po stronie serwera mo|e bardzo zbli|y si do poprawnego (zgodnego ze standardami) kodu zapewniajce du|y poziom dostpno[ci. Dodatkowe spostrze|enia dotyczce wygenerowanych danych wyj[ciowych s na- stpujce: Warto zwróci uwag, |e w ASP.NET istnieje kilka sposobów wygenerowania prostego Bcza. Pierwsze dwa zostaBy przedstawione wcze[niej  opieraj si o kontrolki serwerowe i HTML. Kolejny to wykorzystanie jeszcze innej kontrolki o nazwie <asp:LinkButton />. Kod generujcy trzecie Bcze wyraznie pokazuje, dlaczego w wikszo[ci przypadków najlepszym rozwizaniem jest uniknicie stosowania kontrolki <asp:LinkButton />. Ta kontrolka tworzy atrybut href za pomoc Bcza JavaScript, co Bamie wszystkie zasady opisane w niniejszej ksi|ce. Zastosowana w pierwszym akapicie kontrolka <asp:Label /> zupeBnie bez powodu generuje znacznik <span>. Kontrolka Label jest uznawana za po|yteczn, poniewa| programista mo|e przypisa jej pewne aspekty prezentacyjne. Zamiast niej mo|liwe jest jednak u|ycie kontrolki <asp:Literal />, która po prostu generuje uroczy ko- munikat:  (NieprawidBowe Bcze) . Bardzo czsto mo|na spotka si ze stwierdzeniem, |e u|ywanie tej kontrolki ma jedn du| wad, któr jest brak aspektów prezenta- cyjnych. To jest jednak powód, dla którego jej u|ywanie jest doskonaBym pomysBem. ROZDZIAA 4 Programowanie aplikacji sieciowych 149 Za pomoc atrybutu ID (tutaj o warto[ci myPara) programista mo|e równie| kontrolowa tekst znaczników kontrolek HTML akapitu, jak to zademonstrowano na powy|szym fragmencie kodu. Warto zwróci uwag, |e programista mo|e tak|e wy[wietla lub ukrywa kontrolki HTML. Ostatni akapit w kodzie dziaBajcym po stronie serwera zostaB ustawiony jako visible = false, a wic nie zostaB wysBany do przegldarki internetowej u|ytkownika. Kontrolki HTML oferuj kodowi ASP.NET du|e mo|liwo[ci, ale z ró|nych powodów samouczki dotyczce ASP.NET pomniejszaj ich wykorzystanie. Jednak z perspektywy standardów sieciowych s to narzdzia o pot|nych mo|liwo[ciach i czsto bardziej po|dane ni| kontrolki serwerowe Web Control. WspóBpraca po stronie serwera z projektantami UI Podczas opracowywania aplikacji dziaBajcych po stronie serwera, programi[ci oraz projektanci powinni wspóBpracowa ze sob tak blisko, na ile jest to mo|liwe, w celu zagwarantowania, |e kod znaczników UI bdzie stosowaB najlepsze rozwizania zgodne ze standardami sieciowymi. Bardzo czsto oznacza to konieczno[ wyboru wBa[ciwego narzdzia po stronie serwera. Utrzymywanie UI z dala od aplikacji oraz u|ywanie klas powoduje, |e kod ma czystsz posta. W ten sposób kod zwizany z projektem wizualnym pozostaje w rkach zespoBu UI oraz ogranicza si ryzyko, oraz potencjaln potrzeb anga|owania programisty w celu wprowadzenia zmian w interfejsie u|ytkownika. Kiedy aplikacja staje si bardzo skomplikowana lub bazuje na podstawie starego kodu, konieczne mog sta si kompromisy. Jednak ostateczne cele, standardy sieciowe i wskazówki powinny zakBada osignicie spójno[ci i utrzymywanie jej w dBugim okresie czasu. Zarzdzanie tre[ci Kiedy witryna internetowa musi zosta uaktualniona przez u|ytkownika pozbawionego wiedzy technicznej, gdy rozrasta i staje si wiksza lub zawiera tre[, która musi by ponownie u|yta, skatalogowana, wspóBdzielona i zapewniajca mo|liwo[ jej prze- szukiwania, to najcz[ciej stosowanym rozwizaniem jest oprogramowanie do zarzdza- nia tre[ci. Wymienione oprogramowanie zarzdzania tre[ci jest jedn z powszechnie dostpnych aplikacji sieciowych, na któr natknie si ka|dy zespóB programistów sieciowych. Wynika to z faktu, |e najczstszym |daniem ze strony u|ytkowników biznesowych jest coraz wiksza mo|liwo[ kontrolowania witryny. Niestety, aplikacje sBu|ce do zarzdzania tre[ci bardzo czsto generuj wBasny jzyk znaczników lub wymagaj wBo|enia du|ych nakBadów pracy i wysiBku, aby wej[ do [wiata standardów sieciowych. Na szcz[cie najcz[ciej nie jest to a| takie trudne, jak si pocztkowo wydaje, przynajmniej w przypadku porzdnych aplikacji zarzdzania 150 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C tre[ci. Szczerze mówic, najtrudniejszym etapem jest czsto okre[lenie, gdzie nale|y szuka odpowiednich fragmentów kodu, które faktycznie odpowiadaj za genero- wanie danych wyj[ciowych. Dostpne s niezliczone systemy zarzdzania tre[ci (CMS) o zró|nicowanym stopniu elastyczno[ci i zgodno[ci ze standardami sieciowymi. Z punktu widzenia standardów sieciowych, elastyczno[ zale|y od niuansów zwizanych z mo|liwo[ciami oprogramo- wania, jak równie| implementacj, za któr odpowiada ju| zespóB programistów. Podstawy systemu zarzdzania tre[ci Lepsze rozwizania z zakresu systemów CMS pozwalaj zespoBowi na wygenerowa- nie kodu UI w ustalony przez niego sposób  czyli wprost przeciwnie do rozwizaD, w których to narzdzie decyduje o postaci kodu. Istnieje kilka sposobów, na które standardy sieciowe mog wspóBpracowa z rozwizaniami z dziedziny systemów za- rzdzania tre[ci: Abstrahowanie warstwy prezentacyjnej tre[ci od miejsca przechowywania tej tre[ci. U|ycie mniejszej liczby szablonów CMS, ale efektywniejsze wykorzystanie arkuszy stylów CSS. Ponowne u|ywanie tre[ci poniewa| kod znaczników nie bdzie powizany z warstw prezentacyjn. Uproszczenie zadaD autorów tworzcych tre[ poniewa| bd musieli obsBugiwa mniejsz ilo[ aspektów prezentacyjnych. Znaczne zwikszenie mo|liwo[ci przeprojektowania witryny przy jednoczesnym zmniejszeniu wysiBku ze strony zespoBu obsBugujcego system CMS. System zarzdzania tre[ci i czysta tre[ Prosty proces przechowywania tre[ci w centralnym repozytorium wraz z czystym kodem znaczników jest sam w sobie dobrym sposobem na ponowne u|ywanie tre[ci, poniewa| kod znaczników bdzie prosty. Ponadto na ró|nych fragmentach stron, w zale|no[ci od kontekstu, bdzie mo|na stosowa style za pomoc arkuszy stylów CSS. Oprócz tego, poni|ej wymieniono niektóre z najlepszych praktyk oraz rozwizaD stosowanych w profesjonalnych systemach zarzdzania tre[ci i projektowania z u|yciem arkuszy stylów CSS: Projektowanie z u|yciem arkuszy stylów CSS na podstawie kontekstu. PrzykBadowo, opis artykuBu mo|e by wygenerowany jako nagBówek <h1> stosujcy na stronie artykuBu du| czcionk w kolorze brunatnym, ale jednocze[nie maB czcionk w kolorze czarnym na stronie archiwum. Arkusze stylów CSS pozwalaj na kontrol tego rodzaju ró|nic. ROZDZIAA 4 Programowanie aplikacji sieciowych 151 Tre[ powinna by przechowywana w najprostszej z mo|liwych postaci. Nale|y stosowa minimaln, wystarczajc liczb klas CSS oraz minimaln (lub zerow) liczb atrybutów prezentacyjnych elementów. Warto stosowa semantyczny kod znaczników, oznaczajc tre[ w peBni zrozu- miaBym, czytelnym i przeno[nym formatem, którego mo|na ponownie u|ywa i nadawa mu styl. Nale|y sobie przypomnie, |e do[wiadczeni programi[ci CSS mog zastosowa ró|ne style na podstawie kontekstu w szablonie witryny za pomoc atrybutu ID lub klasy. Autorzy tre[ci powinni stosowa jedynie podstawowe znaczniki HTML struktury strony. Idealnym rozwizaniem bdzie, gdy autorzy naucz si kilku klas CSS. Powinni równie| wiedzie, |e nagBówek pierwszego stopnia w obszarze tre[ci to <h1>. Ponadto powinni te| wiedzie, |e utworzenie zwykBej listy wypunktowanej skutkuje wy[wietlaniem maBych ikon wypunktowania. Musz te| wiedzie, |e na przykBad nagBówek w obszarze tre[ci po prawej stronie bdzie wy[wietlany w kolorze granatowym. Warstw prezentacyjn mo|na naBo|y za pomoc arkuszy stylów CSS i nie trzeba bdzie jej przechowywa w repozytorium tre[ci systemu CMS. Ogólnie rzecz biorc, autorzy tre[ci mog skoncentrowa si na tre[ci, a nie jej wizualnych aspektach. Kontekst na danej stronie jest u|ytecznym narzdziem, ale kontekst na witrynie mo|e by równie wa|ny. W chwili obecnej czsto stosowanym rozwizaniem jest podziaB witryny na kilka sekcji, które stosuj odmienne schematy kolorów wyBczone z podstawowej marki. Przechowywana w bazie danych tre[ sama w sobie nie jest w stanie tego odró|ni, ale powinna by przeno[na midzy sekcjami witryny. Style CSS mo|na definiowa w stosunku do znacznika <body> lub zbioru atrybutów ID sekcji witryny, a wic w ten sposób stosowa ró|ne schematy kolorów na wszystkich semantycznych znacznikach dla danego fragmentu witryny. Dane wyj[ciowe systemu zarzdzania tre[ci i moduBy Narzdzia zarzdzania tre[ci mog stanowi wyzwanie, gdy trzeba bdzie okre[li, w jaki sposób kontrolowa dane wyj[ciowe oraz otrzyma kod zgodny ze standardami sieciowymi. Bardzo czsto najtrudniejsz cz[ci jest okre[lenie punktu rozpoczcia pracy oraz sposobu kontrolowania danych wyj[ciowych. Zazwyczaj system CMS generuje stron sformatowan za pomoc kodu pochodzcego z kilku ró|nych obszarów: Wbudowane moduBy generujce dane wyj[ciowe na podstawie wBasnych funkcji lub funkcji dostpnych w systemie CMS. Szablony stron u|ywane do wy[wietlania ró|nego rodzaju stron. Bazujce na przegldarce internetowej edytory podobne do procesorów tekstu (u|ywane przez autorów tre[ci). 152 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C W kwestii wygenerowania poprawnego kodu zgodnego ze standardami sieciowymi, najwikszymi wyzwaniami zwizanymi z aplikacj CMS s najcz[ciej jej wbudowane funkcje, nad którymi zespóB programistów ma maB kontrol lub w ogóle jej nie ma. Na te funkcje nale|y szczególnie uwa|a. Jednak niektórzy mog uwa|a je za doskonaBe funkcje narzdzia, gdy| rzekomo po jego instalacji witryna internetowa bdzie gotowa  od rki . Ryzykowne elementy obejmuj midzy innymi: ModuBy administracyjne osadzone na stronach dostpnych publicznie. Kod sBu|cy do [ledzenia ruchu oraz wbudowane skrypty. ModuBy reklamowe. Wszystkie elementy generujce menu. Kontrolki specjalne, które mog generowa listy tre[ci (na przykBad nowo[ci bdz archiwum produktów). Wyniki wyszukiwania WSKAZÓWKA Wszystko okre[lane mianem  dostpne od rki z natury jest podejrzane, o ile narzdzie nie zostaBo wcze[niej przystosowane do speBniania nowoczesnych standardów. Narzdzia o pot|nych mo|liwo[ciach pozwalaj zespoBowi programistów na dostp do kodu odpowiedzialnego za generowanie danych wyj[ciowych lub wstawianie wBasnych moduBów, które mog zastpi bdz rozszerzy wbudowane funkcje. W idealnej sytuacji narzdzie bdzie zawieraBo wbudowane szablony lub fragmenty kodu, które mo|na uaktualni. Szczególnie nale|y uwa|a na narzdzia pozwalajce na dostosowanie wygldu i sposobu dziaBania za pomoc czego[ na wzór panelu sterowania, o ile faktycznie to narzdzie nie udostpni kodu, który bdzie mo|na przejrze i zmodyfikowa. Szablony systemu zarzdzania tre[ci Wikszo[ narzdzi CMS wi|e strony z szablonami, z których ka|dy jest ukBadem graficznym mo|liwym do ponownego u|ycia. Autorzy po prostu wybieraj wBa[ciwy szablon dla danego rodzaju lub sekcji strony. Im wiksza liczba szablonów, tym wicej elementów autor musi [ledzi  a obsBuga witryny staje si coraz bardziej trudniejsza. Rozsdne u|ycie arkuszy stylów CSS i standardów sieciowych mo|e w rzeczywisto[ci doprowadzi do zmniejszenia liczby szablonów. Szablony zazwyczaj opieraj si na siatce strony, co zwykle oznacza stosowanie ró|nego kodu znaczników. W [wiecie standardów sieciowych oraz arkuszy stylów CSS nieko- niecznie musi tak by. ROZDZIAA 4 Programowanie aplikacji sieciowych 153 PrzykBadowo, warto przeanalizowa przedstawiony poni|ej ukBad strony u|ywajcej trzech kolumn (zobacz rysunek 4.7): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Pierwszy szablon</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body class="typeA"> <div id="wrapper"> <ul id="nav"> <li><a href="...">Nawigacja 1</a></li> <li><a href="...">Nawigacja 2</a></li> <li><a href="...">Nawigacja 3</a></li> <li><a href="...">Nawigacja 4</a></li> </ul> <div id="content"> <h1>Obszar tre ci</h1> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam sit amet nulla. Ut ut urna ac lectus.</p> <p>Ut ut urna ac lectus tincidunt sollicitudin. Sed rutrum interdum lorem. Integer aliquam pellentesque neque.</p> <p>Curabitur a neque a libero gravida dignissim. Sed eget tellus.</p> </div> <div id="related"> <h2> cza do innych stron</h2> <p> cza do innych stron i tre ci</p> <ul> <li><a href="">Sekcja 1</a></li> <li><a href="">Sekcja 1</a></li> </ul> </div> </div> </body> </html> Przedstawiony na powy|szym fragmencie kodu dokument ma trzy elementy <div> o nastpujcych warto[ciach atrybutów ID: nav, content i related (czyli z punktu widzenia selektorów CSS bd to #nav, #content i #related). Wymienionym elementom mo|na bardzo Batwo nada styl za pomoc arkuszy stylów CSS. Tre[ znajdujca si 154 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C RYSUNEK 4.7. Szablon systemu CMS tworzcy ukBad, który opiera si na trzech kolumnach w elementach <div> o nazwach #content i #related mo|e by tworzona przez autorów tre[ci. Na powy|szym fragmencie kodu s one przedstawiane przez sekcje odpowiednio  Lorem ipsum oraz  Acza do innych stron . Co wicej, Bcza znajdujce si w trzeciej kolumnie mog by nawet generowane dynamicznie po stronie serwera na podstawie pokrewieDstwa z dan tre[ci. Dlatego te| mog zdarzy si sytuacje, gdy trzecia kolumna nie bdzie potrzebna. Warto zwróci uwag na klas elementu <body>. Autor tre[ci mo|e wykorzysta j w celu zaznaczenia szablonu i umieszczenia w kolejce odpowiedniej liczby kolumn. Logika programu mo|e z kolei u|ywa klasy elementu <body> dokumentu, aby utworzy struktur strony skBadajcej si na przykBad z nawigacji i pojedynczej kolumny z tre[ci (zobacz rysunek 4.8). W takim przypadku w narzdziu CMS nie trzeba bdzie tworzy wikszej liczby szablonów, a autorzy tre[ci nie bd musieli wybiera ró|nych szablonów. RYSUNEK 4.8. Po wprowadzeniu drobnych zmian w arkuszu stylów CSS, ten sam szablon tworzy stron wy[wietlajc tylko dwie kolumny ROZDZIAA 4 Programowanie aplikacji sieciowych 155 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Drugi szablon</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body class="typeB"> <div id="wrapper"> <ul id="nav"> <li><a href="...">Nawigacja 1</a></li> <li><a href="...">Nawigacja 2</a></li> <li><a href="...">Nawigacja 3</a></li> <li><a href="...">Nawigacja 4</a></li> </ul> <div id="content"> <h1>Obszar tre ci</h1> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam sit amet nulla. Ut ut urna ac lectus.</p> <p>Ut ut urna ac lectus tincidunt sollicitudin. Sed rutrum interdum lorem. Integer aliquam pellentesque neque.</p> <p>Curabitur a neque a libero gravida dignissim. Sed eget tellus.</p> </div> <div id="related"> </div> </div> </body> </html> Element <div> z atrybutem ID o warto[ci #related zostaB zwinity, a wic nie generuje danych wyj[ciowych. Na poziomie systemu CMS zmiana klasy elementy <body> na typeB powoduje zmian ukBadu strony, ale bez konieczno[ci modyfikacji kodu znaczników. Oznacza to, |e w systemie mo|na zrezygnowa z jednego dodatkowego szablonu, który w przeciwnym razie byBby potrzebny. W ten sposób zachowana zostaje równie| separacja midzy kodem znaczników i warstw prezentacyjn. Arkusz stylów CSS powy|szej strony jest nastpujcy: body { font: normal .9em Georgia; } body.typeB #related { display:none; } body.typeB #content { width: 600px; } #nav { list-style-type: none; width: 100px; float: left; margin: 30px 0 0 5px; padding: 0; } 156 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C #content { width: 400px; float: left; margin-left: 10px; border: 1px solid red; padding: 3px; } #related { width: 150px; float: left; border: 1px solid red; margin-left: 10px; padding: 3px; } Narzdzia sBu|ce do zarzdzania tre[ci s po prostu innego rodzaju mechanizmem oprogramowania obsBugujcym witryn internetow. W rzeczywisto[ci s powszechnie stosowane na witrynach du|ych organizacji, a wikszo[ z nich to w peBni wyposa|one platformy programistyczne, które mo|na zmusi do wygenerowania danych wyj[ciowych zgodnych ze standardami sieciowymi. W ten sposób witryna bdzie w wikszym stopniu dostpna. Niezale|nie od tego, czy narzdzie powoduje wygenerowanie czystych danych wyj[ciowych, czy s one przeksztaBcane z formatu XML za pomoc jzyka XSLT (ang. eXtensible Stylesheet Language Transformations), dane wyj[ciowe powinny by czyste i przemy[lane. Warto podkre[li, |e efektywne stosowanie standardów sieciowych mo|e prowadzi równie| do redukcji liczby u|ywanych szablonów CMS oraz znacznie uBatwi prac autorom tre[ci. Tryb WYSIWYG dla autorów tre[ci Podczas pracy w [rodowiskach zajmujcych si tre[ciami publikowanymi w Internecie, wikszo[ autorów tre[ci nieposiadajcych umiejtno[ci technicznych korzysta z pewnej formy interfejsu WYSIWYG podczas tworzenia danej tre[ci. Tego rodzaju narzdzia mieszcz si w szerokim zakresie oprogramowania, na przykBad edytor, taki jak Adobe Contribute, sBu|cy do prostej obsBugi witryny. Nie s one typowymi platformami programistycznymi, takimi jak Adobe Dreamweaver lub Microsoft Expression Web, i posiadaj znacznie ubo|szy zestaw funkcji. Podobnie jak w przypadku ka|dego innego rodzaju oprogramowania, wymienione narzdzia maj opcje konfiguracyjne pozwalajce na osignicie ró|nego poziomu zgodno[ci ze standardami sieciowymi. Ogólna zasada jest taka, |e najlepsza konfiguracja edytora dla autora tre[ci jest wtedy, gdy wikszo[ opcji formatowania zostaje wyBczona. Wynika to z faktu, |e funkcje formatowa- nia zwykle polegaj na kodzie, którego zespóB programistów nie bdzie w stanie kontro- lowa. Efektywna obsBuga arkuszy stylów CSS przez te narzdzia jest wic kluczowa. Edycja za pomoc przegldarki internetowej Edytory bazujce na przegldarce internetowej s dostpne ju| od pewnego okresu czasu. Firma Microsoft wprowadziBa komponent edycyjny na bazie technologii Active-X ju| w przegldarce Internet Explorer 4. Od tego czasu dodano obsBug jzyka Java- Script, a edytory zwykle bazuj na skryptach, jzyku Java, technologiach Flash lub Active-X. Coraz cz[ciej do obsBugi edycji w przegldarce internetowej s dostpne komponenty wykorzystujce skrypty i dziaBaj one w wikszo[ci nowoczesnych przegldarek internetowych, takich jak Safari i Opera. Ze wzgldu na zachowanie zgodno[ci warto wybra jeden z tego rodzaju komponentów. ROZDZIAA 4 Programowanie aplikacji sieciowych 157 Niestety, standardowo edytory bazujce na przegldarce internetowej nie s wystarczajco solidne. Przegldarka Microsoft Internet Explorer generuje znaczniki <font>, podczas gdy Mozilla generuje osadzone style. Edytory mog wygenerowa to, co potrafi wygenerowa przegldarka internetowa, ale funkcje edytorów musz w olbrzymim stopniu zosta zbudowane na bazie kilki sztuczek dostpnych w modelu DOM przegldarki. Z tego powodu niezmiernie trudno jest na masow skal opracowa wBasny edytor, ale ka|dego dnia ich jako[ ulega poprawie. Czytelnik na pewno znajdzie nowoczesny edytor, który bdzie generowaB poprawny kod i obsBugiwaB arkusze stylów CSS. Konfiguracja edytora Programi[ci sieciowi powinni powzi odpowiednie kroki, aby edytory bazujce na przegldarce internetowej nie zniweczyBy ich ci|kiej pracy wBo|onej w definiowanie stylów i programowanie witryn internetowej zgodnie ze standardami sieciowymi. Kroki konieczne do podjcia mog obejmowa midzy innymi integracj nowego u|ytkownika lub nawet nowego oprogramowania. Pod uwag nale|y wzi nastpujce kroki: Przejrzenie kodu danych wyj[ciowych edytora WYSIWYG w ró|nych sytuacjach. Generowanie przez tego rodzaju edytory niepoprawnego kodu jest do[ powszechne, ale rynek nadal si rozwija i wiele z nich potrafi wygenerowa prawidBowe dane HTML lub nawet XHTML, po wprowadzeniu niewielu zmian konfiguracyjnych. Niektóre edytory oferuj widok wy[wietlajcy kod zródBowy. W zale|no[ci od poziomu umiejtno[ci autora tre[ci, tak funkcj trzeba bdzie wBczy lub wyBczy. Cz[ edytorów u|ywa modelu opartego na prawach dostpu, co umo|liwia wBczenie widoku wy[wietlajcego kod zródBowy niektórym u|ytkownikom i wyBczenie go innym. Funkcje kontrolujce aspekty prezentacyjne powinny by ograniczone do minimum. Nale|y wyBczy funkcje modyfikujce rodzin czcionki, kolor czcionki i kolor tBa. Te parametry powinny by definiowane jedynie w arkuszu stylów CSS. Edytor powinien mie mo|liwo[ stosowania klas CSS. Dobry edytor bdzie po- trafiB obsBu|y poBczenie pliku CSS z edytorem. Niektóre bd wymagaBy, aby programista skonfigurowaB elementy wy[wietlane w menu klas CSS. Najlepsze edytory bd obsBugiwaBy kontekst oraz pozwalaBy na u|ywanie jedynie niektórych klas aplikacji, w zale|no[ci od reguB CSS  na przykBad niedozwolone bdzie u|ycie reguBy p.error w elemencie <span>. ObsBuga klas CSS aplikacji powinna obejmowa mo|liwo[ci w zakresie stosowania CSS okre[lonym elementom. W ten sposób bdzie mo|na bardzo Batwo zastosowa klas na elemencie <ul>, jak równie| na zagnie|d|onych 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). 158 CSS I AJAX. STRONY WWW ZGODNE ZE STANDARDAMI SIECIOWYMI W3C Pliki arkuszy stylów CSS powizane z edytorem mog by wyodrbnione z gBównych plików CSS, poniewa| zawarte w nich reguBy mog okaza si zbyt skomplikowane do interpretacji. Poza tym peBny kontekst reguB, na przykBad elementy <p> wewntrz #content zamiast #related, mo|e by nieobsBugiwany lub po prostu niepotrzebny. W zale|no[ci od kontekstu edycji, rozwizaniem mo|e by u|ycie wielu plików CSS. Edytor powinien obsBugiwa podstawowe znaczniki semantycznego XHTML, takie jak wbudowane nagBówki (1-6), formatowanie akapitu, co najmniej dwa rodzaje wypunktowania, cytowanie, preformatowany tekst i adresy. Dobry edytor bdzie równie| usuwaB [mieci oraz niepoprawne znaczniki z tre[ci wklejanej ze schowka bdz bdzie zawieraB wiele opcji sBu|cych do oczyszczania wklejonej tre[ci. Bardzo czsto tre[ skopiowana z procesora tekstu lub strony internetowej i wklejona do edytora WYSIWYG zachowuje oryginalne informacje dotyczce formatowania. Tego rodzaju informacje prowadz do wygenerowania niepoprawnego kodu i mog zmodyfikowa style, które powinny by ustalane jedynie poza tre[ci poprzez arkusze stylów CSS. By mo|e trzeba bdzie poinformowa autorów tre[ci, |e je[li stosowana przez nich aplikacja nie potrafi usun niepoprawnych znaczników z wklejanej tre[ci, to powinni je usuwa poprzez wklejenie tre[ci do zwykBego edytora tekstowego, a dopiero nastpnie do edytora WYSIWYG. Idealnym rozwizaniem jest znalezienie edytora bazujcego na przegldarce internetowej, który bdzie obsBugiwaB jak najwiksz liczb przegldarek i oferowaB wymienione powy|ej funkcje. Znalezienie edytora WYSIWYG, który okazuje si opracowany jedynie pod ktem przegldarki IE, nie jest wcale takie rzadkie. Jednak obecnie dostpne edytory s dostpne zarówno dla platformy Windows, jak i Mac oraz niemal|e ka|dej przegldarki internetowej. Stosowanie wymienionych powy|ej reguB oraz kryteriów mo|e oznacza widoczn ró|nic w tworzeniu solidnych, zgodnych ze standardami sieciowymi witryn. U|ycie niewBa[ciwego edytora tre[ci mo|e zniweczy ci|k prac wBo|on w opracowanie witryny. Jako[ i wydajno[ dowolnego edytora stosowanego w [rodowisku produkcyjnym nale|y ocenia pod ktem standardów sieciowych i modyfikacji prowadzcych do uzyskania kodu, który bdzie w jak najwikszym stopniu poprawny. Firmy trzecie Wiksze witryny internetowe czsto stosuj okre[lony wygld i sposób dziaBania, równie| na witrynach firm trzecich bdz aplikacji biznesowych hostingowanych gdzie indziej, na przykBad na witrynie Investor Relations lub witrynach zajmujcych si po[rednictwem w znalezieniu pracy. Te witryny bd posiadaBy wygld zgodny z wygldem witryny podstawowej, a u|ytkownik mo|e si nawet nie zorientowa, |e zostaB przeniesiony na inn witryn. Podej[cie zakBadajce stosowanie standardów sieciowych jest idealne w tego rodzaju sytuacjach, poniewa| nie tylko grafika i skrypty mog by przechowywane na gBównych ROZDZIAA 4 Programowanie aplikacji sieciowych 159 serwerach organizacji, ale tak|e wszystkie pliki CSS lub przynajmniej te okre[lajce ogólny wygld i dziaBanie witryny. W takich sytuacjach organizacja mo|e udostpni firmom trzecim Bcza do niektórych lub wszystkich elementów (na przykBad plików CSS), a nastpnie usprawnia je przez caBy czas, bez konieczno[ci wprowadzania modyfikacji tak|e w aplikacjach firm trzecich. W tego rodzaju przypadkach prawdopodobnie najlepszym rozwizaniem bdzie przekazanie firmom trzecim dokumentacji wraz z opisem klas stylów, nagBówkami grafik oraz ogólnymi wskazówkami w zakresie ukBadu witryny. Warto równie| przekaza przykBadowe fragmenty kodu oraz szablony przedstawiajce przykBad budowania stron i ukBadu witryny. Jednak podobnie jak w ka|dej innej organizacji lub platformie oprogramowania, firmy trzecie bd si ró|niBy stopniem stosowania i zgodno[ci ze standardami sieciowymi. PrzykBadowo: ich platformy mog by niezgodne z arkuszami stylów opracowanymi w organizacji. W takich przypadkach pewne kompromisy stan si konieczno[ci. Kompromis mo|e oznacza wyodrbnienie pewnego fragmentu z pliku CSS lub utworzenie oddzielnych szablonów kodu znaczników. Jednak w perspektywie dBu|szego okresu czasu, warto rozwa|y i przeanalizowa zmian firmy trzeciej, je|eli nie bdzie ona w stanie nad|y za rozwizaniami przemysBowymi. W jaki sposób podej[ do aplikacji sieciowych? Podej[cie zakBadajce u|ywanie standardów sieciowych oznacza [cisBe oddzielenie warstwy prezentacyjnej od tre[ci, co pociga za sob tak|e separacj logiki biznesowej od warstwy prezentacyjnej. ZespoBy programistów budujce oprogramowanie oraz aplikacje sieciowe mog czerpa du|e korzy[ci, je[li tworzone przez nich interfejsy bd opieraBy si na nowoczesnym podej[ciu, czyli arkuszach stylów CSS zamiast osadzonych atrybutów prezentacyjnych. Mniejsza ilo[ osadzonego kodu prezentacyjnego oznacza zmniejszenie ryzyka dla logiki biznesowej podczas modyfikacji projektu witryny lub oprogramowania. Ponadto, w [rodowisku potencjalnie skomplikowanego oprogramowania, takie podej[cie mo|e oznacza, |e do[wiadczeni projektanci interfejsu bd mogli wprowadza zmiany w ukBadzie bez konieczno[ci uaktualniania kodu wewntrznego i anga|owania pro- gramistów kodu wewntrznego. Prawdziwym wyzwaniem jest okre[lenie miejsca rozpoczcia aktualizacji aplikacji sieciowej i poznanie funkcji dostpnych technologii. Nowe funkcje technik wykorzy- stujcych standardy sieciowe mog sta si pot|nym sojusznikiem zespoBu zarówno budowania aplikacji sieciowej od samego pocztku, jak i podczas u|ywania komercyjnych narzdzi sBu|cych do zarzdzania tre[ci.

Wyszukiwarka

Podobne podstrony:
Tworzenie serwisow WWW Standardy sieciowe tswwws
Projektowanie serwisów WWW Standardy sieciowe Wydanie III
PHP6 i MySQL 5 Dynamiczne strony WWW Szybki start ph6ms5
Testy zbiorcze ze standardów
Powtórka strony WWW
7 rzeczy ktore musisz wiedziec 7 rzeczy ktore musisz wiedziec tworzenie strony www
ISTRUKCJA TWORZENIA STRONY WWW W TWRPS
PHP i MySQL Dynamiczne strony WWW Szybki start Wydanie II
Przydatne strony www
Opracowanie strony WWW dla II Pracowni Fizycznej Wydziału Fizyki Uniwersytetu Warszawskiego
10 Montaż i demontaż uchwytów w podsufitówce ze standardu na GTI
STRONY WWW DLA DZIECI

więcej podobnych podstron