Documente Academic
Documente Profesional
Documente Cultură
CUPRINS 3
BIBLIOGRAFIE 6
CUVÎNT ÎNAINTE 7
1.1. INTRODUCERE 9
Ce este Internetul? 9
Ce este World Wide Web (WWW, W3) 10
Ce este Internetul?
Internetul a fost descris ca „o colecţie largă de reţele“ sau ca o „reţea de reţele“. Deşi
ambele definiţii sînt corecte, nici una nu surprinde Internetul în totalitatea sa. Pe lîngă
instrumentul care este această imensă conexiune, Internetul înseamnă şi mulţimea
comunităţilor celor ce îl folosesc, fiecare în scopuri diferite:
comunitatea academică utilizează Internetul ca pe cel mai mare, complet şi
totodată complex instrument de învăţare (educaţional);
comunitatea ştiinţifică utilizează Internetul ca pe un instrument de cercetare şi
colaborare;
comunitatea economică utilizează Internetul ca pe un mediu de derulare al
afacerilor.
Internetul nu este o organizaţie monolitică, avînd o conducere şi un grup de control unice;
Internetul este o societate de reţele de calculatoare interconectate, independente dar care
(din anumite motive) se supun unor protocoale globale.
Ce este World Wide Web (WWW, W3)
World Wide Web (WWW sau W3) este o reţea de resurse informaţionale de o
extraordinar de mare diversitate în ceea ce priveşte conţinutul. Este un sistem interactiv
hipermedia (adică un sistem ce conţine şi suportă patru categorii importante de tipuri de
informaţie: texte, imagini, sunete/audio şi imagini video în mişcare) construit peste
Internet.
Pentru a face aceste resurse disponibile (utilizabile) unei audienţe cît mai largi, Web-ul se
sprijină pe 3 mecanisme fundamentale:
1. O schemă uniformă de denumire (de stabilire a numelor, naming scheme)
pentru a localiza resursele în Web (de exemplu URI).
2. Protocoale pentru accesarea resurselor astfel denumite în Web (de exemplu
HTTP)
3. Hypertextul pentru navigarea comodă de la o resursă la alta (între resurse).
World Wide Web este cel mai vizibil instrument Internet, transformîndu-l (prin
capacităţile sale de a prezenta informaţiile) în cel mai important instrument al zilelor
noastre şi într-o sursă de informaţii fără egal. Web-ul poate fi utilizat pentru căutarea de
informaţii despre produse, transferul de software şi versiuni noi ale acestuia, păstrarea
unor colecţii de informaţii de orice fel de tip (de exemplu de ziare), în general pentru
aflarea unor informaţii despre orice tip de informaţie imaginabilă.
1.2. Resursele World Wide Web
Unul din conceptele de bază - preluat şi acceptat şi în alte protocoale utilizate în Internet -
este cel de resursă. O resursă poate fi un program, un calculator, un document, o bază de
date, un serviciu - nu prea are importanţă, atît timp cît poate fi referită în mod corect şi
fără echivoc. Pentru referirea la o resursă din Internet, se foloseşte termenul generic URI
(Universal Resource Identifier) care poate specifica fie o locaţie, caz în care se vorbeşte
de un URL (Universal Resource Locator) fie un nume, caz în care se vorbeşte de un
URN (Universal Resource Name).
Unei resurse i se aplică o metodă - iar pentru a specifica ce metodă se doreşte, ce date sau
parametrii suplimentari o completează pe aceasta, se face uz de mesaje.
Paradigma pe care se bazează protocolul este cea de cerere/răspuns. Cererea este emisă
de un client; acesta stabileşte o conexiune cu un server şi îi trimite acestuia o cerere, sub
forma unei metode. Metoda se referă la o anumită resursă, identificată via URI; mai
trebuie adăugate versiunea de protocol utilizată şi un mesaj de tip MIME care să conţină
parametrii metodei, informaţii relative la client şi un eventual “conţinut” suplimentar.
Serverul vă răspunde cu o linie de stare, incluzînd versiunea de protocol utilizată şi un
cod de succes sau eroare, la care se adaugă un mesaj de tip MIME conţinînd informaţii
relative la server şi eventual un “conţinut” suplimentar.
Acest posibil conţinut suplimentar este de regulă o entitate - o reprezentare particulară a
unor date necesare în cerere sau în răspuns, şi este structurat într-un antet (header)
conţinînd metainformaţii relative la date (o descriere a felului în care trebuie citite datele)
şi datele propriu-zise, care formează corpul entităţii.
http://adresa_host_in_retea[:port]/cale/subcalel/.../subcalen/nume_docu
ment
http: specifică tipul protocolului; el trebuie precizat dat fiind faptul că http nu este
singurul protocol prin care poate fi accesată o anumită resursă din Internet.
adresa_host_in_retea (de exemplu www.xxx.ro sau www.stpt.com) identifică un server
sau un gateway din reţea, folosind adresarea uzuală de tip DNS (Domain Name Service)
din Internet:
numehost.subdomeniul.subdomeniu2..subdomeniun.domeniu_de_bază
Deci www.xxx.ro s-ar citi “serverul www din subdomeniul xxx din domeniul de bază ro.
:port poate lipsi, ceea ce înseamnă că se presupune implicit că se face referinţă la portul
standard, 80. Dacă se specifică un alt port, se va adresa acesta.
Cale/subcalel/.../subcalen/nume_document identifică calea absolută pînă la documentul
identificat de nume_document de pe serverul respectiv. Nu întotdeauna însă resursa
referită este un document! Poate fi o fracţiune dintr-un document, caz în care se face
referire la fragmentul respectiv:
Cale/subcalel/.../subcalen/nume_document#capitolul2paragraful3
Sau, mai general, poate fi un program căruia trebuie să i se paseze cîţiva parametri şi o
anumită cerere:
Cale/subcalel/.../subcalen/nume_program;paraml;param2;...;paramn?cerere
Exemplu:
Următoarea referinţă
http://guaraldi.cs.colostate.edu:2000/cgi-bin/savvyfrontend?KW=cuvînt_cheie &
classic=on & tl=x & Boolean=AND & Hits=10 & Mode=MakePlan & df=normal &
AutoStep=on.
se va citi http://guaraldi.cs.colostate.edu:2000 ne spune că se va face o conexiune via
http cu serverul guaraldi.cs.colostate.edu, utilizînd portul 2000 al acestuia. Pe acest
server se va adresa programul savvy-frontend din directorul cgi-bin/, căruia nu i se
pasează alţi parametri decît cei incluşi în felul în care a fost formulată cererea:
KW=cuvînt_cheie & classic=on & tl=x & Boolean=AND & Hits=10 &
Mode=MakePlan & df=normal &A utoStep=on.
Specificarea unei resurse nu trebuie să fie totdeauna absolută, ca în exemplul dat. Dacă
ne-am plasat deja într-un subdirector oarecare al unui server, se pot folosi adrese relative,
care omit calea pînă în acel director: “subcalel/subcale2/.../subcalem/nume_resursa” sau
chiar pur şi simplu “nume resursă”, dacă resursa se află în acelaşi director.
În HTML adresarea URI se foloseşte pentru:
crearea unei legături spre un alt document sau spre o altă resursă (a se vedea
elementele A şi LINK)
crearea unei legături spre un stil de pagină (style-sheet) extern sau spre un script
aflat într-un fişier sursă extern (a se vedea elementele LINK şi SCRIPT)
Includerea într-o pagină a unei imagini, a unui obiect sau a unui applet (a se vedea
elementele IMG, OBJECT, APPLET şi INPUT).
crearea unei imagini senzitive (a se vedea elementele MAP şi AREA).
transmiterea unui formular interactiv (a se vedea elementul FORM).
crearea unui document cu frame-uri (a se vedea elementele FRAME şi IFRAME).
citarea unei referinţe externe (a se vedea elementele Q, BLOCKQUOTE, INS şi
DEL).
referirea unor conveţii de metadate care descriu un document (a se vedea elementul
HEAD).
În cazul unei conexiuni mai complexe, o situaţie comună ar putea fi cea din figura
următoare:
O cerere sau un răspuns care parcurge drumul din figură va traversa patru conexiuni.
Acest lucru trebuie avut în vedere; există unele opţiuni relative la comunicaţie care se
referă numai la primul vecin, dacă acesta nu se află în spatele unui tunel, altele care se
referă numai la punctele finale ale conexiunii iar altele care se pot referi la toate
conexiunile de pe traseu.
Iar dacă diagrama simplificată de mai sus este lineară, nu trebuie uitat faptul că fiecare
participant poate fi angajat simultan în comunicaţii multiple. Proxy-ul din figură poate
lucra deodată cu mulţi clienţi, care se adresează la mai multe servere şi care pot fi găsiţi
prin conexiuni diferite.
Oricare dintre participanţii la conexiune cu excepţia tunelului poate face uz de un cache
intern care să scurteze drumul unui ciclu cerere/răspuns. Exemplul anterior ilustrează şi
drumul unei cereri care s-a mai făcut o dată de către client, dar se află încă în cache-ul
proxy-ului:
Desigur, nu toate răspunsurile se pretează la a fi păstrate un timp în cache (pe ideea că
“poate mai cere cineva acelaşi lucru”); pe de altă parte, cererile de la clienţi pot formula
anumite opţiuni specifice relative la cache (“nu accept decît răspunsuri de la server
direct”, “nu accept răspunsuri memorate mai mult de x minute”, etc.)
FILOZOFII
TRANSLATORII
POŞTAŞII
Cererile formulate în protocolul HTTP se referă la informaţii care se pot afla stocate în
diverse baze de date, în diverse formate, pe diverse calculatoare. Cum anume se traduc în
cereri “concrete” date diferite, este o problemă care depăşeşte protocolul: sarcina lui este
doar să fixeze regulile care trebuie respectate de cele două aplicaţii participante la un
moment dat în comunicare pentru ca să se poată înţelege fără nici un fel de risc de
interpretare eronată a unei cereri sau a unui răspuns.
Ce este HTML?
Limbajul a fost dezvoltat iniţial de oamenii de ştiinţă ca o unealtă utilizată la partajarea
documentelor (rapoarte de cercetare, documentaţii, etc) în întreaga comunitate ştiinţifică
internaţională care utiliza (şi utilizează) Internetul. Pentru a publica informaţii care să fie
distribuite global în Internet este necesar un limbaj universal de descriere a acestora (o
„mamă a tuturor limbajelor de publicare“), limbaj care să fie potenţial înţeles de toate
computerele din Internet. Limbajul folosit de World Wide Web este HTML.
HTML se aseamănă cu modalităţile de formatare a textelor de la un procesor de texte
uzual în sensul că adaugă textului ce se doreşte a fi publicat (afişat) informaţii de
formatare şi permite înglo-barea şi altor tipuri de informaţii (imagini, sunete, etc). Toate
acestea indică modul de afişare (prezentare) pentru programele capabile să înţeleagă
aceste informaţii. Ceea ce îl deosebeşte de toate celelalte formate ale procesoarelor de
texte este faptul că un document HTML este un document ce conţine informaţie în format
„text-pur“ (numai caractere ASCII), în timp ce procesoarele de texte folosesc formate
particulare (proprietare). Astfel, un document HTML poate fi afişat (prezentat) de un
număr mare de programe (browsere Web) care rulează pe un mare număr de platforme.
Documentele HTML pot fi create cu un editor de texte (document salvat ca „text only
with line breaks“) sau cu editoare HTML care permit crearea vizuală (WYSIWYG) a
documentelor HTML, rezultînd însă tot documente în format text pur.
Limbajul HTML dă autorilor posibilitatea:
să publice documente cu headere, texte, tabele, liste, fotografii, etc...
să regăsească on-line informaţii prin intermediul hiperlink-urilor accesate printr-
un simplu click de mouse
să proiecteze formulare pentru realizarea tranzacţiilor cu servere aflate la distanţă,
pentru căutari de informaţie sau pentru activităţi specifice comerţului
să includă foi de calcul tabelar, clipuri video, sunete şi alte aplicaţii direct în
documente
De ce HTML?
HTML este un limbaj bazat pe SGML (Standard Generalized Markup Language), o
aşa-numită aplicaţie a acestuia. SGML este un standard internaţional (ISO-8879) aprobat
în 1986.
SGML oferă o modalitate de a reprezenta structura documentelor şi hyper-documentelor.
Este totodată şi o cale de a codifica hyper-documentele astfel ca acesta să poată fi
interschimbate asemănător procesului de interschimbare a unor documente în cazul mai
multor autori care colaborează utilizînd platforme diferite aflate la distanţă.
SGML este un sistem complex de descriere a documentelor. Este utilizat pentru
descrierea structurii generale a diferitelor tipuri de documente fără să fie un limbaj de
descrierea a paginii (cum este PostScript). Principala preocupare a SGML (şi prin urmare
şi a HTML care a fost preferat pentru publicaţiile pe Web fiind mai simplu) se răsfrînge
asupra conţinutului documentului, nu asupra aspectului lui.
Deci, în virtutea trăsăturilor moştenite de la SGML, HTML este un limbaj pentru
descrierea documentelor structurate. Teoria din spatele acestui limbaj se bazează pe
faptul că majoritatea documentelor au elemente comune (de pildă: titluri, paragrafe sau
liste) şi că dacă defineşti un set de elemente, poţi marca elementele documentului cu tag-
urile corespunzătoare.
Majoritatea tag-urilor HTML arată de forma: <NumeTag> Textul afectat de tag
</NumeTag> şi indică navigatorului elemente de structura documentului, formatare,
hypertext sau alte elemente (imagini, fişiere sonore, etc). Documentele HTML conţin
doar textul propriu-zis şi tag-urile HTML iar sursa lor poate fi uşor văzută din orice
navigator.
Diferenţa majoră dintre procesoarele de texte şi procesoarele HTML este că acesta din
urmă nu se preocupă de cum anume vor apărea pe ecran elementele (marcate ale)
documentului. Cu foarte puţine excepţii, HTML nu descrie modul de prezentare al
documentului ca un întreg (layout). HTML oferă (deocamdată) un suport redus în
stabilirea plasamentului sau felului în care vor fi afişate elementele documentului.
Proiectanţii HTML au ales intenţionat această variantă. Motivul este simplu. Deoarece nu
cunoaştem posibilităţile platformei pe care va fi văzut documentul (dimensiunea
ecranului, fonturile instalate, etc), prin separarea structurii documentului de felul în care
este afişat se oferă o mai mare libertate programului care înţelege HTML şi afişează
documentul. Acesta poate să ia hotărîri privind formatarea documentului pe baza
posibilităţilor platformei respective. Este ceea ce fac navigatoarele Web, în afara
funcţiilor de comunicare şi aducere a documentelor de pe Net.
Cînd navigatorul încarcă un document HTML, el „citeşte“ documentul în căutarea tag-
urilor HTML, formatează textul şi imaginea şi le afişează pe ecran. Este motivul pentru
care acelaşi document HTML apare uşor diferit cînd este privit cu navigatoare diferite.
Deşi în această fază de dezvoltare posibilităţile de formatare oferite sînt încă destul de
limitate, oferind un control destul de redus asupra formei documentului, avantajul
faptului că documentele pot fi transferate şi văzute oriunde pe Net, independent de
platformă şi de navigator, a condus la răspîndirea sa foarte rapidă.
Orice versiune a HTML include elemente cum ar fi: text centrat sau aliniat dreapta,
tabele, formule matematice, aliniere imagine şi text. Extensiile, care au apărut în număr
mare în ultima vreme, sînt seturi de tag-uri HTML introduse de diverse companii (în
general cele producătoare de navigatoare) care permit autorilor de documente HTML să
evite o parte din constrîngerile standardului. Cele mai răspîndite sînt extensiile Netscape
şi Internet Explorer.
Dar de ce a fost preferat HTML pentru publicaţii pe Web, cînd pentru realizarea
publicaţiilor electronice există mai multe tehnologii? Primul motiv este simplitatea. Al
doilea este că permite formatarea textului ASCII cu tag-uri în format ASCII. Rezultă de
aici o compresie bună, suport pentru legături hypertext şi uşurinţă în a scrie navigatoare
pentru vizualizarea documentelor.
Istoria HTML.
Născut în urmă cu aproximativ 30 de ani, într-o tentativă de a rezolva unele probleme
ivite la transportul documentelor între diferite computere, limbajul hypertext a evoluat
încet. HTML din prima generaţie este înţeles de primele navigatoare (modul text).
Nivelul 1 este obligatoriu pentru toate navigatoarele şi înseamnă posibilitatea de a
interpreta (hyper)text plus imagini. Nivelul 2 (HTML 2.0) a adus o contribuţie deosebită
la realizarea unei interactivităţi reale prin intermediul formularelor (forms). HTML 3.0
(cunoscut anterior ca HTML+) aduce în plus tabelele, formatarea paragrafelor (alinieri
stînga, centru şi dreapta), curgerea textului pe lîngă imagini, tabele, formule matematice,
taburi, note şi o mulţime de alte trăsături în aparenţă de mai mică importanţă dar care fac
munca cu HTML mult mai plăcută. Cele mai importante modificări şi îmbunătaţiri sînt
aduse însă de HTML 4.0, versiune care îmbunătăţeşte totodată şi conceptele de
accesibilitate şi structuralitate a limbajului de marcare. Informaţii despre dezvoltarea
HTML se pot prelua de la adresa: http://www.w3.org
Limbajul HTML a fost dezvoltat iniţial de Tim Berners-Lee la Laboratorul European
pentru Fizica Particulelor (CERN) şi popularizat de browser-ul Mosaic dezvoltat la
NCSA şi a beneficiat de explozia Web-ului din anii 90. În această perioadă HTML-ul s-a
dezvoltat în multiple direcţii, dar era dependent de autorii paginilor HTML şi
producătorilor de echipamente care, deşi foloseau aceleaşi convenţii pentru limbaj, aveau
implementări incompatibile. De aceea s-a impus ca o necesitate absolută standardizarea
HTML-ului într-un efort global al întregii comunităţi a Internetului. Şi acum HTML este
un limbaj marcat de un deosebit dinamism, standardizarea diverselor versiuni fiind însă
deosebit de anevoioasă datorită lipsei consensului.
Organismul care „guverna“ protocolul TCP/IP („fundamentul“ Internetului), standardele
arhitecturale ale Internetului, precum şi reţeaua Internet a Statelor Unite era în acea
perioadă IAB – Internet Arhitecture Board, cunoscut la începuturile sale ca Internet
Activities Board. Acesta delega responsabilităţile de dezvoltare, operare şi management a
Internetului şi a protocoalelor şi serviciilor legate de acesta unor subcomitete, grupuri de
lucru şi organizaţii de lucru pe care le controla. În plus avea contracte cu companii
comerciale specializate în comunicaţii pentru gestionarea infrastructurii Internetului.
Subgrupul care se ocupa (şi se ocupă şi acum) cu dezvoltarea şi implementarea
protocoalelor este IETF - Internet Engineering Task Force. Acesta este alcătuit dintr-un
comitet director (care raportează la IAB) şi o serie de grupuri de lucru, fiecare dintre
acestea responsabile cu un anumit protocol sau serviciu aflat în dezvoltare sau întreţinere.
Grosul activtăţii de dezvoltare şi standardizare a protocoalelor este astfel realizat de
aceste grupuri de lucru din cadrul IETF.
Documentele care specifică aceste protocoale şi servicii sînt numite Request for
Comments, mai cunoscute sub numele de RFC. Acestea primesc coduri numerice prin
intermediul cărora sînt referite ulterior. Chiar dacă numele sugerează o „solicitare de
comentarii“ asupra unui subiect (ceea ce constituie, de altfel, şi modalitatea principală de
dezvoltare a acestor documente – prin intermediul comentariilor, propunerilor şi
discuţiilor membrilor comunităţii Internetului), RFC-urile standard (care se numesc...
Recommendation) au putere de lege (decret) în cadrul comunităţii Internet (TCP/IP).
Aceste documente (standardele) reprezintă doar o parte din întreaga colecţie de RFC-uri,
dar practic dictează cum trebuie să se comporte un protocol şi ce funcţii trebuie să
realizeze. În timpul dezvoltării RFC-urile se numesc RFC Working Drafts.
Dacă un protocol (sau produs) nu se conformează unui RFC standard, atunci cel ce îl
dezvoltă riscă să piardă contactul (şi contractele) cu organismele ce aparţin de
Departamentul Apărării al SUA, precum şi cu toate celelalte organisme şi organizaţii care
le adoptă şi le respectă (ceea ce este echivalent cu excluderea din competiţia economică).
În orice dispută din cadrul Internetului RFC-urile şi IETF sînt autorităţile supreme.
RFC-urile se pot obţine de pe site-ul ds.internic.net (organizate după numărul ataşat
fiecărui RFC) sau de pe alte site-uri care oferă posibilităţi extinse de căutare/prelucrare,
cum ar fi, de exemplu, site-ul de la adresa http://www.cis.ohio-
state.edu/hypertext/information/rfc.html.
Organismul care se ocupă (şi) cu standardizarea limbajului HTML (din noiembrie 1995)
se numeşte „The World Wide Web Consortium (W3C)“ şi include CERN, universitatea
MIT (Cambridge, Massachusetts), precum şi alte organizaţii. În afara HTML, W3C are
„custodia“ şi a protocolului HTTP, precum şi a altor produse şi standarde ce se referă la
Web.
Filozofia W3C se bazează pe promovarea interoperabilităţii în World Wide Web. Aceasta
necesită standarde. Aprobarea şi în special acceptarea unui standard este însă un proces
extrem de mare consumator de timp, cu atît mai mult cu cît ambiţiile sînt mai mari (ISO a
abandonat modelul celor 7 nivele după ce mulţi ani a încercat să-l impună). Plecînd de la
păţaniile predecesorilor, pionierii Webului au împămîntenit obiceiul de a-şi construi
singuri standarde şi nu de a le importa. Esenţa filozofiei W3C este implementată în
grupurile de lucru (Working Group), un comitet mic de specialişti care se întîlnesc sau
discută în teleconferinţe pînă la atingerea unui consens. W3C are 18 astfel de grupuri,
fiecare cu 18-25 membri provenind de la orice companie ce are interese în subiectul
abordat de respectivul grup. Se ajunge astfel ca rivalii să stea alături şi să coopereze,
conducînd în cele din urmă la o acceptare mult mai rapidă din partea pieţii. Durata de
viaţă a unui astfel de standard (unei specificaţii stabilită în acest mod) dă de fapt măsura
autorităţii organizaţiei W3C.0
HTML 2.0 a fost publicat ca standard (versiune „oficială“) sub forma Request for
Comments RFC 1866 în noiembrie 1995 şi reprezintă eforturile de codificare şi
standardizare ale Internet Engineering Task Force. Poate fi preluat de la adresa
ftp://ds.internic.net/rfc/rfc1866.txt
A urmat apoi propunerea (draft) HTML 3.0 (în septembrie 1995), în mare măsură bazat
pe HTML+ (apărut în 1993) care, deşi nu a fost adoptată ca standard a dus la adoptarea a
numeroase îmbunătăţiri. Unul dintre motivele care au condus la neacceptarea draftului a
fost marimea considerată exagerată a acestuia. De aceea următoarele versiuni au fost şi
vor fi introduse într-un mod modular. Această versiune se poate prelua de la adresa
http://www.w3.org/MarkUp/html3/CoverPage. Ea a venit după ce Netscape începuse să
introducă o serie de noi taguri şi atribute care nu erau complet specificate (versiunea
aceasta de HTML fiind cunoscută sub numele de cod Mozilla), conducînd în acest fel la o
implementare neuniformă în alte browsere.
Eforturile grupului de lucru asupra HTML din cadrul World Wide Web Consortium din
această perioadă îndreptate spre eliminarea inconsistenţelor între specificaţiile diverselor
firme/browsere au avut ca rezultat apariţia standardului (cu numele de cod Wilbur)
HTML 3.2, în 11 ianuarie 1997, acestea putînd fi accesate la adresa
http://www.w3.org/TR/REC-html32. Împreună cu W3C au lucrat la aceste specificaţii
IBM, Microsoft, Netscape Communications Corporation, Novell, SoftQuad, Spyglass şi
Sun Microsystems. Această versiune este o aplicaţie SGML ce se conformează
standardului internaţional ISO 8879 ale cărui specificaţii se află la adresa
http://www.iso.ch/cate/d16387.html. Ca aplicaţie SGML, sintaxa documentelor este
definită de combinaţia dintre o declaraţie SGML (SGML declaration) şi definirea tipului
documentului (document type definition - DTD).
Versiunea HTML 4.0 a devenit o recomandare (standard) W3C la 18 decembrie 1997
(avînd numele de cod Cougar) şi poate fi accesată la adresa http://www.w3.org/TR/REC-
html40. Şi această versiune este o aplicaţie SGML ce se conformează standardului
internaţional ISO 8879 ale cărui specificaţii se află la adresa
http://www.iso.ch/cate/d16387.html. Ca aplicaţie SGML, specificaţia HTML 4.0 include
o declaraţie SGML (1 SGML declaration), trei definiţii ale tipului documentului (3
document type definition - DTD) şi o listă de referinţe la caractere. În momentul apariţiei
acestui standard, W3C recomandă autorilor producerea de documente HTML 4.0, dar
pentru motive evidente de compatibilitate cu versiunile anterioare, W3C recomandă
uneltelor ce interpretează şi suportă 4.0 să continue să suporte şi HTML 3.2, precum şi
HTML 2.0.
În ianuarie 1999 există şi propunerea (draftul) HTML 5.0.
Întreaga comunitate a Internetului este de acord că documentele dezvoltate cu HTML
trebuie să fie identice în diversele browsere şi pe diversele platforme ale Internetului.
Interoperabilitatea va asigura astfel costuri reduse furnizorilor (autorilor) de pagini
HTML (nu este nevoie decît de o singură versiune!), în caz contrar răspîndirea într-o
multitudine de formate particulare (şi proprietare ale unor firme) incompatibile reducînd
dramatic potenţialul (inclusiv comercial) al tuturor participanţilor. Fiecare nouă versiune
a încercat să reflecte un consens din ce în ce mai mare între participanţi, astfel ca
investiţiile făcute să nu fie irosite, iar documentele dezvoltate să devină imposibil de
folosit după o perioadă foarte scurtă de timp. Limbajul HTML se dezvoltă cu dorinţa ca
toate tipurile de computere şi diversele periferice ale acestora să poată folosi informaţia
de pe Web: PC-urile cu display-uri de diverse rezoluţii şi capabilităţi de redare a culorii,
periferice pentru cuplare prin intermediul vocii, telefoane celulare, etc...
I. Tag-urile HTML
Toate tag-urile au nume scrise între paranteze unghiulare <NumeTag> şi (eventual)
cîteva atribute care pot lua anumite valori. Formatul general al „instrucţiunilor“ (tag-
urilor) HTML este următorul:
<NumeTag Atribute> Textul afectat de acest tag </NumeTag>
Atributele tag-urilor au la rîndul lor nume şi pot lua numai anumite valori. Forma în care
sînt editate atributele este NUME="valoare". Valoarea trebuie inclusă în ghilimele.
Dacă în tag există mai multe atribute, ele trebuie separate prin spaţiu. Formatul general al
unui tag ce are şi atribute este următorul:
<NumeTag NumeAtribut="ValoareAtribut">Textul afectat de tag</NumeTag>
Exemplu:
<IMG src="poza.gif" align="bottom">
Aici NumeTag este IMG şi specifică inserarea unei imagini. NumeAtribut1 este SRC şi
are ca valoare calea şi numele fişierului imagine (poza.gif). NumeAtribut2 este ALIGN,
priveşte alinierea imaginii şi are ca valoare BOTTOM (jos, în raport cu rîndul).
Formatul tag-urilor trebuie respectat cu stricteţe. Chiar dacă, în general, aproape toate
caracterele de control ASCII sînt ignorate cînd apar în textul HTML (de pildă ENTER
sau TAB), dacă sînt introduse între parantezele unghiulare ale tag-urilor le vor face
neinterpretabile de către navigatoare şi prin urmare nu vor avea nici un efect.
Tag-urile pot fi utilizate şi în interiorul altor tag-uri. Acest lucru se face de forma:
<Tagl><Tag2>Textul afectat de tag</Tag2></Tagl>
Exemplu:
<A HREF="poza-mare.gif"><IMG SRC="poza-mică.gif"></A>
În acest exemplu, primul tag este <A>...</A> ce indică existenţa unei „legături“ spre alt
document, iar al doilea tag este <IMG> ce indică inserarea în document a unei imagini.
Astfel „poza-mică.gif“ este imagine activă, selectabilă, datorită faptului că este cuprinsă
între tag-urile <A>...</A>. Activarea ei de către cel care priveşte documentul cu un
navigator, va determina serverul să-i trimită documentul aflat în fişierul „poza-mare.gif“,
specificată ca valoare a atributului HREF.
Exemplu:
Cuvîntul „© rîndunica“ (care conţine caracterele „speciale“ î şi ©) poate fi inserat într-un
document HTML ca entitate nume sau ca entitate număr, astfel:
a). ©rîndunica
b). ©rîndunica
Entităţile (referinţele) numerice specifică poziţia (codul) caracterului în setul de caractere
al documentului, iar entităţile nume (referinţele caracter) folosesc nume simbolice care
permit să nu se reţină poziţia caracterului în cadrul setului de caractere ci doar „numele“
său. În timp ce entităţile sînt limitate la un subset al setului de caractere Unicode,
referinţele numerice pot specifica orice caracter.
Caractere neafişabile
Un agent utilizator poate să nu fie capabil să afişeze (sau să ofere utilizatorului) corect
(sau inteligibil) toate caracterele dintr-un document. Aceasta se poate întîmpla cînd, spre
exemplu, nu este disponibil un anumit font, un caracter are o valoare ce nu poate fi
exprimată de codificarea internă a agentului utilizator, etc...
Deoarece sînt prea multe cauzele ce pot duce la o astfel de situaţie nu se impune ca fiind
obligatoriu nimic, DAR fiecare agent utilizator trebuie:
să adopte un mecanism clar de alertare a utilizatorului (de exemplu afişarea unui
caracter sugestiv; în astfel de cazuri Netscape Navigator foloseşte semnul
întrebării)
să afişeze reprezentarea numerică a acelui caracter în cazul în care în document
acesta apare ca entitate numerică
Capitolul 3.
Structura documentelor HTML
Notă importantă:
Dacă se foloseşte un document multiplu definit cu FRAMESET, atunci elementul
FRAMESET înlocuieşte elementul BODY.
Un document HTML (uneori referit şi ca pagină HTML) este structurat în trei părţi:
1. Începutul unui document HTML este o declaraţie (<!DOCTYPE... >) care specifică
versiunea limbajului HTML căruia i se conformează acesta. Restul documentului este
conţinut în cadrul elementului de limbaj (tagului) <HTML>.
2. O secţiune declarativă numită antet (head) definită cu tagul <HEAD>. Aceasta conţine
informaţii (declaraţii) despre document (cum ar fi titlul şi cuvinte cheie asociate cu
documentul)
3. O secţiune numită conţinut (body) definită cu tagul <BODY> sau <FRAMESET> şi
care înseamnă de fapt (hyper)textul documentului. Acesta este alcătuit din elemente de
tip bloc şi elemente de tip inline.
1. Elementul DOCTYPE
Un document valid HTML trebuie să declare ce versiune utilizează pentru descrierea sa.
Declaraţia tipului documentului (document type declaration) defineşte ce DTD se
foloseşte în documentul respectiv.
De exemplu, HTML 4.0 poate specific 3 DTD, astfel că un autor trebuie să includă una
dintre următoarele declaraţii ale tipului de document:
HTML 4.0 Strict DTD include toate elementele şi atributele ce nu sînt „obsolete“
(inutile, depăşite) sau nu apar în documente definite cu FRAMESET. Pentru astfel
de documente se foloseşte următoarea declaraţie de tip:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
HTML 4.0 Transitional DTD include tot ceea ce este în declaraţia anterioară la
care se adaugă elementele şi atributele depăşite (vechi, redefinite, dar nu
eronate!). Pentru astfel de documente se foloseşte următoarea declaraţie de tip:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
HTML 4.0 Frameset DTD include tot ceea ce este în declaraţia anterioară la care
se adaugă documentele multiple (create frame-uri). Pentru astfel de documente se
foloseşte următoarea declaraţie de tip:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
"http://www.w3.org/TR/REC-html40/frameset.dtd">
3. Elementul HEAD
Sintaxa:
<HEAD>...</HEAD>
Atribute posibile:
PROFILE = uri (dicţionar de meta informaţii)
atribute de internaţionalizare: LANG, DIR
Conţine:
TITLE (exact un element)
BASE (optional)
ISINDEX (optional)
SCRIPT (zero sau mai multe elemente)
STYLE (zero sau mai multe elemente)
META (zero sau mai multe elemente)
LINK (zero sau mai multe elemente)
OBJECT (zero sau mai multe elemente)
Conţinut în:
Elementul HTML
Descriere:
Acest element conţine informaţii despre document (cum ar fi titlul său, cuvinte cheie
utilizabile de motoarele de căutare, descrierea documentului şi style-sheet-uri
asociate/utilizate. HEAD este solicitat în toate documentele, dar tagurile sale de
început/sfîrşit sînt opţionale. Dacă tagul de sfîrşit lipseşte primul element BODY sau
FRAMESET determină sfîrşitul lui. Este urmat de BODY în documentele Strict şi
Transitional şi de FRAMESET în cele Frameset.
Atributul optional PROFILE oferă locaţia în care se află un profil de metadate. Un
profil este un fişier ce defineşte proprietăţile ce pot fi utilizate de elementele META şi
LINK din header, neavînd un format standard stabilit.
Conţinutul acestui element (cu excepţia lui TITLE care este afişat de browsere) nu este
prelucrat în mod uzual.
4. Elementul BODY
Sintaxa:
<BODY>...</BODY>
Atribute posibile:
BACKGROUND = URI (imaginea de background a documentului)
BGCOLOR = Color (culoarea de background a documentului)
TEXT = Color (culoarea textului documentului)
LINK = Color (culoarea link-urilor documentului)
VLINK = Color (culoarea link-urilor deja vizitate ale documentului)
ALINK = Color (culoarea link-urilor active ale documentului)
ONLOAD = Script (documentul a fost încărcat de browser/agentul
utilizator)
ONUNLOAD = Script (documentul a fost parăsit de browser/agentul utilizator)
atribute comune (vezi nota de mai jos)
Conţine:
În HTML 4.0 Strict:
elemente de tip bloc (nivel bloc), unul sau mai multe
SCRIPT, INS, DEL
În HTML 4.0 Transitional:
elemente de tip bloc (nivel bloc)
elemente de tip inline
INS, DEL
Conţinut în:
In HTML 4.0 Strict or Transitional: HTML
In HTML 4.0 Frameset: NOFRAMES
Descriere:
Acest element conţine de fapt corpul (conţinutul) documentului (paginii) HTML.
BODY este cerut de documentele în care nu apar frame-uri, dar tagurile de
început/sfîrşit sînt opţionale. În documentele ce conţin frame-uri, BODY trebuie
obligatoriu conţinut în elementul NOFRAMES, dacă este utilizat.
Conţinutul documentului apare în cadrul elementelor de tip bloc sau în corpul
elementului SCRIPT, iar în cazul documentelor HTML 4.0 de tip Transitional sînt
permise şi elemente de tip inline direct în cadrul elementului BODY.
BODY poate avea atribute care specifică background-ul (fundalul) şi culoarea
documentului sau a unor elemente din cadrul său. Această metodă este însă
considerată depăşită, preferîndu-se utilizarea stilurilor de documente (style-sheet).
Dacă unul dintre atributele ce se referă la link-uri este setat, atunci se recomandă
folosirea tuturor pentru a se asigura ca diferă culorile diverselor tipuri de legături.
Aceste culori pot fi însă suprapuse de setările din browsere.
Atributul BACKGROUND sugerează o imagine de fundal care va fi folosită pentru
document (prin extindere pe verticală şi/sau orizontală). Dacă acest atribut este setat se
recomandă utilizarea şi a atributelor BGCOLOR, TEXT, LINK, VLINK şi ALINK
pentru a fi siguri că documentul poate fi citit. BGCOLOR se foloseşte pentru fundalul
imaginilor neîncărcate.
Style-sheet-urile (stilurile de documente) permit o mai mare flexibilitate în
specificarea imaginii de background, chiar a poziţiei şi modalităţii de extindere pe
întreaga suprafaţă ocupată de document, sau dacă imaginea să se deplaseze (scroll) sau
nu cu documentul, etc...
În plus faţă de evenimentele ce pot fi generate de orice element, BODY acceptă
următoarele atribute de tip eveniment utilizate în tehnologia client-scripting:
ONLOAD, apare atunci cînd documentul a fost încărcat;
ONUNLOAD, apare atunci cînd documentul este părăsit.
Atributele comune ce pot apare în acest element sînt comune mai multor elemente şi
sînt împărţite în:
atribute fundamentale (core): ID, CLASS, STYLE, TYTLE
atribute de internaţionalizare: LANG, DIR
evenimente scriptabile (ce pot fi tratate cu ajutorul scripturilor):
ONCLICK, ONDBLCLICK, ONMOUSEDOWN, ONMOUSEUP,
ONMOUSEOVER, ONMOUSEMOVE, ONMOUSEOUT,
ONKEYPRESS, ONKEYDOWN, ONKEYUP.
Elementele de tip bloc şi cele de tip inline sînt definite mai departe.
Exemple:
1. O variantă de pagină HTML care conţine ca şi „body“ (conţinut) textul: „The scariest
jungle: Follow the map to see lions and tigers and bears. Oh, my!“ arată astfel:
<HTML>
<HEAD>
<TITLE>My Jungle Home Page</TITLE>
</HEAD>
<BODY>
The scariest jungle: Follow the map to see lions and tigers and bears.
Oh, my!
</BODY>
</HTML>
Iar ceea ce se va vedea cu un browser (aici Internet Explorer) este prezentat în figura
următoare:
O variantă „depăşită“ (fără a fi eronată, dar nerecomandată ca stil) de pagină HTML care
ilustrează utilizarea atributelor depăşite este prezentată în continuare. Culoarea de
background se stabileşte ca fiind albă, textul negru, iar legăturile iniţial roşii, active ca
fiind de culoare fuchsia, iar cele deja vizitate maron.
</BODY>
</HTML>
2. Prin folosirea style-sheet-urilor (stilurilor), acelaşi efect se poate obţine şi astfel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-
html40/strict.dtd">
<HTML>
<HEAD>
<TITLE>Un exmplu cu stiluri incluse</TITLE>
<STYLE type="text/css">
BODY { background: white; color: black}
A:link { color: red }
A:visited { color: maroon }
A:active { color: fuchsia }
</STYLE>
</HEAD>
<BODY>
... document body...
</BODY>
</HTML>
3. Cea mai flexibilă soluţie este dată de posibilitatea de a specifica un stil definit într-un
alt fişier (stiluri externe). Orice modificare de stil se face fără a accesa documentul
HTML.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-
html40/strict.dtd">
<HTML>
<HEAD>
<TITLE>A study of population dynamics</TITLE>
<LINK rel="stylesheet" type="text/css" href="smartstyle.css">
</HEAD>
<BODY>
... document body...
</BODY>
</HTML>
5. Elementul FRAMESET
Sintaxa:
<FRAMESET>...</FRAMESET>
Atribute posibile:
ROWS = MultiLengths (lungimile rîndurilor)
COLS = MultiLengths (lungimile coloanelor)
ONLOAD = Script (toate frame-urile au fost încărcate)
ONUNLOAD = Script (toate frame-urile au fost eliminate/părăsite)
atribute comune
Conţine:
FRAMESET (unul sau mai multe elemente)
FRAME (unul sau mai multe elemente)
NOFRAMES (un singur element, opţional)
Conţinut în:
HTML
Descriere:
Elementul FRAMESET este un container de frame-uri folosit pentru a diviza fereastra
în subspaţii dreptunghiulare numite frame-uri. Într-un document ce conţine frame-uri,
elementul FRAMESET exterior ia locul lui BODY şi urmează imediat lui HEAD.
Elementul FRAMESET conţine unul sau mai multe elemente FRAMESET sau
FRAME, împreună cu elementul opţional NOFRAMES pentru a oferi un conţinut
alternativ browser-elor care nu suportă frame-urile (sau le au dezactivate). Se
recomandă însă să existe întotdeauna şi să ofere informaţie utilă pentru astfel de cazuri
(cel puţin, de exemplu, o legătură către frame-ul principal).
Atributele ROWS şi COLS definesc dimensiunile exacte ale fiecărui frame din set.
Fiecare atribut are formatul unei liste de lungimi (cu elemente separate de virgulă)
care specifică în pixeli, ca procent sau ca lungime relativă dimensiunea (lungimea sau
lăţimea) fiecărui frame. O dimensiune relativă se exprimă ca i*, unde i este un întreg.
Dacă lipseşte întregul se consideră egal cu 1. De exemplu, un set de frame-uri definit
cu ROWS="3*,*" va avea primul rînd cu o înălţime de 3 ori mai mare decît al doilea
rînd.
Valorile specificate pentru ROWS dau înălţimea fiecărui rînd, din partea de sus a
ecranului înspre baza acestuia. Atributul COLS defineşte lăţimea fiecărei coloane,
începînd de la stînga la dreapta.. Dacă ROWS sau COLS lipsesc, valoarea implicită a
atributului este 100%. Dacă ambele atribute sînt specificate, ecranul se „împarte“ dpdv
logic într-o matrice care se „umple“ mai întîi de la stînga la dreapta şi apoi de sus în
jos.
Cînd se utilzează dimensiuni în pixeli, acestea trebuie combinate întotdeauna cu
lungimi relative pentru a acoperi diferitele dimensiuni ale ferestrelor (determinate de
diferitele rezoluţii la care se utilizează ecranele). Dimensiunile în pixeli trebuie
folosite doar cînd frame-urile conţin în principal imagini sau alte obiecte cu o
dimensiune fixă (în pixeli). Preferată este însă exprimarea în procente şi dimensiuni
relative, datorită capacităţii acesteia de adaptare la diferitele dimensiuni de ferestre.
Elementul FRAMESET acceptă atributele ONLOAD şi ONUNLOAD pentru a
specifica acţiuni de tip client-side (executate în agentul utilizator) cînd toate frame-
urile au fost încărcate sau descărcate (eliminate din browser).
Exemple:
Exemplul următor determină împărţirea ecranului în 2 rînduri şi 3 coloane.
<FRAMESET ROWS="70%,30%" COLS="33%,33%,34%">
<FRAME NAME="Photo1" SRC="Row1_Column1.html">
<FRAME NAME="Photo2" SRC="Row1_Column2.html">
<FRAME NAME="Photo3" SRC="Row1_Column3.html">
<FRAME NAME="Caption1" SRC="Row2_Column1.html">
<FRAME NAME="Caption2" SRC="Row2_Column2.html">
<FRAME NAME="Caption3" SRC="Row2_Column3.html">
<NOFRAMES>
<BODY>
<H1>Table of Contents</H1>
<UL>
<LI>
<A HREF="Row1_Column1.html">Photo 1</A>
(<A HREF="Row2_Column1.html">Caption</A>)
</LI>
<LI>
<A HREF="Row1_Column2.html">Photo 2</A>
(<A HREF="Row2_Column2.html">Caption</A>)
</LI>
<LI>
<A HREF="Row1_Column3.html">Photo 3</A>
(<A HREF="Row2_Column3.html">Caption</A>)
</LI>
</UL>
</BODY>
</NOFRAMES>
</FRAMESET>
<FRAMESET ROWS="*,100">
<FRAMESET COLS="40%,*">
<FRAME NAME="Menu" SRC="nav.html" TITLE="Menu">
<FRAME NAME="Content" SRC="main.html" TITLE="Content">
</FRAMESET>
<FRAME NAME="Ad" SRC="ad.html" TITLE="Advertisement">
<NOFRAMES>
<BODY>
<H1>Table of Contents</H1>
<UL>
<LI><A HREF="reference/html40/">HTML 4.0
Reference</A></LI>
<LI><A HREF="reference/wilbur/">HTML 3.2
Reference</A></LI>
<LI><A HREF="reference/css/">CSS Guide</A></LI>
</UL>
<P>
<IMG SRC="ad.gif" ALT="Advertising">
</P>
</BODY>
</NOFRAMES>
</FRAMESET>
3.2. Structura header-ului unui document HTML (elementul
HEAD)
Headerul (antetul) unui document (definit cu elementul HEAD) conţine informaţii despre
documentul curent, cum ar fi titlul documentului, cuvinte cheie utilizate de motoarele de
căutare şi alte date care nu sînt considerate conţinut al documentului. Agenţii utilizatori
(browser-ele) nu afişează în general aceste informaţii, prelucrînd elementele ce apar aici
şi făcînd disponibile informaţiile intr-un alt mod decît conţinutul documentului. De
exemplu, browser-ele afişează titlul documentului încărcat în caption-line (linia de titlu) a
browserului, alături de numele browser-ului însuşi.
Elementul HEAD poate conţine următoarele elemente:
TITLE – stabileşte titlul documentului
BASE – defineşte adresa (URI) de bază a documentului
STYLE – defineşte stilurile de document (style-sheet) folosite în document
LINK – defineşte relaţiile documentului propriu-zis cu alte documente
auxiliare
META – defineşte un set de „metadate“ (date auxiliare utilizate în diverse
alte scopuri)
SCRIPT – defineşte un script client-side (secvenţă de instrucţiuni ce se
execută în client)
ISINDEX – defineşte textul prompterului utilizat la preluarea datelor de la
utilizator
OBJECT – permite includerea unor obiecte externe (sunete, imagini,
animaţii, etc)
1. Elementul TITLE
Sintaxa:
<TITLE>...</TITLE>
Atribute posibile:
atribute de internaţionalizare (vezi mai sus)
Conţine:
Text (inclusiv caractere entităţi)
Conţinut în:
HEAD
Descriere:
Acest element dă titlul documentului. Fiecare document trebuie să aibă exact 1 titlu
(un singur element TITLE în HEAD). Conţine text şă/sau caractere entităţi, dar nu
poate conţine alte elemente de marcare. Un titlu bun trebuie să fie scurt şi specific
conţinutului documentului, astfel încît să poată fi utilizat ca bookmark (semn de carte)
în browsere, ca titlu pentru fereastra în care se afişează şi ca legătură pentru motoarele
de căutare. Lungimea limită a unui titlu se recomandă a fi 60 caractere.
Exemplu:
Exemplul următor de pagina HTML setează titlul la „valoarea“ (şirul de caractere)
„My Jungle Home Page“ şi va arăta ca în figură (aici încărcată în browserul Internet
Explorer).
<HTML>
<HEAD>
<TITLE>My Jungle Home Page</TITLE>
</HEAD>
</HTML>
2. Elementul BASE
Sintaxa:
<BASE>
Atribute posibile:
HREF = uri (adresa/url de bază)
TARGET = destinaţia frame-ului (unde se încarcă ceea ce indică legătura)
Conţine:
Gol (nu conţine nimic)
Conţinut în:
HEAD
Descriere:
Acest element defineşte adresa de bază (uri, url) a documentului, cea care este folosită
la rezolvarea (determinarea) adreselor relative din cadrul documentului. Ea trebuie să
fie unică. Dacă este prezent, elementul BASE trebuie să apară în HEAD înaintea
oricărui alt element ce conţine o referire la o adresă (uri, url).
Atributul HREF specifică adresa propriu-zisă (url).
Cele mai multe pagini de Web nu necesită o astfel de adresă (adresa documentului
însuşi, de unde a fost încărcat, este adresa de bază, folosită la cele relative). Cazurile în
care este necesară sînt: cînd adresa de bază diferă de adresa documentului sau cînd
acesta nu are o adresă de la care să fi fost încărcat (de exemplu a fost trimis prin
email).
Atributul TARGET este folosit cînd documentul este împărţit în frame-uri, specificînd
frame-ul în care se afişeaza implicit porţiunile din document dacă nu sînt specificate
explicit.
3. Elementul STYLE
Sintaxa:
<STYLE>...</STYLE>
Atribute posibile:
TYPE = ContentType (tipul conţinutului)
MEDIA = MediaDesc (tipul de media căruia i se aplică stilul)
TITLE = text (titlul stilului - style sheet)
atribute de internaţionalizare (pentru TITLE)
Conţine:
An embedded style sheet
Conţinut în:
HEAD
Descriere:
Acest element înglobează (inserează) în document un stil (style sheet). Într-un HEAD
pot fi conţinute oricîte elemente STYLE.
Atributul TYPE se foloseşte pentru a specifica tipul de media (în standardul Internet).
Pentru stilurile definite de metoda Cascading Style Sheets atributul TYPE are valoarea
text/css.
Atributul opţional TITLE dă un titlu style-sheet-ului. Fără acesta, style-sheet-ul
respectiv este aplicat întotdeauna cînd sînt active stilurile pentru documentul respectiv.
Cu acest atribut se pot activa sau dezactiva style-sheet-uri individuale. Însă nu toate
browser-ele implementează această facilitate.
Atributul MEDIA specifică media pe care acest stil se aplică. Aceasta permite
autorilor restricţionarea unui stil la anumite dispozitive de ieşire. Valoarea acestui
atribut este o listă de nume de medii separate prin virgulă. HTML 4.0 defineşte
următoarele nume de medii (literele mari/mici sînt diferite):
screen (implicit), display-urile uzuale (fără paginare);
print, ieşirea pe imprimantă;
tty,
display-uri ce folosesc caractere de dimensiune fixă (ca cele folosite de
Lynx);
tv, dispozitive tip televizor (rezoluţie mică şi derulabilitate redusă);
projection, pentru proiectoare;
handheld, dispozitive handheld (de ţinut în mînă), caracterizate de un disply
mic, monocrom şi cu bandă limitată;
braille, dispozitive tactile braille tactile;
aural, pentru sintetizatoare de voce;
all, pentru toate dispozitivele.
Browser-ele pre-HTML 3.2 care nu cunoşteau elementul STYLE afişau conţinutul
său ca şi cum ar fi făcut parte din corpul documentului (din BODY). Pentru a
preîntîmpina aceasta se permite ca definiţia de stil să apară într-un comentariu (<!--
comment -->).
Un stil definit în acest mod este util cînd stilul respectiv se aplică unui singur
document. Dacă acesta trebuie aplicat mai multor documente se foloseşte tehnica
stilurilor externe.
Exemplu:
Un exemplu de descriere şi includere a unui stil într-un document:
<STYLE TYPE="text/css" MEDIA=screen>
<!--
BODY { background: url(foo.gif) red; color: black }
P EM { background: yellow; color: black }
.note { margin-left: 5em; margin-right: 5em }
-->
</STYLE>
Se defineşte ca background pentru corpul documentului (BODY) imaginea aflată în
fişierul „foo.gif“, iar culoarea de background ca fiind negru. În cadrul unui paragraf
(P) backgroundul este galben iar textul are culoarea neagră. Un stil cu numele „note“
începe de la 5 unităţi în stînga şi se întinde pînă cu 5 unităţi faţă de margine din
dreapta.
4. Elementul LINK
Sintaxa:
<LINK>
Atribute posibile:
REL = LinkTypes (relaţiile CĂTRE link)
REV = LinkTypes (relaţiile DE LA link)
HREF = URI (referinţa hypertext)
TYPE = ContentType (tipul conţinutului legăturii)
TARGET = FrameTarget (frame-ul în care se încarcă link-ul)
MEDIA = MediaDesc (mediul pentru care e linkul)
HREFLANG = LanguageCode (limba în care e descrisă legătura/linkul)
CHARSET = Charset (setul de caractere folosit pentru link)
atribute comune
Conţine:
Nimic
Conţinut în:
HEAD
Descriere:
Acest element defineşte „relaţiile“ documentului cu alte documente în ceea ce priveşte
localizarea (adresele lor). Într-un HEAD pot apare oricîte elemente LINK. Nu toate
browser-ele suportă însă elementul LINK, astfel încît un document nu trebuie să
depindă de relaţiile definite de acest element, ci trebuie folosit doar pentru a
îmbunătăţi performanţele per ansamblu.
Atributele REL şi REV definesc natura relaţiei dintre document şi resursele legate
(specificate) de acestea. REL defineşte o relaţie de la documentul curent la resursa
legată, în timp ce REV defineşte o relaţie în direcţia opusă. De exemplu:
<LINK REL=Glossary HREF="foo.html">
indică faptul că fişierul "foo.html" este un glosar pentru documentul curent, în timp ce
<LINK REV=Subsection HREF="bar.html">
indică faptul că documentul curent este o subsecţiune a lui "bar.html". Valoarea lui
REL şi REV este o listă de linkuri separate prin spaţii.
Relaţiile comune între documente includ şi următorul sau precedentul într-o secvenţă,
pagina de start într-o colecţie, un document cu informaţii de copyright şi informaţii
despre autor. Un document ar putea defini aceste relaţii astfel:
<LINK REL=Prev HREF="base.html" TITLE="BASE - Document
Base URI">
<LINK REL=Next HREF="meta.html" TITLE="META -
Metadata">
<LINK REL=Start HREF="../" TITLE="HTML 4.0
Reference">
<LINK REL=Copyright HREF="/copyright.html" TITLE="Copyright
Notice">
<LINK REV=Made HREF="mailto:lp@foo.com" TITLE="Feedback">
Elementul LINK se poate folosi şi pentru a aplica un stil extern. REL=StyleSheet
specifică un stil persisitent sau preferat, în timp ce REL="Alternate StyleSheet"
defineşte un stil alternativ.
Un stil persisitent este acela care se aplică întotdeauna cînd style sheet-urile sînt
active. Absenţa atributului TITLE indică un astfel de stil.
Un stil preferat este acela care se aplică automat. Combinaţia dintre REL=StyleSheet
şi TITLE specifică un stil preferat. Un autor nu poate specifica mai mult de un astfel
de stil.
Un stil alternativ este indicat de REL="Alternate StyleSheet". Utilizatorul poate alege
să schimbe stilul preferat cu unul dintre cele alternative, dacă broeserul permite acest
lucru (nu toate o şi fac, însă).
Un stil poate fi specificat prin intermediul mai multor style-sheet-uri (fişiere de
descriere a stilurilor), ca în exemplu următor:
<LINK REL=StyleSheet HREF="basics.css" TITLE="Contemporary"
TYPE="text/css">
<LINK REL=StyleSheet HREF="tables.css" TITLE="Contemporary"
TYPE="text/css">
<LINK REL=StyleSheet HREF="forms.css" TITLE="Contemporary"
TYPE="text/css">
Aici se combină 3 style-sheet-uri pentru a forma stilul "Contemporary", aplicat ca şi
stil preferat. Pentru a se combina style-sheet-urile trebuie să folosească acelaşi TITLE.
Atributul MEDIA specifică media pentru care sînt proiectate resursele legate de acest
document. Cu REL=StyleSheet autorii restricţionează un stil la un anumit dispozitiv.
Are aceleaşi valori ca la elementul STYLE.
Atributele opţionale HREFLANG şi CHARSET ale lui LINK descriu limba (de
exemplu en pentru English, en-US pentru American English şi ja pentru Japoneză) şi
schema de codificare a legăturii (de exemplu ISO-8859-1, SHIFT_JIS, and UTF-8).
Relaţia legăturii Alternate defineşte o versiune alternativă a documentului. Traduceri
ale unei pagini pot fi identificate folosind REL=Alternate împreună cu atributul
HREFLANG, iar versiuni ale unei pagini potrivite pentru un mediu specific se pot
oferi prin combinarea REL=Alternate cu atributul MEDIA ca în exemplele următoare:
<LINK REL=Alternate HREF="index.fr.html" HREFLANG=fr LANG=fr TITLE="Version
française">
<LINK REL=Alternate HREF="index.ja.html" HREFLANG=ja CHARSET="SHIFT_JIS"
TITLE="Japan version">
<LINK REL=Alternate HREF="index.pdf" TYPE="application/pdf" MEDIA=print TITLE="PDF
version">
De remarcat că atributele LANG şi DIR se aplică textului atributului TITLE şi NU
conţinutului legăturii.
Atributul TARGET se foloseşte în cazul documentelor definite cu frame-uri.
5. Elementul META
Sintaxa:
<META>
Atribute posibile:
NAME = nume (numele proprietăţii)
HTTP-EQUIV = nume (numele răspunsului din headerul HTTP)
CONTENT = CDATA (datele asociate)
SCHEME = CDATA (formatul datelor)
atribute de internaţionalizare pentru CONTENT (vezi mai sus)
Conţine:
Nimic
Conţinut în:
HEAD
Descriere:
Acest element defineşte metadatele documentului: cuvintele cheie asociate cu acestea,
descrierea documentului şi autorul său. Pot apare oricîte elemente META în cadrul
elementului HEAD. Nu există o listă standard de metadate/proprietăţi (fiecare autor
poate defini orice metadată îi este necesară).
Atributul NAME defineşte un nume de proprietate, în timp ce CONTENT dă valoarea
corespun-zătoare a acelei proprietăţi. CONTENT poate conţine text şi caractere
entitate, dar făra taguri.
Atributul opţional SCHEME defineşte formatul proprietăţii respective. De exemplu,
proprietatea dată calendaristică poate cere SCHEME="Month-Day-Year" pentru a o
deosebi de formatul definit de SCHEME="Day-Month-Year".
Exemplul următor defineşte autorul unui document:
<META NAME=author CONTENT="Laurenţiu Pădeanu">
Unele motoare de căutare folosesc cuvinte cheie şi proprietăţi de descriere pe care le
asociază cu legătura către documentul respectiv (şi care pot oferi chiar informaţii
asemănătoare ponderilor). De exemplu:
<META NAME="description" CONTENT="Pagina clubului de fotbal Universitatea Craiova">
<META NAME="keywords" CONTENT="U Craiova, stiinţa, craiova, soccer, football">
Pentru a evita ca aceste motoare să trunchieze descrierea documentului, aceasta trebuie
să fie sumară (să nu depăşească 200 de caractere). Cuvintele cheie sînt separate prin
virgulă şi literele mari sînt diferite de cele mici. Motoarele de căutare procesează de
obicei primele 1000 de caractere, iar dacă un cuvînt se repetă prea des există pericolul
ca documentul să nu fie indexat.
Unele motoare de căutare suportă proprietatea robots pentru a indica dacă un
document să fie indexat şi care dintre link-urile sale să fie urmate. Valoarea asociată a
lui CONTENT este o listă de directive separate prin virgulă:
index – specifică posibilitatea ca această pagină sa fie indexată
noindex – indică neindexarea aceastei pagini
follow – indică motoarelor de căutare să urmeze linkurile din pagină
nofollow – indică motoarelor de căutare să NU urmeze linkurile din pagină
all – echivalent cu index, follow (implicit)
none – echivalent cu noindex, nofollow
De exemplu, următorul element META le spune motoarelor de căutare să nu indexeze
pagina, dar să urmărească link-urile din pagină:
<META NAME=robots CONTENT="noindex, follow">
De remarcat, însă, că NU toate motoarele de căutare suportă această proprietate.
Atributul HTTP-EQUIV poate fi folosit în locul lui NAME pentru a indica faptul că
acea proprietate este (aparţine) header-ului HTTP (a protocolului de preluare a
documentelelor). Această proprietate este transformată şi transmisă de unele servere
HTTP (nu toate1), dar clienţii (browser-ele) recunosc această caracteristică (faptul că
aparţin headerului HTTP) chiar dacă nu este trimisă în antetul protocolului. Exemple
(a se vedea şi descrierea protocolului HTTP):
1. setarea datei de expirare a unui document
<META HTTP-EQUIV=Expires CONTENT="Sun, 22 Mar 1998 16:18:35
GMT">
2. setarea limbajului scripturilor inline din document ca fiind javascript
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
3. setarea limbii în care sînt descrise stilurile inline din document
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
4. setarea codificării unui document (la setul de caractere japonez)
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;
charset=SHIFT_JIS">
Folosirea acestei metode în locul specificării în antetul protocolului HTTP poate avea
ca efect reafişarea paginii încă o dată după ce a fost încărcată de anumite browsere.
5. setarea timpului şi adresei de încărcare a unei alte pagini după ce s-a încărcat
documentul curent: <META HTTP-EQUIV=Refresh CONTENT="10;
URL=http://www.alta.com/">
După 10 secunde de la încărcarea paginii curente, browserul trebuie să încarce pagina
de la adresa www.alta.com. De remarcat că nu toate browserele suportă această
proprietate, astfel că e preferată şi oferirea unei alte modalităţi de a încărca pagina
respectivă. Cel mai uzual motiv de folosire a lui Refresh este mutarea unei pagini la o
altă adresă şi păstrarea (cel puţin pentru un timp) şi a vechii adrese, pentru utilizatorii
ce şi-au marcat cu bookmark pagina mutată.
6. Elementul SCRIPT
Sintaxa:
<SCRIPT>... </SCRIPT>
Atribute posibile:
TYPE = ContentType (tipul conţinutului limbajului scriptului)
LANGUAGE=CDATA (numele limbajului din script)
SRC=URI (locaţia scriptului extern)
CHARSET=Charset (setul de caractere folosit de scriptul extern)
DEFER (execuţia scriptului poate aştepta)
Conţine:
Înglobează un script
Conţinut în:
HEAD, inline elements, block-level elements
Descriere:
Acest element include un script de tip client-side în document. Această tehnică
permite o mai mare interactivitate într-un document prin acţiunile ce pot fi întreprinse
ca răspunsuri la evenimente utilizator. De exemplu, un script poate fi folosit la
verificarea elementelor introduse de utilizator într-un formular ÎNAINTE ca acestea să
fie transmise, oferindu-se în acest mod posibilitatea de notoficare imediată a
utilizatorului în caz de eroare.
Nu toate browserele suportă tehnica scripturilor client-side, iar unele dintre cele care o
suportă permit dezactivarea ei la solicitarea utilizatorului. În acest scop se foloseşte
elementul NOSCRIPT care oferă posibilitatea înglobarii în document a acţiunilor ce
trebuie executate în acest caz. Mai mult, în cazul unor validări ale unor elemente ce se
transmit unor cgi-uri, acestea trebuie să repete aceste verificări pentru a se acoperi şi
cazurile de invalidare/nesuportare a scripturilor client-side.
Mai mult, trebuie reţinut că diversele browsere suportă DIVERSE VARIANTE ale
limbajelor utilizate pentru scrierea scripturilor, fiecare cu bug-urile sale. Browser-ele
cele mai cunoscute ce suportă scripturile client-side sînt Netscape Navigator versiunea
2.0 şi superioară, Microsoft Internet Explorer versiunea 3.0 şi superioară, şi Opera
versiunea 3.0 şi superioară.
Atributul TYPE specifică tipul mediului ce conţine limbajul de scriptare, adică
text/javascript. Majoritatea browser-elor suportă însă numai atributul depăşit
LANGUAGE, cel care specifică numele limbajului folosit. Exemple ale valorilor
suportate de LANGUAGE includ JavaScript, JavaScript1.1, and VBScript. Browser-
ele vor ignora scripturile cu valori ale acestui atribut pe care nu le suportă. De
exemplu, Netscape Navigator 3.0 va executa scripturile cu LANGUAGE =
"JavaScript" sau LANGUAGE="JavaScript1.1" dar va ignora scripturile cu
LANGUAGE = "JavaScript1.2" sau LANGUAGE="VBScript". Implicit se presupune
ca este JavaScript 1.0.
Un script embedded (înglobat) este dat ca şi conţinut al elementului SCRIPT. Atributul
SRC permite autorilor să refolosească codul prin specificarea unui script extern.
Atributul opţional CHARSET oferă metoda de codificare (setul de caractere) al
scriptului extern (tipic ISO-8859-1). Dacă browser-ul nu poate încărca scriptul extern
va executa scriptul embeded, în caz contrar ignorîndu-l pe acesta.
Exemplu:
<SCRIPT TYPE="text/javascript" SRC="foo.js" CHARSET="ISO-8859-1">
<!—
// script embedded, executat NUMAI DACĂ foo.js este nedisponibil
// -->
</SCRIPT>
Netscape Navigator cere ca scripturile externe să-i fie oferite printr-un tip al
conţinutului (cîmpul Content-Type al headerului HTTP) cu o valoare
application/x-javascript.
Atributul DEFER indică posibilitatea ca browserul să poată aştepta parcurgerea
scriptului pînă cînd şi restul documentului a fost prelucrat (afişat, de exemplu).
Scripturile ce utilizează acest atribut nu trebuie să genereze nici un conţinut al
documentului şi nu trebuie să răspundă la evenimente utilizator ce pot apare în
timp ce documentul se încarcă (de exemplu transmiterea unui formular). Acesta
poate fi util în cazul întîrzierii scripturilor ce preîncarcă imagini, chiar dacă
browserele nu îl suportă, în general.
Elementul SCRIPT poate apare de un număr oarecare de ori în headerul sau
corpul unui document (HEAD sau BODY). În mod tipic este amplasat în HEAD,
dacă nu generează conţinut pentru corpul documentului.
Browserele dinaintea lui HTML 3.2 nu recunosc elementul SCRIPT şi îi tratează
conţinutul ca şi cum ar fi HTML normal. Pentru a evita aceste cazuri, se permite
plasarea comentariilor în jurul conţinutului scriptului embedded. De exemplu:
<SCRIPT TYPE="text/javascript">
<!-- comment to end of line
document.write("foo");
// comment to end of line -->
</SCRIPT>
Atenţie la faptul că "-->" este conţinut într-un comentariu pe o singură linie a
limbajului JavaScript (început cu două caractere slash „/“). Din punct de vedere
practic, prima apariţie a lui "</" urmat de orice literă este considerat tag de sfîrşit
pentru elementul SCRIPT. Autorii trebuie să evite utilizarea şirurilor de tipul
"</P>" în scripturile embedded. JavaScript permite folosirea caracterului \
(backslash) pentru a evita terminarea prematură a elementului SCRIPT, ca în
exemplul acesta: document.write("<\/P>").
7. Elementul ISINDEX
Sintaxa:
<ISINDEX>
Atribute posibile:
PROMPT = text (mesajul promptului)
atribute fundamentale (core atributes, vezi mai sus)
atribute de internaţionalizare (vezi mai sus)
Conţine:
Nimic
Conţinut în:
APPLET, BLOCKQUOTE, BODY, CENTER, DD, DEL, DIV, FIELDSET,
FORM, HEAD, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT,
TD, TH
Descriere:
Acest element defineşte o linie singulară de introducere a datelor. Eticheta cîmpului de
intrare este specificată folosind atributul PROMPT. ISINDEX este depăşit în HTML
4.0 de către elementul INPUT. Este echivalent cu FORM cu un singur element de
intrare de tip text, o metodă get şi o acţiune indicînd la adresa (uri) documentului ce
conţine elementul ISINDEX.
8. Elementul OBJECT
Sintaxa:
<OBJECT>...</OBJECT>
Atribute posibile:
DATA=URI (datele obiectului)
CLASSID=URI (adresa de implementare)
ARCHIVE=CDATA (fişierele arhivă)
CODEBASE=URI (adresa de bază/URI pentru CLASSID, DATA, ARCHIVE)
WIDTH=Length (lăţimea obiectului)
HEIGHT=Height (inălţimea obiectului)
NAME=CDATA (numele pentru transmiterea formularelor)
USEMAP=URI (imaginea senzitivă/image map de tip client-side)
TYPE=ContentType (tipul conţinutului obiectului)
CODETYPE=ContentType (tipul conţinutului codului)
STANDBY=Text (mesajul ce se va afişa în timp ce se încarcă)
TABINDEX=NUMBER (poziţia în ordinea de parcurgere)
DECLARE (nu se instanţiază obiectul)
ALIGN=[ top | middle | bottom | left | right ] (modul de aliniere a obiectului)
BORDER=Length (lăţimea/grosimea marginii linkului)
HSPACE=Pixels (spaţiu lăsat orizontal)
VSPACE=Pixels (spaţiu lăsat vertical)
atribute comune
Conţine:
Elemente PARAM urmate de elemente de tip bloc şi/sau inline
Conţinut în:
HEAD, elemente de tip inline, elemente de tip bloc cu excepţia lui PRE
Descriere:
Acest element este folosit pentru a include „obiecte“ ca imagini, secvenţe video,
applet-uri Java sau elemente VRML în documentele HTML. Este utilizat pentru a
înlocui elementele mai specifice IMG şi APPLET definite în versiunile anterioare,
precum şi extensiile proprietare (ale diferiţilor producători de browsere), cum ar fi
EMBED şi BGSOUND. Utilizarea acestui element asigură atît o portabilitate
superioară, cît şi o compatibilitate între browsere şi versiuni.
Atributul DATA specifică adresa obiectului înglobat în document. Adresele relative
sînt interpretate în concordanţă cu atributul CODEBASE.
Atributele WIDTH şi HEIGHT definesc dimensiunile obiectului. Valorile pot fi în
pixeli sau în procente relative la dimensiunea părintelui. Majoritatea browsere-lor cer
obligatoriu aceste atribute.
CLASSID poate fi folositor pentru a specifica implementarea obiectului. Applet-urile
Java, Python şi controalele ActiveX oferă implementări pentru obiectul înglobat, fiind
astfel specificate cu atributul CLASSID, ca în exemplul următor:
<OBJECT CLASSID="yahtzee.py" CODETYPE="application/x-python"
STANDBY="Ready to play Yahtzee?" TITLE="My Yahtzee Game">
<OBJECT CLASSID="java:Yahtzee.class" CODETYPE="application/java"
WIDTH=400 HEIGHT=250 STANDBY="Ready to play Yahtzee?" TITLE="My
Yahtzee Game">
<OBJECT DATA="yahtzee.gif" TYPE="image/gif"
TITLE="A Yahtzee animation" WIDTH=200 HEIGHT=100>
Yahtzee is my <EM>favorite</EM> game!
</OBJECT>
</OBJECT>
</OBJECT>
Acest exemplu demonstrează şi metoda de utilizare a conţinutului alternativ pentru
browserele care nu pot afişa obiectele înglobate. În acest exemplu, se foloseşte întîi
„varianta“ scrisă în Python a jocului Yahtzee, dacă browserul îl suportă. Pentru
browserele care nu suportă appleturile Python se oferă o alternativă cu versiunea Java.
Mai mult, dacă nici acest tip de applet nu e recunoscut (şi executat) se oferă o imagine
(un gif). La limită este oferit şi un text, ca alternativă extremă. De remarcat că acest
exemplu este compatibil şi cu versiunile anterioare care ignoră tagul OBJECT, afişind
conţinutul elementului din interior (aici un text!).
Tot în acest exemplu este prezentată şi modalitatea de utilizare a atributelor TYPE şi
CODETYPE pentru a permite browserelor evitarea solicitării explicite şi suplimentare
a unui fişier pe care nu îl pot prelucra (afişa). Atributul TYPE specifică tipul
suportului referit de resursa referită de DATA, iar CODETYPE specifică tipul
suportului cerut de datele specificate de CLASSID. Exemplul utilizează şi atributul
STANDBY care afişează un text (scurt) în timpul încărcării obiectului respectiv.
Atributul ARCHIVE poate specifica o listă (cu elemente separate prin blancuri,
elemente ce sînt adrese absolute sau relative la CODEBASE), permiţînd browserului
să încarce mai multe fişiere cu o singură conexiune, ceea ce conduce la scăderea
timpului total de încărcare a unui document compus. Formatul standard de arhivă
pentru Java este JAR. Aceste arhive se pot crea cu utilitarul jar oferit de kitul de
dezvoltare jdk.
Atributul DECLARE face ca obiectul să fie doar o declaraţie ce NU este instanţiată
imediat. Aceasta permite instanţierea obiectelor prin intermediul unei legături, unui
buton sau unui obiect mai tîrziu în acelaşi document. Atributul ID trebuie să fie utilizat
cu obiectele estfel declarate pentru ca mai tîrziu acestea să se poată instanţia prin
intermediul identificatorului atribuit aici.
Exemplu:
<OBJECT DECLARE ID=yahtzee CLASSID="java:Yahtzee.class"
CODETYPE="application/java"
WIDTH=400 HEIGHT=250 TITLE="My Yahtzee Game">
<IMG SRC="yahtzee.gif" ALT="You get the dice!" TITLE="Yahtzee animation">
</OBJECT>
...
<P>Ready to <A HREF="#yahtzee">play Yahtzee</A>?</P>
Elementul OBJECT poate conţine şi elemente PARAM, înaintea oricărui alt conţinut,
pentru a oferi datele de iniţializare la execuţie. Exemplul următor include o secvenţă
video şi un clip audio ca alternativă. Se folosesc parametri recunoscuţi în mod normal
de orice plug-in pentru audio/video, plasaţi înainte de specificarea conţinutului
alternativ:
<OBJECT DATA="mlk.mov" TYPE="video/quicktime"
TITLE="Martin Luther King's "I Have a Dream" speech" WIDTH=150
HEIGHT=150>
<PARAM NAME=pluginspage VALUE="http://quicktime.apple.com/">
<PARAM NAME=autoplay VALUE=true>
<OBJECT DATA="mlk.wav" TYPE="audio/x-wav"
TITLE="Martin Luther King's "I Have a Dream" speech">
<PARAM NAME=autostart VALUE=true>
<PARAM NAME=hidden VALUE=true>
<A HREF="mlk.html">Full text of Martin Luther King's "I Have a Dream" speech</A>
</OBJECT>
</OBJECT>
Atributul USEMAP poate fi folosit cu OBJECT pentru a include o imagine „clicabilă“
– o imagine care este echivalentă cu o serie de legături activate cu un click de mouse
(spre adrese diferite în funcţie de zona de imagine pe care se face clic). Acestea se mai
pot realiza şi cu elementul IMG (fiind mai bine suportate de browsere), dar cele
definite cu OBJECT permit o alternativă textuală completă pentru browserele ce nu
încarcă imaginile. Atributul USEMAP indică spre un element MAP al cărui conţinut
defineşte legăturile în funcţie de coordonatele zonei în care se face clic. Elementul
MAP poate fi inclus în OBJECT, caz în care conţinutul său nu este afişat (ci
interpretat aşa cum e descris anterior), sau în afara lui OBJECT şi atunci conţinutul
său este afişat.
Exemplul următor prezintă un document cu două imagini (cea de a doua ca alternativă
la prima, dacă aceasta nu este suportată). Ambele partajează o definiţie de „hartă“
(zonele de pe imagine) care este inclusă în elementul OBJECT. Elementul MAP
conţine un meniu de legături care sînt afişate de browserele care nu încarcă imaginile:
<OBJECT DATA="sitemap.png" USEMAP="#map" TYPE="image/png"
TITLE="Site map" WIDTH=300 HEIGHT=200>
<OBJECT DATA="sitemap.gif" USEMAP="#map" TYPE="image/gif"
TITLE="Site map" WIDTH=300 HEIGHT=200>
<MAP NAME=map>
<UL>
<LI><A HREF="/reference/" COORDS="5,5,95,195">HTML and CSS
Reference</A></LI>
<LI><A HREF="/design/" COORDS="105,5,195,195">Design Guide</A></LI>
<LI><A HREF="/tools/index.html" COORDS="205,5,295,195">Tools</A></LI>
</UL>
</MAP>
</OBJECT>
</OBJECT>
Atributul TABINDEX specifică (prin intermediul unui număr întreg între 0 şi 32767)
ordinea de parcurgere a elementului dacă se foloseşte tasta TAB. Un element cu
TABINDEX’0 sau fără TABINDEX va fi vizitat după toate elementele care au un
TABINDEX pozitiv. Dintre elementele care au un TABINDEX pozitiv, cele care au o
valoare mai mică vor primi focusul (vor fi vizitate) mai întîi. Dacă au aceeaşi valoare
se vizitează întîi cele care apar întîi în document.
Atributul ALIGN, depăşit în HTML 4.0, specifică modul de aliniere a unui obiect.
Valorile top, middle şi bottom specifică poziţia obiectului faţă de conţinutul
documentului ce-l înconjoară la stînga şi dreapta. ALIGN=middle aliniază centrul
obiectului cu linia de bază a textului (baseline). Pentru a centra un obiect orizontal în
pagină se plasează într-un bloc centrat, ca în exemplul următor:
<P ALIGN=center><OBJECT DATA="foo.mov" TYPE="video/quicktime"></OBJECT></P>
Celelalte valori (left şi right) specifică un obiect flotant (ca poziţie): el este plasat la
marginea din stînga sau din dreapta şi restul conţinutului curge pe lîngă el. Pentru a se
plasa restul conţinutului sub obiect se foloseşte <BR CLEAR=left|right|all> (cel care
se impune în situaţia respectivă). Metodele moderne de aliniere sînt oferite de
proprietăţile vertical-align and float ale stilurilor cascadate (Cascading Style Sheets).
Atributul BORDER (este şi el depăşit în HTML 4.0) specifică grosimea marginii
obiectului. Valoarea 0 are ca efect marginea din jurul unei legături (link) şi trebuie
folosită cu precauţie. Exemplu:
<A HREF="reference/">
<OBJECT DATA="icon/reference.gif" WIDTH=90 HEIGHT=90 BORDER=0></OBJECT>
Web Authoring Reference
</A>
Atributele HSPACE şi VSPACE (şi ele depăşite în HTML 4.0) permit sugerarea unor
spaţii goale verticale şi orizontale în jurul obiectelor a căror dimensiune este dată în
pixeli, egală pentru ambele margini. Metoda modernă este prin intermediul style-
sheet-urilor.
Obiectul OBJECT este cel mai utilizat ca un element BODY şi poate fi conţinut atît în
elemente inline cît şi în elemente de nivel bloc. Conţinutul lui OBJECT trebuie să fie
alcătuit din elementele care pot fi conţinute în părintele lui OBJECT. De exemplu un
element A conţinînd un OBJECT nu poate avea nici un element de nivel bloc ca şi
conţinut al elementului OBJECT.
2. Containere de text
P - definirea unui paragraf
DIV - definirea unei diviziuni logice de text
CENTER - definirea unei diviziuni logice de text centrat în pagină
PRE - definirea unui text preformatat
BLOCKQUOTE - definirea unui citat de dimensiuni mari
ADDRESS - definirea unui bloc cu informaţii specifice de adresă
A. Paragrafe (elementul P)
Sintaxa:
<P> Paragraful conţinut </P>
Atribute posibile:
ALIGN=[ left | center | right | justify ] (aliniere orizontală)
atribute comune
Conţine:
elemente inline
Conţinut în:
ADDRESS, APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD,
DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES,
NOSCRIPT, OBJECT, TD
Descriere:
Prima versiune HTML specifică tag-ul <P> ca tag vid (fără un corespondent </P>.
Cele mai multe navigatoare presupun că paragrafele sînt formatate de această manieră.
Cînd întîlnesc un tag <P>, încep un nou rînd, lăsînd cîteva spaţii verticale (rînduri)
libere între paragraful care tocmai s-a terminat şi cel care tocmai începe. În HTML 2.0
şi HTML 3.0, tag-ul paragraf este nevid <P>...</P>, tag-ul </P> fiind însă opţional,
dar se recomandă folosirea lui cînd se folosesc style-sheet-uri.
Chiar dacă HTMLnu specifică un mod special de prezentare pentru acest tag, autorii o
pot face, sugerînd, de exemplu, identarea paragrafului sau spaţierea prin intermediul
style-sheet-urilor. De exemplu:
P { margin-top: 0; text-indent: 5% }
<!-- Nume: Ion Ionescu, Tel: (51) 123-121, Email: ii@foo.ro -->
<DIV id="client-ionescu" class="client">
<P><SPAN class="client-titlu">Informaţii despre client:</SPAN>
<TABLE class="client-data">
<TR><TH>Nume:<TD>Ionescu</TR>
<TR><TH>Prenume:<TD>Ion</TR>
<TR><TH>Tel:<TD>(51) 123-121</TR>
<TR><TH>Email:<TD>ii@foo.ro</TR>
</TABLE>
</DIV>
<!-- Nume: Victor Popescu, Tel: (51) 123-212, Email: pv@qwe.ro -->
<DIV id="client-popescu" class="client">
<P><SPAN class="client-titlu">Informaţii despre client:</SPAN>
<TABLE class="client-data">
<TR><TH>Nume:<TD>Popescu</TR>
<TR><TH>Prenume:<TD>Victor</TR>
<TR><TH>Tel:<TD>(51) 123-212</TR>
<TR><TH>Email:<TD>pv@qwe.ro</TR>
</TABLE>
</DIV>
A. Dimensiunea fontului
Sintaxa:
<FONT> Text cu font schimbat</FONT>
Atribute posibile:
SIZE = Dimensiune (dimensiunea fontului)
COLOR = Culoarea (culoarea fontului)
FACE = Felul fontului (felul fontului/font face)
atribute core
atribute de internaţionalizare
Conţine:
elemente inline
Conţinut în:
inline elements, block-level elements, cu excepţia lui PRE
Descriere:
Tag-urile <FONT> ... < / FONT>, împreună cu atributul SIZE permit modificarea
dimensiunii fontului de bază, a cărui valoare implicită este 3 (specificată printr-o altă
extensie, şi anume <BASEFONT>, font de bază care are de asemenea atributul SIZE).
Valorile atributului SIZE sînt între 1 şi 7. Dimensiunea fontului poate fi specificată şi
relativ la fontul de bază, situaţie în care valorile lui SIZE sînt între -3 şi +4.
Acest tag, total depăşit în HTML 4.0, este folosit pentru modificări rudimentare ale
caracteristicilor fontului cu care e afişat textul. Folosirea acestuia introduce numeroase
probleme legate de accesibilitatea pe diverse platforme (care pot să nu aibă instalat un
anumit font, de exemplu), probleme ce se pot evita prin utilizarea stilurilor (style-
sheet).
Exemplu: Dimensiunile fonturilor (văzute în browsere) sînt:
FONT SIZE=1
FONT SIZE=2
FONT SIZE=3
FONT SIZE=4
FONT SIZE=5
FONT SIZE=6
FONT SIZE=7
Exemplu: Dimensiunile fonturilor (văzute în browsere) specificate relativ arată astfel:
HTML oferă mai multe mecanisme prin care să se poată defini liste de informaţii, avînd
în vedere larga utilizare a acestora. Există mai multe feluri de liste, toate avînd însă cîteva
elemente comune:
Întreaga listă este încadrată de tag-uri de început şi de sfîrşit de listă: <UL> şi
</UL>, <OL> şi </OL>, etc.
Fiecare element al listei are propriul lui tag: <DT> şi <DD> pentru listele glosar şi
<LI> pentru toate celelalte liste.
Există trei tipuri standard de liste: neordonate (UL), ordonate (OL) şi liste de definiţii
(DL). Se mai pot defini şi liste de tip MENU şi DIR (definite iniţial în 2.0) dar care sînt
acum considerate depăşite şi vor fi afişate la fel ca UL si DL.
<DL CLASS=calendar>
<DT>21 ianuarie</DT>
<DD>
Minerii din Valea Jiului prezintă <CITE>Lupta cu jandarmii</CITE> în comuna
Costeşti. Trebuie văzută.
</DD>
<DT>22 ianuarie</DT>
<DD>
Marius Tucă Show, de la 7:00 la 9:00, invitaţie la <ABBR
TITLE=Street>St.</ABBR> Ploieştului numărul 1
</DD>
</DL>
5. Definirea termenilor unei liste de definiţii (tagul DT)
Sintaxa:
<DT> Element al listei... </DT>
Atribute posibile:
atribute comune
Conţine:
elemente inline
Conţinut în:
DL
Descriere:
DT defineşte un termen într-o listă de definiţii. Tagul de sfîrşit este opţional dar se
recomandă a fi folosit pentru a preveni anumite erori cînd se folosesc stilurile (style-
sheets). DT nu poate conţine elemente de tip bloc (ca de exemplu P sau Hn). În
general tagul este urmat de un element DD pentru denirea termenului respectiv. Un
termen poate avea mai multe definiţii asociate cu el, după cum şi o singură definiţie
poate avea mai mulţi termeni.
6. Definirea definiţiei unui termen al unei liste de definiţii (tagul DD)
Sintaxa:
<DD> Element al listei... </DD>
Atribute posibile:
atribute comune
Conţine:
elemente inline şi elemente de tip bloc (bloc level)
Conţinut în:
DL
Descriere:
Elementul DD oferă definiţia unui termen dintr-o listă de definiţii. Tagul de sfirşit este
opţional dar se recomandă a fi folosit pentru a preveni anumite erori cînd se folosesc
stilurile (style-sheets). DT poate conţine elemente de tip bloc (ca de exemplu P, Hn,
TABLE sau chiar DL). Astfel listele de definiţii pot fi îmbricate.
9. Formatarea listelor
Pentru liste, navigatorul este acela care hotărăşte forma bulinelor sau schema de
numerotare. Netscape a introdus cîteva atribute prin care se oferă un mai mare control
asupra tipurilor de buline utilizate pentru marcarea elementelor din listele neordonate.
Atributul TYPE determină forma „bulinei“:
TYPE=DISC, pentru o bulină circulară, compactă (implicită)
TYPE=CIRCLE, pentru un contur circular
TYPE=SQUARE, pentru un contur de forma unui pătrat
Exemplu:
<UL>
<LI TYPE=DISC >Disc
<LI TYPE=CIRCLE>Cerc
<LI TYPE=SQUARE>Patrat
</UL>
Pentru listele ordonate, atributul TYPE are un alt set de valori care indică schema de
numărare:
TYPE=1, implicit, ordonează elementele listei prin numere arabe (1, 2, 3,...)
TYPE=A, ordonează elementele listei prin litere mari (A, B, C, ...)
TYPE=a, ordonează elementele listei prin litere mici (a, b, c, ...)
TYPE=I, ordonează elementele listei prin numere romane mari (I, II, III, ...)
TYPE=i, ordonează elementele listei prin numere romane mici (i, ii, iii, ...)
1. Ancora NUME care marchează o locaţie particulară din document ca ţintă la care pot
indica (la care se pot cupla) alte documente; atributul definitoriu este NAME (sau un
echivalent: un alt element împreună cu atributul ID).
Exemplu:
<A HREF="document.html">Text activ</A>
HREF (provenind de la Hypertext REFerence = referinţă hypertext) este atributul care
are ca valoare numele documentului HTML care va fi adus dacă textul dintre tag-uri
(afişat de navigator astfel încît să iasă în evidenţă) va fi selectat.
Exemplu:
<P><A href="#section1">Introduction</A><BR>
...
<H2 id="section1">Introduction</H2>
...section 1...
Textul „Introduction“ este un text activ care dacă este selectat are ca efect „saltul“ la
resursa identificată prin numele „section1“. Această resursă este de fapt o porţiune din
document care începe cu titlul (headerul H2) care are ca atribut id="section1".
Sintaxa:
<A>...</A>
Atribute posibile:
HREF=URI (referinţa hypertext)
NAME=CDATA (destinaţia)
REL=LinkTypes (relaţii către legătură)
REV=LinkTypes (relaţii de la legătură)
TYPE=ContentType (tipul conţinutului destinaţiei)
TARGET=FrameTarget (frame-ul în care se aduce resursa indicată de legătură)
HREFLANG=LanguageCode (limba în care e scrisă legătura)
CHARSET=Charset (setul de caractere utilizat la scrierea legăturii)
ACCESSKEY=Character (combinaţie de taste de acces / shortcut key)
TABINDEX=Number (poziţia în ordinea de parcurgere cu TAB)
SHAPE=[ rect | circle | poly | default ] (hartă senzitivă / client-side image map)
COORDS=Coords (hartă senzitivă / client-side image map)
ONFOCUS=Script (elementul a primit focusul)
ONBLUR=Script (elementul a pierdut focusul)
atribute comune
Conţine:
elemente inline, fără A
Conţinut în:
elemente de tip block-level, elemente de tip inline, fără A
Descriere:
Pentru crearea unei legături este nevoie de două lucruri:
Numele documentului / resursei la care se face legătura
Textul care va deveni activ
Marcarea textului activ în documentul iniţial (de la care porneşte legătura) se face cu
tag-ul nevid <A>...</A>. Tot textul dintre tag-ul de început (<A>) şi cel de sfîrşit
(</A>) va deveni capătul legăturii afişat pe ecran şi va fi prezentat de navigator altfel
decît textul obişnuit. <A> (numită şi tag-ul ancoră) include şi informaţii suplimentare
despre legătură (atribute). Navigatorul utilizează ancora pointer dintr-un document
pentru a găsi cel de-al doilea document. Pentru a identifica ancorele pointer se
marchează o porţiune de text (sau o imagine) astfel încît navigatorul să le deosebească
de restul documentului.
Atributul HREF (de la Hypertext REFerence) este utilizat pentru specificarea URI-
ului documentului ţintă. Este de fapt modul de localizare a documentului care va fi
adus la selectarea textului activ. Atributul suplimentar TYPE poate fi folosit pentru a
indica tipul (în categorisirea Internet) a resursei către care se indică, permiţînd
browserelor care nu pot interpreta (afişa) un anumit tip de resurse să nu le mai încarce.
Acest atribut specifică legăturile către resursele Internet în concordanţă cu diverse
protocoale de acces a acestora, protocoale specificate, ca parte integrantă din URI.
Cele mai utilizate protocoale:
HTTP:// - legătură la un alt document HTML
FTP:// - legătură (anonimă) la un server FTP
MAILTO:// - se activează editorul de e-mail pentru a se compune un mesaj şi a
se trimite la adresa specificată
TELNET:// - legătură la o adresă Telnet
WAIS:// - legătură la un server de indexare WAIS
USENET:// - legătură la o adresă Usenet
GOPHER:// - legătură la un server Gopher
Atributul opţional TITLE indică titlul documentului către care punctează legătura (o
scurtă descriere a acesteia) şi poate fi astfel afişat împreună cu URL-ul (sub forma
unui tool-tip). Uneori, dacă legătura este de tip „mailto“, valoarea acestui atribut e
folosită ca subiect al e-mail-ului care se va trimite.
Atributul NAME defineşte o destinaţie pentru o legătură. De exemplu, un document
ce conţine:
<H1><A NAME=foo>My Heading</A></H1>
defineşte o destinaţie pentru legături numită „foo“. Se poate astfel folosi
HREF="#foo" într-un element A din acelaşi document, sau
HREF="somedoc.html#foo", din alt document.
Un element A nu poate conţine un alt element A, astfel că trebuie avut în vedere că
ancorele ce definesc nume de secţiuni NU pot conţine ancore care indică legături. Dar
se pot utiliza atît NAME cît şi HREF într-un singur element A pentru a se evita aceste
probleme.
ID este atributul care înlocuieşte atributul NAME şi care poate fi folosit cu aproape
orice element pentru a defini o destinaţie. Exemplul anterior poate fi scris:
<H1 ID=foo>My heading</H1>
Nu toate browserele oferă suport însă pentru ID, astfel că NAME se mai păstrează
încă. Atît NAME cît şi ID trebuie să fie unice într-un document şi să difere şi prin
altceva în afara literelor mici/mari. Valorile admise trebuie să înceapă cu o literă din
intervalul A-Z sau a-z şi trebuie să urmeze numai caracterele A-Z, a-z, 0-9, liniuţa de
despărţire, de subliniere, virgula, punctul. Cînd este folosit ca şi destinaţie a unei
legături, numele astfel definit este case sensitive (literele mari/mici diferă).
Atributele REL şi REV indică relaţiile între o ancoră şi resursa indicată de legătură.
REL defineşte o relaţie de la documentul curent la cel indicat de legătură, în timp ce
REV defineşte o relaţie în sensul opus. De exemplu:
<A HREF="foo.html" REL=glossary>...</A>
indică faptul că foo.html este glosar pentru documentul curent, în timp ce
<A HREF="bar.html" REV=subsection>...</A>
indică faptul că documentul curent este o subsecţiune a lui bar.html.
Atributul TARGET indică în ce frame să se încarce resursa indicată de legătură. Dacă
nu există un astfel de frame (cadru-pagină) se va deschide o feeastră nouă. Se pot
folosi şi nume speciale (care încep cu o liniuţă de subliniere) de frame-uri:
_blank – fereastră nouă
_self – în fereastra curentă (utilă pentru suprapunerea unui atribut BASE TARGET)
_parent – în părintele frame-ului din frameset
_top – în întreaga fereastră, fără frame-uri
Atributele SHAPE şi COORDS oferă posibilitatea utilizatorului să specifice o hartă
de imagini senzitive (client-side image maps, prin intermediul elementului OBJECT),
adică un număr oarecare de zone în interiorul unei imagini şi un set de
documente/resurse către care să indice fiecare zonă anterior definită. Valoarea
implicită pentru SHAPE este rect, care defineşte o regiune dreptunghiulară folosind
COORDS="left, top, right, bottom". Alte valori posibile:
circle – specifică un cerc; se utilizează: COORDS="center-x, center-y, radius";
poly – specifică un poligon; se utilizează: COORDS="x1, y1, x2, y2, ..., xN, yN".
default – specifică întreaga imagine (ce a rămas eventual nedefinită);
Coordonatele sînt relativ la colţul stînga sus al imaginii şi pot fi exprimate în pixeli sau
procente. O rază a unui cerc dată ca procent este calculată relativ la cea mai mica
dimensiune a imaginii/obiectului (lăţimea sau înălţimea). Dacă două sau mai multe
regiuni se suprapun are prioritate cea definită întîi.
Exemple:
<A HREF="album.html">My photo album</A>
<A HREF="../images/me.jpg">Picture of me</A>
<A HREF="/sounds/song.mid" TYPE="audio/midi" ACCESSKEY=A>Cintecel (5 kB MIDI)</A>
<A HREF="section2.html" TARGET="content" TITLE="Elements of the HEAD"
REL=next>Section 2</A>
<A HREF="mailto:lp@lp.com" TITLE="Feedback on Document">lp@lp.com</A>
<A HREF="http://www.lp.com/" TARGET="_top">Web Design</A>
<A HREF="http://babel.alis.com:8080/langues/iso639.zh.htm" CHARSET="big5"
HREFLANG=zh>ISO 639</A>
Legăturile se pot face la documente locale (care rezidă pe acelaşi server (dar nu neapărat
în acelaşi director), la documente aflate pe alte servere (legături îndepărtate) sau intern
(în interiorul unui document; acelaşi în cazul în care documentul este mare şi se doreşte
un salt pînă la o secţiune a sa, sau o secţiune a unui alt document, atunci cînd se doreşte o
indicare mai rafinată a părţii din resursa-document ce se referă).
1. Legături locale
Legăturile locale se fac utilizînd căi (referinţe) relative sau absolute.
A. Referinţe absolute
Cea mai simplă legătură se realizează precizînd calea relativă a documentului. Selectarea
unei legături fără specificarea nici unui alt element suplimentar de localizare, determină
serverul să caute documentul solicitat în acelaşi folder ca şi documentul în care a început
legătura.
Căile relative pot include directoare sau pot indica o cale pe care trebuie să o urmăm
pentru a naviga la documentul ţintă, pornind de la documentul pointer (de start). O cale
poate include şi direcţii, cum ar fi, de exemplu, coboară două directoare spre rădăcină şi
apoi mergi în sus două directoare pentru a găsi documentul.
Specificarea căilor relative în legături se face ca în Unix, indiferent de sistemul pe care
este găzduită pagina/paginile HTML. Asta înseamnă că numele de directoare sau foldere
sînt separate de slash-uri (/) şi referirea la directorul părinte se face cu două puncte (..).
Iată un tabel cu referirea relativă a documentelor:
Cale Semnificaţie
HREF="doc.html" doc.html se găseşte în directorul curent
HREF="dir/doc.html" doc.html este localizat în folderul (directorul) dir
HREF="dir/subdir/doc.html" doc.html se află în directorul dir, subdirectorul
subdir
HREF="../doc.html" doc.html se găseşte într-un director aflat cu un nivel
mai sus decît directorul curent
HREF="../../subdir/doc. doc.html se găseşte într-un director aflat cu două
html" nivele mai sus, în directorul subdir
Pe Macintosh, numele discului este chiar cel care apare pe disc. De pildă, dacă există un
disc numit ServerWWW şi documentele HTML se găsesc într-un folder numit
SiteWWW, referirea relativă la acele documente se va face de forma:
HREF="ServerWWW/SiteWWW/nume_document.html
Pe sistemele care rulează Win/DOS, discurile sînt referite în mod obişnuit, cu ajutorul
literelor, numai că cele două puncte verticale (c:) sînt înlocuite de o bară verticală (c|).
Cele două puncte verticale au o altă semnificaţie, anume în specificarea legăturilor. Deci,
dacă fişierul se află în directorul c:\nume_director\document.html, şi se face o referinţă la
documentul aflat în d:\alt_director\subdirector\ţintă.html referinţa la el se va face de
forma:
HREF="../d|/alt_director/subdirector/ţintă.html.
B. Referinţe absolute
Referinţele relative localizează un document ţintă specificînd poziţia acestuia (calea
relativă) în raport cu documentul pointer (de la care porneşte legătura). Referinţele
absolute localizează documentele specificînd directorul de cel mai înalt nivel şi toată
calea pînă la document. Referinţele absolute încep întotdeauna cu un slash (/) urmat de
succesiunea directoarelor pînă la documentul la care faceţi referinţă.
Iată un tabel cu referirea absolută a documentelor:
Cale Semnificaţie
HREF="/home/pub/doc.html" doc.html se găseşte în directorul /home/pub
HREF="/c|/pub/doc.html" doc.html este localizat pe discul c: în directorul
/pub
HREF="/Server/Site/doc.html" doc.html se află pe discul Server, în folderul Site
(Macintosh)
Ori de cîte ori este posibil trebuie folosite referinţele relative deoarece cele absolute nu
sînt portabile. Specificarea relativă a localizării documentelor permite menţinerea uşoară
şi mutarea documentelor HTML de pe un sistem pe altul (sau dintr-un loc în altul chiar pe
acelaşi sistem) fără modificări majore în surse.
2. Legături îndepărtate
Marcarea documentelor HTML pentru legături îndepărtate se face asemănător cu
marcarea în cazul referinţelor la documente locale. Tag-ul de început este <A> şi cel de
sfîrşit </A>. Textul dintre tag-uri va fi afişat diferit faţă de restul documentului pentru a
arăta că este selectabil. Referinţa hypertext (HREF) va conţine însă URL-ul
documentului, de forma:
<A HREF="http://www.w3.org/">The World Wide Web Consortium</A>
3. Legături interne (către secţiunile unui document/resursă)
Ideea este de a realiza o legătură nu numai între un anumit punct al unui document şi un
alt document ci una ceva mai exactă, între un anumit punct al unui document şi un alt
anumit punct al aceluiaşi document sau al altuia. Acest lucru se realizează prin crearea
unei ancore în locul din document unde dorim să ne conducă legătura şi apoi în realizarea
unei legături care va indica atît documentul referit cît şi paragraful (sau secţiunea de
document) la care facem referire.
Crearea unei ancore se face în aproape acelaşi fel ca şi crearea unei legături, utilizînd tag-
ul <A> numai că de această dată îi este asociat un alt atribut: NAME. Atributul va avea
ca valoare un anumit cuvînt (sau grup de cuvinte) care vor fi folosite pentru a face
referinţă la această anumită secţiune.
Exemplu: <A NAME="cuvînt_cheie">Paragraf ţintă</A>
Atunci cînd se va face referinţă la această ancoră, documentul ţintă va fi derulat de către
navigator pînă cînd textul dintre <A> şi </A> va ajunge în partea de sus a ecranului. Spre
deosebire de legături, ancorele nu sînt afişate diferit faţă de restul documentului în
documentul ţintă.
Referirea la o ancoră în documentul pointer (documentul de la care porneşte legătura) se
face în acelaşi fel ca şi cînd ar fi referit un document întreg (cu URL-ul documentului ca
valoare a atributului HREF) şi prin includerea numelui ancorei, precedat de semnul #.
Exemplu:
<A HREF="/cale/doc.html#cuvint cheie">Salt la paragraful ţintă</A>
Legătura cere navigatorului să încarce documentul doc.html a cărui cale este precizată în
HREF şi să deruleze doc.html pînă cînd „Paragraf_ţintă“ ajunge în partea de sus a
ecranului.
Ancorele pot fi create chiar în acelaşi document în care se găsesc şi legăturile în ideea de
a uşura navigarea printr-un document mai mare. În acest caz, valoarea atributului HREF
este chiar cuvîntul cheie. De pildă în cazul unui singur document organizat pe secţiuni,
cuprinsul poate fi prezentat la începutul documentului şi poate avea legături care
punctează spre diferitele secţiuni. Tot ce avem de făcut este să dăm nume ancorelor şi
apoi să le referim în legături.
Exemple:
1. Inserarea unei imagini şi specificarea unui text (alternativ) care să se afişeze dacă nu
se poate afişa imaginea sau ca „explicaţie“ (tooltip) cînd se pune cursorul mouse-ului
pe ea, se poate face cu secvenţa:
<P>
<IMG SRC="bear.jpg" WIDTH="201" HEIGHT="132" BORDER=0 ALT="A big, brown
bear">
Şi are ca efect inserarea în pagină a unei imagini, de exemplu ca cea de mai jos:
2. left: Noua linie va începe în prima poziţie disponibilă SUB obiectul flotant, la
marginea din stînga. În acest caz, pentru situaţia din figura de mai sus, noua linie
(marcată cu semne +) va începe sub imagine, de la marginea din stînga:
********* -------
| | -------
| image | --<BR clear="left">
| |
*********
++++++++++++++++++
3. right: Noua linie va începe în prima poziţie disponibilă SUB obiectul flotant, la
marginea din dreapta.
4. all: Noua linie va începe în prima poziţie disponibilă SUB obiectul flotant, la
oricare margine. În acest caz, pentru situaţia din figura de mai sus, noua linie
(marcată cu semne +) va începe asemănător situaţiei clear=left:
********* -------
| | -------
| image | --<BR clear="all">
| |
*********
++++++++++++++++++
Tabelul indică faptul că fiecare tip de resursă ce poate fi inclusă are o soluţie specifică şi
o soluţie generală. Elementul generic OBJECT va servi şi ca soluţie pentru
implementarea altor tipuri.
Sintaxa:
<OBJECT>...</OBJECT>
Atribute posibile:
DATA=URI (adresa de unde se încarcă datele obiectului)
CLASSID=URI (locaţia implementării)
ARCHIVE=CDATA (fişierele archivă)
CODEBASE=URI (adresa de bază pentru CLASSID, DATA, ARCHIVE)
WIDTH=Length (lăţimea obiectului)
HEIGHT=Length (înălţimea obiectului)
NAME=CDATA (numele folosit la trimiterea unui formular)
USEMAP=URI (client-side image map)
TYPE=ContentType (tipul obiectului)
CODETYPE=ContentType (tipul codului)
STANDBY=Text (mesajul ce se va afişa în timpul încărcării)
TABINDEX=NUMBER (poziţia în ordinea de parcurgere cu Tab)
DECLARE (obiectul nu se instanţiază)
ALIGN=[ top | middle | bottom | left | right ] (alinierea obiectului)
BORDER=Length (grosimea marginii)
HSPACE=Pixels (spaţiu lăsat orizontal)
VSPACE=Pixels (spaţiu lăsat vertical)
atribute comune
Conţine:
elemente PARAM urmate de elemente de tip bloc şi/sau elemente de tip inline
Conţinut în:
HEAD, elemente de tip inline, elemente de tip bloc, cu excepţia lui PRE
Descriere:
OBJECT intenţionează să înlocuiască tagurile specifice IMG şi APPLET, precum şi
tagurile „proprietare“ EMBED şi BGSOUND (definite de anumite browsere şi
suportate doar de ele!) care produc multe neajunsuri şi erori. Cu el se includ imagini,
clipuri video, appleturi Java, elemente VRML.
Aproape toate atributele tag-ului <IMG> se pot folosi şi cu <OBJECT>. Modul de
utilizare este identic. O descriere mai amănunţită este prezentată într-un paragraf
anterior.
4.5. Imagini senzitive
Imaginile senzitive permit specificarea unor regiuni ale unei imagini (sau obiect, mai
general) cărora să li se asocieze o acţiune specifică (de exemplu încărcarea unei resurse,
lansarea unui program, etc). Cînd regiunea este activată de utilizator se execută acţiunea
respectivă. O imagine senzitivă este creată prin asocierea unui obiect cu o specificaţie a
zonelor suprafeţei obiectului respectiv. Există două tipuri de imagini senzitive:
Client-side. Cînd utilizatorul activează o regiune a unei imagini senzitive de acest
tip cu mouse-ul coordonatele punctului respectiv (în pixeli) sînt interpretate de
către agentul utilizatorului (browserul acestuia). Navigatorul selectează o legătură
ce a fost specificată pentru regiunea activată şi o urmează.
Server-side. Cînd utilizatorul activează o regiune a unei imagini senzitive de acest
tip cu mouse-ul coordonatele punctului respectiv (în pixeli) sînt trimise agentului
serverului (programului de pe server) şi care e specificat de atributul HREF al
elementului A. Programul de pe server este cel care interpretează aceste
coordonate şi realizează o anumită acţiune.
De obicei sînt preferate imaginile senzitive client în faţa celor de tip server-side din două
motive: sînt accesibile şi celor ce folosesc browsere fără facilităţi grafice şi oferă un feed-
back imediat, indiferent dacă se pointează într-o zonă activă sau nu.
1. Imagini senzitive client-side
Acest tip de imagini senzitive realizează senzitivitatea imaginii prin legături în textul care
însoţeşte figura şi care desemnează zonele active din figură. Această metodă nu numai că
este mult mai rapidă decît cea care implică programe care rulează pe server, dar permite
şi ceva ce varianta cu imagini senzitive de tip sever-side nu putea realiza: utilizarea
figurilor senzitive şi în navigatoarele care lucrează în mod text deoarece textul care
descrie figura este cel care defineşte maparea figurii.
Imaginea senzitivă de tip client-side poate fi definită cu unul dintre elementele IMG,
OBJECT sau INPUT. Cu aceasta se asociază o hartă de legături ce se defineşte cu
elementul MAP. Legătura dintre cele două componenete se realizează prin intermediul
atributului USEMAP al elementului cu care se defineşte imaginea senzitivă.
Prezenţa atributului USEMAP la definirea unui obiect (cu OBJECT) impune ca obiectul
respectiv (ce este inclus) să fie o imagine. Mai mult, cînd acesta are o hartă asociată cu el,
browserele trebuie să implementeze acţiunea cu obiectul respectiv exclusiv în termenii
imaginii senzitive, putînd fi chiar omisă încărcarea sau procesarea conţinutului propriu-
zis al acestuia (dacă nu poate fi făcută de browserul respectiv). Fiecare element MAP
poate conţine cel puţin unul dintre următoarele elemente:
1. Unul sau mai multe elemente AREA. Acestea nu au conţinut dar specifică regiunile
geometrice ale hărţii asociate cu imaginea şi legăturile asociate cu fiecare regiune în
parte. De notat că atunci cînd această metodă este folosită elementul MAP nu afişează
nimic. Autorii trebuie să ofere un text alternativ pentru fiecare porţiune definită cu
AREA, utilizînd atributul ALT.
2. Conţinut de tip bloc (block-level). Acesta va include elemente A ce specifică
regiunile geometrice ale hărţii şi legăturile asociate cu fiecare regiune în parte. De
notat că atunci cînd se foloseşte această metodă elementul MAP poate fi afişat de
browser, rezultînd o metodă de creare a unor documente mai accesibile decît cea
descrisă anterior.
Dacă două sau mai multe regiuni se suprapun, elementul definit în regiunea ce apar mai
devreme în document este cel luat în consideraţie.
A. Elementul MAP
Sintaxa:
<MAP>...</MAP>
Atribute posibile:
NAME=CDATA (numele hărţii)
atribute comune
Conţine:
Unul sau mai multe elemente AREA, sau unul sau mai multe elemente de tip
bloc
Conţinut în:
elemente de tip inline, elemente de tip bloc (block-level)
Descriere:
Acest element defineşte o imagine senzitivă de tip client-side pentru a fi utilizată cu un
element IMG sau OBJECT. Atributul NAME este folosit ca ancoră pentru atributul
USEMAP al elementelor IMG sau OBJECT. În timp ce MAP poate defini imagini
senzitive incluse în alte fişiere, browserele suportă de obicei numai imagini care au
definită harta de legături cu MAP doar în acelaşi fişier cu imaginea. Iniţial MAP a fost
definit să aibă asociat unul sau mai multe elemente AREA care să specifice
coordonatele unei regiuni active (clicabile).
HTML 4.0 extinde acest element astfel încît să poată avea ca atribute unul sau mai
multe elemente de tip bloc ca o alternativă la utilizarea elementelor de tip AREA.
Combinate cu OBJECT acestea permit o alternativă cu conţinut mai bogat la imagini.
Dar nu toate browserele suportă acestea variantă (cu OBJECT), astfel că varianta cu
IMG este mult mai sigură. Cînd MAP se foloseşte cu OBJECT, conţinutul acesteia nu
este afişat de browser.
B. Elementul AREA
Sintaxa:
<AREA>
Atribute posibile:
SHAPE = [ rect | circle | poly | default ] (forma regiunii)
COORDS=Coords (coordonatele regiunii)
HREF=URI (resursa indicată de legătură)
TARGET=FrameTarget (frame-ul în care se încarcă legătura)
NOHREF (regiune inactivă)
ALT=Text (text alternativ)
TABINDEX=Number (poziţia în ordinea de parcurgere cu TAB-ul)
ONFOCUS=Script (regiunea a primit focusul)
ONBLUR=Script (regiunea a pierdut focusul)
atribute comune
Conţine:
nimic
Conţinut în:
elementul MAP
Descriere:
Acest element defineşte o regiune într-o imagine senzitivă. Fiecare regiune este o
bucată de imagine care are asociată a altă acţiune cînd se face clic cu mouse-ul pe ea.
Atributele SHAPE şi COORDS specifică partea din imagine ce este inclusă în acea
regiune. Valoarea implicită este „rect“ care defineşte un dreptunghi folosind
COORDS="left, top, right, bottom". Alte valori ale lzui SHAPE:
default, specifică toată imaginea;
circle, specifică o regiune circulară folosind COORDS="center-x, center-y,
radius";
poly, specifică o regiune poligonală folosind COORDS="x1, y1, x2, y2, ..., xN, yN".
Valorile coordonatelor sînt relative la colţul stînga-sus şi sînt exprimate în pixeli sau
procente.
Atributul HREF specifică o legătură la o altă resursă (ca de exemplu un document
HTML sau o imagine JPEG). TITLE poate fi folosit pentru a descrie pe scurt
conţinutul legăturii şi se foloseşte ca „tool-tip“. Atributul boolean NOHREF indică
faptul că regiunea respectivă nu are legătură asociată.
Atributul ALT oferă text alternativ pentru cazul în care nu se încarcă imaginea. Se
recomandă ca acesta să descrie funcţia şi nu regiunea.
Atributul TARGET este folosit cu frame-uri pentru a indica în ce frame se încarcă
resursa indicată de legătură. Dacă numele indicat nu există se va folosi o fereastră
nouă. Numele speciale de frame-uri încep cu underscore (liniuţa de subliniere):
_blank, indică fereastră nouă
_self, indică frame-ul curent
_parent, indică frame-ul parinte al celui curent
_top, indică o fereastră nouă, fără frame-uri
Atributul ACCESSKEY specifică un caracter unic UNICODE folosit ca tastă de
activare (shortcut) pentru urmărirea legăturii. TABINDEX specifică un număr între 0
şi 32767 care indică ordinea de parcurgere cu tasta TAB. O regiune cu
TABINDEX=0 sau fără TABINDEX va fi vizitată după toate elementele cu o valoare
pozitivă a acestui atribut. Cu cît valoarea pozitivă este mai mică cu atît regiunea va fi
vizitată mai devreme. În caz de ambiguitate elementul ce apare mai întîi în document
are prioritate.
AREA acdeptă în plus faţă de evenimentele uzuale (core) acceptate de majoritatea
elementelor şi atribute folosite de scripturile client:
ONFOCUS, ce apare cînd regiunea primeşte focusul;
ONBLUR, ce apare cînd regiunea pierde focusul.
Exemplu:
Acest exemplu defineşte o hartă numită „mymap“ ale cărei zone active (3) sînt
dreptunghiuri care indică spre trei adrese diferite, fiecare avînd şi alternative pentru
cazul cînd imaginea nu este încărcată:
<MAP NAME=mymap>
<AREA HREF="/reference/" ALT="HTML and CSS Reference" COORDS="5,5,95,195">
<AREA HREF="/design/" ALT="Design Guide" COORDS="105,5,195,195">
<AREA HREF="/tools/" ALT="Tools" COORDS="205,5,295,195">
</MAP>
HEIGHT=200>
<OBJECT DATA="sitemap.gif" USEMAP="#map" TYPE="image/gif" TITLE="Site map"
WIDTH=300
HEIGHT=200>
<MAP NAME=map>
<UL>
<LI><A HREF="/reference/" COORDS="5,5,95,195"> HTML and CSS
Reference </A></LI>
<LI><A HREF="/design/" COORDS="105,5,195,195"> Design Guide
</A></LI>
<LI><A HREF="/tools/index.html" COORDS="205,5,295,195"> Tools
</A></LI>
</UL>
</MAP>
</OBJECT>
</OBJECT>
În acest mod, maparea figurii (şi transformarea ei într-o imagine senzitivă) se realizează
în următorii paşi:
a). Definirea legăturilor
Exemplu: Pentru o bară de butoane:
<UL>
<LI><A HREF=" Editorial.html">Editorial</A>
<LI><A HREF=" Index.html">Index</A>
<LI><A HREF=" Presa.html">Presa</A>
<LI><A HREF=" Oaspeţi.html">Oaspeţi</A>
</UL>
B. Maparea imaginii
Procesul de mapare înseamnă alegerea regiunilor active şi a fişierelor (sau documentelor
HTML) apelate, găsirea coordonatelor regiunilor desemnate şi scrierea fişierului de
mapare (poza.map, în cazul nostru). Forma fişierului de mapare depinde de scriptul CGI
utilizat de server.
Pentru serverul CERN fişierul arată de forma:
default URL
circle (x,y) r URL
rectangle (x,y) (x,y) URL
polygon (xl,yl) (x2,y2) ... (xn,yn) URL
Pentru serverul NCSA fişierul va fi de forma:
default URL
circle URL x,y r
rectangle URL x,y x,y
polygon URL xl,yl x2,y2 ... xn,yn
point URL x,y
Semnificaţia este:
pentru cerc: coordonatele centrului şi raza (m pixeli)
pentru dreptunghi: colţul stînga sus şi dreapta jos
pentru poligon: coordonatele fiecărui nod
pentru puncte: coordonatele punctelor
Originea sistemului de coordonate (0,0) se află în colţul din stînga sus al imaginii iar
direcţia pozitivă a axei Oy este în jos.
Exemplu:
default /diropt/fisopt1.html default
rect (16,65) (122,100) /diropt/fisopt2.html
rect (319,68) (431,98) /diropt/fisopt3.html
poly (92,158) (149,85) (302,90) (375,156) (95,154) /diropt/fisopt4.html
Observaţii:
1. URL-ul implicit (default) este utilizat ori de cîte ori mouse-ul activează o regiune care
nu trimite spre un anumit document (în acest caz unul dintre dreptunghiuri sau
regiunea trapezoidală).
2. Ordinea regiunilor din fişierul de mapare contează. Dacă de pildă două regiuni
selectate se suprapun parţial (sau total) regiunea menţionată mai la începutul fişierului
are prioritate la activare.
3. Punctele (în mapările NCSA) permit specificarea faptului că un clic care nu cade
direct pe o anumită regiune, va activa cel mai apropiat punct definit în fişierul de
mapare care apare pe imagine. Includerea opţiunii default într-un fişier pentru
serverul NCSA presupune că nu veţi introduce nici un punct activ deoarece existenţa
unui asemenea punct inhibă opţiunea default.
Maparea imaginii se poate face fie manual, încărcînd imaginea într-un program care să
permită notarea coordonatelor zonelor de interes, fie automat, utilizînd unul din
produsele care permit desenarea regiunilor selectate cu ajutorul mouse-ului. Programe de
acest tip: Mapedit (sub Windows) HotSpots for Windows, WebMap for Macintosh sau
Mapedit (pentru X). Toate permit salvarea fişierului .map fie în format CERN fie în
format NCSA.
C. Script-ul
Mai întîi scriptul (programul) pentru maparea imaginilor trebuie să fie instalat în
directorul cgi-bin (htimage pentru CERN sau imagemap pentru NCSA) şi apoi fişierul
poza.map (creat anterior) trebuie depus într-un director (să zicem maps) aflat la acelaşi
nivel cu cgi-bin. Legătura între scriptul htimage şi fişierul de mapare a imaginii se face
ataşînd calea către acesta din urmă imediat după numele scriptului (htimage).
Exemplu:
<a href="http://www.comp-craiova.ro/cgi-bin/htimage/maps/poza.map"> <img src="logo.jpg"
ISMAP> </a>
Activarea unei zone a imaginii senzitive înseamnă transmiterea către script a
coordonatelor punctului activat. Coordonatele sînt exprimate ca valori (în pixeli) relative
la colţul stînga-sus al imaginii. Modalitatea prin care se transmit aceste coordonate este
urmatoarea: se deriveză o nouă adresă (URI) din cea specificată de atributul href a
elementului A prin adăugarea caracterului ? urmat de coordonatele x şi z, separate de
virgulă. Legătura care se urmează este dată de această nouă adresă. De exemplu, dacă
pentru imaginea senzitivă definită astfel:
<A href="http://www.acme.com/cgi-bin/competition"> <IMG src="game.gif" ismap alt="target">
</A>
se face click în punctul de coordonate x=10, y=27, noua adresă derivată ce va fi folosită
pentru navigare va fi: „http://www.acme.com/cgi-bin/competition?10,27“
4.6. Alte elemente legate de text şi imagini
Exemplu:
<body bgcolor="#fffff0" text="#000000" link="#00009c" vlink="#ffffca" alink="#ffff00">
Se pot obţine efecte de culoare cu o succesiune de tag-uri de forma:
<BODY BGCOLOR="diverse_coduri de culoare">
care determină schimbarea dinamică a culorii fundalului. Utilizate insistent, aceste efecte
simple (ieftine) pot deveni iritante pentru vizitator.
Capitolul 5.
Utilizarea tabelelor în limbajul HTML
Din elementele noi introduse de HTML 3.0, tabelele reprezintă primul care a ajuns pe
Web. Ele sînt suportate de Netscape Navigator, începînd cu versiunea 1.1, iar de către
Microsoft Internet Explorer, începînd cu versiunea 2.0.
Utilizarea fundamentală a tabelelor este aceeaşi cu a celorlalte forme de comunicare:
tabelele se folosesc pentru a afişa informaţii în două dimensiuni şi nu liniar, adică
informaţia este mai sugestivă dacă este prezentată sub forma unei matrici cu rînduri şi
coloane.
În afara acestei utilizări, pînă la apariţia style-sheet-urilor, tabelele se utilizau (în unele
cazuri) şi pentru a produce efecte speciale, cum ar fi: poziţionări în pagină ale textului sau
al imaginilor grafice, poziţionări pe rînd ale imaginilor, poziţionări ale elementelor
grafice în interiorul textului, etc. Avînd în vedere că pot apare probleme în aceste cazuri
(la browserele non-vizuale sau cînd paginile sînt proiectate pentru displayuri mai mari
decît cel pe care este afişat ori cînd fontul utilizat la vizualizare diferă ca mărime de cel
presupus la proiectare), pentru a le minimiza, se recomandă în HTML 4.0 folosirea style-
sheet-urilor pentru controlul aranjării în pagină (controlul layout-ului)
Elementele luate în consideraţie de HTML 4.0 pentru codarea tabelelor sînt:
Explicaţia (elementul CAPTION), care oferă o scurtă descriere a conţinutul
tabelului. Se poate oferi şi o descriere mai largă (prin intermediul atributului
SUMMARY) pentru cazul cînd browserul este utilizat de persoane care folosesc
alfabetul Braille sau este un browser ce sintetizează voce
Rîndurile tabelului care pot fi grupate în secţiuni de antet/head, explicaţii/footer şi
corp/body (prin intermediul elementelor THEAD, TFOOT şi respectiv TBODY).
Grupurile de rînduri oferă informaţie structurală suplimentară şi pot fi utilizate de
browsere astfel încît să sugereze mai bine structura tabelului, de exemplu
permiţînd deplasarea (scroll) individuală a acestor secţiuni sau repetînd informaţia
cuprinsă în header şi/sau footer pe fiecare pagină (eventual tipărită) a unor tabele
mai lungi.
Grupuri de coloane (care oferă informaţie structurală suplimentară) pot fi definite
la începutul definiţiei unui tabel (prin intermediul elementelor COLGRUP şi
COL), dînd posibilitatea browserelor să afişeze tabelele incremental, fără a mai fi
nevoite să aştepte tot conţinutul tabelului pentru a-l afişa.
Capul de tabel (elementul TH), atît în cazul că este aşezat pe rînd cît şi în cazul
aşezării pe coloană, va fi scos în evidenţă faţă de restul tabelului.
Celulele tabelului (elementul TD), adică dreptunghiurile individuale. Acestea se
pot întinde pe mai multe rînduri şi/sau coloane. HTML 4.0 permite ataşarea unei
etichete fiecărei celule astfel încît browserele non-vizuale să poată comunica mai
uşor informaţia din celulă.
Datele din tabel, adică valorile înscrise în celulele tabelului. Specificaţiile HTML
4.0 permit ca în celulele tabelelor să fie introdus orice element HTML: text simplu,
text (pre)formatat, imagini, legături, formulare, alte tabele, etc.
1. Descrierea tabelelor (elementul TABLE)
Descrierea unui tabel se face cu elementul TABLE. Acesta conţine toate elementele ce
specifică titlul, rîndurile, conţinutul şi formatul acestora.
Tabelele sînt specificate în HTML rînd cu rînd, fiecare rînd conţinînd definiţii pentru
fiecare din celulele care îl formează. Prin urmare, pentru a defini un tabel se începe prin a
defini rîndul din partea de sus, celulă cu celulă, apoi se defineşte al doilea rînd, celulă cu
celulă ş.a.m.d. Coloanele sînt calculate automat pe baza numărului de celule care sînt în
fiecare rînd. Perechea <TR>...</TR> defineşte începutul, respectiv sfîrşitul rîndului,
perechea <TH>...</TH> defineşte o celulă cap de tabel pe acest rînd, iar perechea
<TD>...</TD> defineşte o celulă de date din rînd.
Exemplu:
<TABLE>
<TR>
<TH>Cap de tabel</TH>
<TD>Celula 1-1</TD>
<TD>Celula 1-2</TD>
<TD>Celula 1-3</TD>
</TR>
</TABLE>
De remarcat că forma de scriere a codului HTML de mai sus are în vedere doar uşurarea
înţelegerii codului de la o primă privire. Marea majoritate a navigatoarelor ignoră spaţiile
libere şi caracterul <CR>. O excepţie totuşi: atunci cînd inseraţi o imagine într-una din
celulele tabelului, pentru a obţine plasarea corectă a imaginii în toate browserele, se
recomandă punerea tag-urile în acelaşi rînd.
Exemplu:
<TD><IMG SRC="A.GIF"></TD>
La afişarea unui tabel, un browser trebuie să realizeze următoarele operaţii:
să facă disponibil sumarul (definit cu summary) utilizatorului
să afişeze titlul (explicaţia) tabelului
să afişeze antetul/headerul tabelului, apoi footerul, dacă sînt specificate. Locul în
care apar sînt bine definite (de exemplu la începutul/sfîrşitul fiecărei pagini
listate)
să calculeze numărul de coloane din tabel. Numărul de rînduri se stabileşte simplu:
numărul de elemente TR conţinute de TABLE.
să grupeze coloanele în conformitate cu specificaţiile de grupare a coloanelor
să afişeze celulele rînd după rînd, grupate în coloanele corespunzătoare, între
header şi footer. Browserele vizuale formatează tabelul utulizînd atributele şi
specificaţiile de stil (style-sheet).
În acest fel, modelul de tabel din HTML 4.0 este proiectat astfel încît afişarea acestora să
se facă incremental, pe măsură ce rîndurile tabelului sosesc, fără a aştepta încărcarea
completă.
Elementul TABLE
Sintaxa:
<TABLE> ...</TABLE>
Atribute posibile:
SUMMARY=Text (descrierea pe larg a conţinutului şi structurii tabelului)
WIDTH=Length (lăţimea tabelului)
BORDER=Pixels (lăţimea marginii tabelului)
FRAME=[ void | above | below | hsides | lhs | rhs | vsides | box | border ]
(margini externe)
RULES=[ none | groups | rows | cols | all ] (margini interne)
CELLSPACING=Length (spaţierea între celule)
CELLPADDING=Length (spaţierea în interiorul celulelor)
ALIGN=[ left | center | right ] (alinierea tabelului)
BGCOLOR=Color (culoarea de background a tabelului)
atribute comune
Conţine:
Un element opţional CAPTION, urmat de zero sau mai multe elemente COL şi
COLGROUP, urmat de un element opţional THEAD, un element opţional
TFOOT, şi apoi un element sau mai 7multe elemente opţionale TBODY.
Conţinut în:
APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV,
FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT,
OBJECT, TD, TH
Descriere:
Orice tabel începe cu tag-ul: <TABLE> şi se termină cu </TABLE>, între ele fiind
conţinutul tabelului propriu-zis care poate conţine o explicaţie cu <CAPTION> şi, în
esenţă, un număr oarecare de rînduri definite în principal cu <TR>.
CAPTION poate fi urmat, opţional, de elemente COL şi COLGROUP care specifică
lăţimea coloanelor şi modul de grupare al acestora. Apoi urmează THEAD, TFOOT şi
TBODY care definesc grupurile de rînduri. Un grup de rînduri conţine elemente TR ce
definesc rîndurile individual, care, la rîndul lor, conţin elemente TH sau TD pentru
celulele header sau de date.
Într-un tabel definit cu TABLE este necesar cel puţin un element TBODY, dar ambele
taguri de definire a acestui element sînt opţionale dacă nu există decît un element
TBODY şi nu există nici un THEAD sau TFOOT.
Atributul tag-ului <TABLE> WIDTH indică lăţimea tabelului în pagină dată ca număr
de pixeli sau ca procent din spaţiul orizontal disponibil. Laţimile date în pixeli (în
special cele peste 500) ar trebui evitate întrucît, uneori, cauzează scroll inutil orizontal.
Un număr de atribute specifice tabelelor permit un control mai bun asupra poziţiei
tabelelor în pagină şi asupra textului care (eventual) curge pe lîngă tabel:
Atribut=Valoare Semnificaţie
ALIGN=LEFT Aliniază tabelul cu marginea din stînga a textului; textul
va curge pe marginea din dreapta a tabelului
ALIGN=CENTER Aliniază tabelul în mijlocul paginii; textul nu va curge
prin nici una din părţile tabelului
ALIGN=RIGHT Aliniază tabelul cu marginea din dreapta a textului;
textul va curge pe marginea din stînga a tabelului
Browser-ele tratează în general tabelele ca fiind „flotante“, conţinutul care urmează lui
TABEL curgînd pe lîngă el (dacă se poate). Pentru a preveni această manifestare se
poate folosi elementul „break“ <BR CLEAR=all> la sfirşitul lui TABLE.
<TABLE> mai poate fi folosit împreună cu atributele UNITS şi COLSPEC. UNITS
poate avea ca valori PIXELS, EN (implicit) sau procente (RELATIVE) din
dimensiunea totală a tabelului.
Atributul tag-ului <TABLE> FRAME, puţin suportat acum de browsere, specifică
marginile exterioare vizibile ale tabelului. Valorile posibile sînt:
void – nici o margine vizibilă
above – marginea de sus
below– marginea de jos
hsides – marginile din stînga şi dreapta
vsides – marginile de sus şi jos
lhs – numai marginea din stînga
rhs – numai marginea din dreapta
box (border) – toate marginile
Valoarea implicită este void, dacă nu este specificat atributul BORDER cu o valoare
pozitivă, caz în care valoarea implicită este box. <TABLE BORDER> este o abreviere
foarte bine suportată pentru <TABLE FRAME=border>.
Atributul RULES, şi el destul de puţin suportat de browsere, specifică marginile
interioare vizibile (între celulele tabelului). Valorile posibile sînt:
none – nici o margine interioară vizibilă
groups – numai marginile între grupurile de rînduri şi coloane
rows – numai marginile între rînduri
cols – numai marginile între coloane
all – toate marginile interioare
Valoarea implicită este none dacă BORDER=0 (sau se foloseşte atributul no
BORDER). Orice altă folosire a lui BORDER are ca efect trecerea lui all ca valoare
implicită.
Atributul BGCOLOR sugerează o culoare de background pentru tabel. Poate fi
folosită în combinaţie cu <FONT COLOR=...>, dar efectele pot fi imprevizibile dacă
se ia în considerare posibilitatea de suprascriere a acestor atribute de către browsere.
Metoda recomandată este cea a style-sheet-urilor.
Exemplu:
Un tabel simplu ar putea fi descris astfel:
<TABLE>
<CAPTION>Common Usenet Abbreviations</CAPTION>
<THEAD>
<TR>
<TH>Abbreviation</TH>
<TH>Long Form</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD>AFAIK</TD>
<TD>As Far As I Know</TD>
</TR>
<TR>
<TD>IMHO</TD>
<TD>In My Humble Opinion</TD>
</TR>
<TR>
<TD>OTOH</TD>
<TD>On The Other Hand</TD>
</TR>
</TBODY>
</TABLE>
Exemplu:
Un alt exemplu de tabel poate fi următorul:
<TABLE border="1"
summary="This table gives some statistics about... ">
<CAPTION><EM>A test table with merged cells</EM></CAPTION>
<TR>
<TH rowspan="2">
<TH colspan="2">Average
<TH rowspan="2">Red<BR>eyes
<TR>
<TH>height
<TH>weight
<TR>
<TH>Males
<TD>1.9
<TD>0.003
<TD>40%
<TR>
<TH>Females
<TD>1.7
<TD>0.002
<TD>43%
</TABLE>
TFOOT trebuie să apară înainte de TBODY în cadrul lui TABLE, astfel ca browserele să
poată interpreta (afişa) footerul înainte de recepţionarea tuturor (potenţial) numeroaselor
rînduri de date.
În cele ce urmează se sintetizează ce taguri sînt obligatorii şi care pot fi omise:
Tagul de start al lui TBODY este necesar întotdeauna cu excepţia cazului cînd
tabelul conţine doar un grup de rînduri definit cu un singur TBODY şi nu apare
nici un header sau footer. Tagul de final al lui TBODY poate fi omis întotdeauna
fără probleme.
Tagurile de start pentru THEAD şi TFOOT sînt necesare cînd apar secţiunile
descrise de acestea, dar cele de final pot fi omise şi ele fără probleme.
Astfel, tabelul anterior poate fi descris mai pe scurt astfel:
<TABLE>
<THEAD>
<TR> ... informaţii de header ...
<TFOOT>
<TR> ... informaţii de footer ...
<TBODY>
<TR> ... primul rînd al primului bloc de date ...
<TR> ... al doilea rînd al primului bloc de date ...
<TBODY>
<TR> ... primul rînd al blocului doi de date ...
<TR> ... al doilea rînd al blocului doi de date ...
<TR> ... al treilea rînd al blocului doi de date ...
</TABLE>
A. Elementul THEAD
Sintaxa:
<THEAD>...</THEAD>
Atribute posibile:
ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)
VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din
grup)
CHAR=Character (caracterul după care se face alinierea)
CHAROFF=Length (offsetul caracterului după care se face alinierea)
atribute comune
Conţine:
unul sau mai multe elemente TR
Conţinut în:
TABLE
Descriere:
Elementul THEAD defineşte un grup de rînduri de tip header (antet) într-un tabel.
Un tabel definit cu TABLE poate avea un singur THEAD, care poate apare după
CAPTION, COL sau COLGROUP, şi poate preceda elementele TFOOT (opţional) şi
TBODY (obligatoriu).
Prin gruparea explicită a rîndurilor de antet cu THEAD, autorii oferă browserelor
posibilitatea de a include acele rînduri pe fiecare pagină tipărită a unui tabel mare,
precum şi posibilitatea de prezenta tabele care permit scroll doar rîndurilor de date,
cele de antet rămînînd fixe pe ecran.
Nu toate browserele suportă acest element, dar folosirea lui nu conduce la nici o
problemă la acestea.
THEAD permite specificarea unor atribute de prezentare pentru alinierea celulelor de
date ale tabelului. Întrucît nu toate browserele îl suportă, aceste atribute se pot
specifica şi direct celulelor (definite cu TR, TH, TD).
Atributul ALIGN specifică alinierea orizontală pentru fiecare celulă din grupul de
rînduri. ALIGN=char aliniază conţinutul după un anumit caracter dat de atributul
CHAR, a cărui valoare implicită este punctul zecimal. CHAROFF specifică offsetul
primei apariţii a caracterului de aliniere. Valoarea lui este un număr de pixeli sau un
procent din lăţimea celulei. CHAROFF="50%" aliniază caracterul de aliniere în centru
celulei.
Atributul VALIGN specifică poziţia verticală a conţinutului celulelor şi poate lua
valorile:
top, care poziţionează datele la marginea de sus a celulei;
middle, valoarea implicită, care poziţionează datele în centrul celulei;
bottom, care poziţionează datele la marginea de jos a celulei;
baseline, care specifică alinierea primei linii a celulei (indiferent ce conţine) la o
linie de bază a fontului (baseline) comună.
B. Elementul TFOOT
Sintaxa:
<TFOOT>...</TFOOT>
Atribute posibile:
ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)
VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din
grup)
CHAR=Character (caracterul după care se face alinierea)
CHAROFF=Length (offsetul caracterului după care se face alinierea)
atribute comune
Conţine:
unul sau mai multe elemente TR
Conţinut în:
TABLE
Descriere:
Elementul TFOOT defineşte un grup de rînduri de tip footer într-un tabel. Un tabel
definit cu TABLE poate avea un singur TFOOT, care poate apare după THEAD
(opţional) şi poate preceda elementul TBODY (obligatoriu).
Prin gruparea explicită a rîndurilor de footer cu TFOOT, autorii oferă browserelor
posibilitatea de a include acele rînduri pe fiecare pagină tipărită a unui tabel mare,
precum şi posibilitatea de prezenta tabele care permit scroll doar rîndurilor de date,
cele de footer rămînînd fixe pe ecran.
Nu toate browserele suportă acest element, iar cerinţa de a fi plasat înainte de TBODY
îl face nerecomandat pentru acestea.
Atributele (şi semnificaţiile lor) sînt aceleaşi cu cele de la THEAD.
Un footer poate oferi un rînd special, de tip sumar sau de tip „notă de pagină/picior“,
ce se aplică unui tabel întreg sau numai unei porţiuni din el.
Exemplu:
Următorul exemplu foloseşte TFOOT pentru a defini „note de pagină/picior“ pentru
tot tabelul:
<TABLE SUMMARY="This table lists...">
<CAPTION>Programs Available</CAPTION>
<THEAD>
<TR>
...
</TR>
</THEAD>
<TFOOT CLASS=footnote>
<TR>
<TD COLSPAN=5>
Many disciplines are also available as Minors and
Joint
Honors programs.
</TD>
</TR>
<TR>
<TD COLSPAN=5>
* Preprofessional programs ...
</TD>
</TR>
</TFOOT>
<TBODY>...
</TBODY>
</TABLE>
C. Elementul TBODY
Sintaxa:
<TBODY>...</TBODY>
Atribute posibile:
ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)
VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din
grup)
CHAR=Character (caracterul după care se face alinierea)
CHAROFF=Length (offsetul caracterului după care se face alinierea)
atribute comune
Conţine:
unul sau mai multe elemente TR
Conţinut în:
TABLE
Descriere:
Elementul TBODY defineşte un grup de rînduri de date într-un tabel. Un tabel
definit cu TABLE poate avea unul sau mai multe elemente TBODY, care pot apărea
după elementul TFOOT (opţional). Tagul de sfîrşit este întotdeauna opţional. Tagul de
început este opţional cînd tabelul conţine doar un TBODY şi nu conţine nici un
THEAD sau TFOOT. Aceasta permite ca structura simplă a tabelelelor din HTML 3.2
să rămînă validă:
<TABLE>
<TR>
<TH>Abbreviation</TH>
<TH>Long Form</TH>
</TR>
<TR>
<TD>AFAIK</TD>
<TD>As Far As I Know</TD>
</TR>
</TABLE>
Prin gruparea explicită a rîndurilor de date cu TBODY, autorii oferă browserelor
posibilitatea de a prezenta tabele care permit scroll doar rîndurilor de date, cele de
header şi footer rămînînd fixe pe ecran. În plus, gruparea rîndurilor de date în mai
multe TBODY permite sugerarea unor prezentări diverse pentru diferitele grupuri, prin
intermediul style-sheet-urilor.
Nu toate browserele suportă acest element, dar folosirea lui nu conduce la nici o
problemă la acestea. Atributele au aceeaşi semnificaţia ca la THEAD şi TFOOT.
4. Definirea rîndurilor (elementul TR)
Un tabel este alcătuit, în esenţă din rînduri care conţin celulele în care se introduc
elementele ce fac parte din tabel (datele). Un rînd de date este descris prin intermediul
elementului TR. Atributele acestui element permit descrierea unor caracteristici comune
tuturor celulelor din acel rînd, chiar dacă acestea pot fi specificate ulterior şi individual,
pentru fiecare celulă în parte. Aceste caracteristici sînt:
Alinierea orizontală a textului (ALIGN [=right, left, center])
Alinierea verticală a textului (VALIGN [=top, middle, bottom])
Culoarea de background (BGCOLOR [=valoarea culorii în hexa])
Culoarea marginilor [a se vedea atributele lui TABLE]
Elementul TR
Sintaxa:
<TR>...</TR>
Atribute posibile:
ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)
VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din
grup)
CHAR=Character (caracterul după care se face alinierea)
CHAROFF=Length (offsetul caracterului după care se face alinierea)
BGCOLOR=Color (culoarea de background a rîndului)
atribute comune
Conţine:
unul sau mai multe elemente TH sau TD
Conţinut în:
TABLE, TFOOT, TBODY
Descriere:
Elementul TR defineşte un rînd într-un tabel. Elementele TR pot fi grupate cu ajutorul
lui THEAD, TFOOT sau TBODY. Întrucît tagurile de început şi de sfîrşit ale lui
TBODY sînt opţionale, structura simplă a tabelului din HTML 3.2 rămîne validă.
TR conţine elemente TH sau TD, care la rîndul lor conţin datele propriu-zise din tabel.
În plus faţă de atributele comune prezente la cele mai multe elemente, TR poate avea
şi atribute de prezentare pentru alinierea celulelor în rînd şi specificarea culorii de
background. Semnificaţia acestora este aceeaşi cu cea de la elementele anterioare.
5. Definirea celulelor unui tabel (elementele TH şi TD)
Celule unui tabel pot conţine două tipuri de informaţie: informaţie antet (header, cap de
tabel) şi date. Această distincţie permite browserelor să prezinte diferit cele două feluri
de celule, chiar şi în absenţa style-sheet-urilor. De exemplu browserele vizuale pot
prezenta headerele cu un font bold, iar cele care sintetizează vocea cu o inflexiune
specială a vocii.
Informaţia de tip header se descrie cu elementul TH. Există două tipuri de astfel de
informaţie: cea descrisă cu TH şi valoarea atributului ABBR. Un browser trebuie să
prezinte sau una sau alte dintre cele două tipuri, ABBR fiind preferată atunci cînd nu
există suficient spaţiu pentru a prezenta în întregime informaţia din TH.
Datele propriu-zise ale tabelului se inserează în celule descrise cu elementul TD.
Celulele unui tabel pot fi goale (fără nici un conţinut). În acest caz pot apare probleme la
afişarea marginilor celulei respective (unele browsere nu desenează marginile celulelor
goale, acestea trebuind să conţină un element invizibil, de exemplu un blanc, pentru ca
marginea rîndului să nu fie întreruptă).
De exemplu, următorul tabel conţine (descrie) 2 rînduri cu cîte 4 coloane (celule) pe
fiecare rînd, fiecare coloană avînd un header (cap de coloană) care o descrie:
<TABLE summary=" Tabel care indică nr. de ceşti de cafea băute la
o reuniune,
felul cafelei (normă/decofeinizată) şi dacă este
cu/fără
zahăr. ">
<CAPTION>Cups of coffee consumed by each</CAPTION>
<TR>
<TH>Name</TH>
<TH>Cups</TH>
<TH>Type of Coffee</TH>
<TH>Sugar?</TH>
<TR>
<TD>T. Sexton</TD>
<TD>10</TD>
<TD>Espresso</TD>
<TD>No</TD>
<TR>
<TD>J. Dinnen</TD>
<TD>5</TD>
<TD>Decaf</TD>
<TD>Yes</TD>
</TABLE>
B. Elementul TD
Sintaxa:
<TD>...</TD>
Atribute posibile:
ROWSPAN=Number (rînduri suprapuse/depăşite de celulă)
COLSPAN=Number (coloane suprapuse/depăşite de celulă)
HEADERS=IDREFS (lista celulelor header pentru celula curentă)
ABBR=Text (abrevierea celulei header)
SCOPE=[ row | col | rowgroup | colgroup ] (celulele acoperite de celula header)
AXIS=CDATA (categoria celulei header)
ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)
VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din
grup)
CHAR=Character (caracterul după care se face alinierea)
CHAROFF=Length (offsetul caracterului după care se face alinierea)
BGCOLOR=Color (culoarea de background a rîndului)
WIDTH=Pixels (lăţimea celulei)
HEIGHT=Pixels (înălţimea celulei)
NOWRAP (suprimă continuarea conţinutului pe un alt rînd/word wrap)
atribute comune
Conţine:
elemente inline, elemente tip bloc
Conţinut în:
TR
Descriere:
Elementul TD defineşte o celulă de date. Elementele TD sînt conţinute în TR, care
poate să conţină şi elemente TH. Dacă o celulă este şi antet şi dată trebuie folosit TD.
Semnificaţia atributele este aceeaşi cu cea de la TH.
6. Definirea celulelor extinse (atributele COLSPAN şi ROWSPAN)
Sintaxa:
<TH COLSPAN=nr. coloane></TH> sau <TH ROWSPAN=nr. rînduri></TH>
Descriere:
Pentru nevoi de organizare a datelor din tabel sau pentru obţinerea de efecte, celulele
pot fi extinse atît orizontal (pe mai multe coloane) cît şi vertical (pe mai multe
rînduri). Extinderea se obţine cu ajutorul atributelor COLSPAN şi ROWSPAN
utilizate cu tag-urile <TH> sau <TD>. Celulele se extind întotdeauna în jos şi/sau spre
dreapta; deci, pentru a crea o celulă care se extinde peste cîteva coloane se utilizează
atributul COLSPAN în conjuncţie cu tag-ul de început a celei mai din stînga celule din
rînd, iar pentru a obţine extinderea unei celule peste mai multe rînduri se utilizează
atributul ROWSPAN în conjuncţie cu tag-ul de început a celei mai de sus celule de pe
coloană. Valorile atributelor reprezintă numărul de coloane, respectiv rînduri peste
care se doreşte să fie extinsă celula.
Trebuie avut în vedere că în cazul unor descrieri eronate (cu celule care se „suprapun“)
browserele reacţionează diferit, efectele putînd fi uneori imprevizibile.
Exemplu greşit (cu celule extinse/suprapuse):
În acest tabel celula "5" este extinsă peste două rînduri şi celula "7" este extinsă peste
două coloane, rezultînd o suprapunere între celulele "7" şi "9":
<TABLE border="1">
<TR><TD>1 <TD>2 <TD>3
<TR><TD>4 <TD rowspan="2">5 <TD>6
<TR><TD colspan="2">7 <TD>9
</TABLE>
Exemplu:
Un tabel cu celule extinse descris corect ar putea fi următorul:
<TABLE BORDER>
<TR>
<TH COLSPAN=2></TH>
<TH>Celula din stînga este<BR>extinsă pe două coloane<BR>Rîndul 1</TH>
</TR>
<TR ALIGN=CENTER>
<TH ROWSPAN=2>Celulă extinsă<BR>pe două rînduri</TH>
<TH>Capul rîndului 2</TH>
<TD>Rîndul 2</TD>
</TR>
<TR ALIGN=CENTER>
<TH>Capul rîndului 3</TH>
<TD>Rîndul 3</TD>
</TR>
</TABLE>
Exemplu:
Acest exemplu ilustrează cum afectează definirea unei celule extinse vecinii săi (aici
celula de sub):
<TABLE border="1">
<TR><TD>1 <TD rowspan="2">2 <TD>3
<TR><TD>4 <TD>6
<TR><TD>7 <TD>8 <TD>9
</TABLE>
Întrucît celula "2" se extinde pe primul şi al doilea rînd, definirea celui de al doilea
rînd o va lua în considerare. Astfel, în rîndul doi, al doile TD defineşte de fapt celula a
treia de pe rînd, rezultînd un tabel ca în figura următoare:
Exemplu:
Acelaşi tabel, cu o extindere pe rînd, poate fi descris astfel:
<TABLE border="1">
<TR><TD>1 <TD>2 <TD>3
<TR><TD colspan="2">4 <TD>6
<TR><TD>7 <TD>8 <TD>9
</TABLE>
aici celula "4" se extinde pe două coloane şi, astfel, al doilea TD din rînd defineşte a
treia celulă ("6"):
Elementul COLGROUP
Sintaxa:
<COLGROUP>... </COLGROUP>
Atribute posibile:
SPAN=Number (numărul de coloane în grup)
WIDTH=MultiLength (lăţimea fiecărei coloane)
ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)
VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din
grup)
CHAR=Character (caracterul după care se face alinierea)
CHAROFF=Length (offsetul caracterului după care se face alinierea)
atribute comune
Conţine:
Zero sau mai nmulte elemente COL
Conţinut în:
TABLE
Descriere:
Acest element defineşte un grup de coloane într-un tabel. Dacă e folosit, COLGROUP
trebuie să apară după elementul (opţional) CAPTION şi înaintea elementului (tot
opţional) THEAD. Diviziunea structurală definită de COLGROUP permite sugerarea
unei prezentări comune pentru tot grupul de coloane prin intermediul style-sheet-
urilor.
Atributul SPAN defineşte numărul de coloane din grup; valoarea implicită este 1.
Celelalte atribute permise cu acest element sînt comune coloanelor din tabel. Poate
conţine, de asemenea, elemente COL care definesc atributele pentru celulele din
coloane în mod individual, suprapunîndu-se în acest fel atributele definite pentru grup.
Atributul SPAN nu trebuie utilizat dacă COLGROUP conţine COL.
COLGROUP poate avea şi un număr de atribute de prezentare, multe dintre ele
neputînd fi însă înlocuite complet de style-sheet-uri. Întrucît nu toate browserele
suportă COLGROUP, se pot specifica aceste atribute şi celulelor individuale
(elementelor TH şi TD).
Atributul WIDTH specifică lăţimea fiecarei coloane din grup. Valoarea trebuie să fie
un număr de pixeli, procent din lăţimea tabelului sau o lăţime relativă exprimată ca i*,
cu i intreg. O coloană care are WIDTH="3*" va avea lăţimea de 3 ori cît una care are
WIDTH="1*". Valoarea WIDTH="0*" este echivalentul minimului necesar pentru
afişarea conţinutului coloanei.
Atributele celelalte au aceeaşi semnificaţie ca la elementele anterioare.
Exemplu:
Acest exemplu oferă o perspectivă asupra divizării structurale a unui tabel în 3 părţi.
Prima parte este alcătuită dintr-o singură coloană care dă descrierea unui caracter. O
doua, de 3 coloane, dă diverse moduri de a reprezenta caracterul respectiv în HTML.
A treia parte, tot de 3 coloane, arată cum va apare caracterul respectiv în diverse
browsere.
<TABLE SUMMARY="This table gives the character entity reference,
decimal character reference, and hexadecimal
character
reference for 8-bit Latin-1 characters, as well as
the
rendering of each in your browser.">
<COLGROUP>
<COLGROUP SPAN=3>
<COLGROUP SPAN=3>
<THEAD>
<TR>
<TH SCOPE=col ROWSPAN=2>Character</TH>
<TH SCOPE=col ROWSPAN=2>Entity</TH>
<TH SCOPE=col ROWSPAN=2>Decimal</TH>
<TH SCOPE=col ROWSPAN=2>Hex</TH>
<TH SCOPE=colgroup COLSPAN=3>Rendering in Your Browser</TH>
</TR>
<TR>
<TH SCOPE=col>Entity</TH>
<TH SCOPE=col>Decimal</TH>
<TH SCOPE=col>Hex</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD SCOPE=row>non-breaking space</TD>
<TD>&nbsp;</TD>
<TD>&#160;</TD>
<TD>&#xA0;</TD>
<TD> </TD>
<TD> </TD>
<TD> </TD>
</TR>
...
</TBODY>
</TABLE>
Elementul COL
Sintaxa:
<COL>
Atribute posibile:
SPAN=Number (numărul de coloane în grup)
WIDTH=MultiLength (lăţimea fiecărei coloane)
ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)
VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din
grup)
CHAR=Character (caracterul după care se face alinierea)
CHAROFF=Length (offsetul caracterului după care se face alinierea)
atribute comune
Conţine:
vid (nu conţine nimic)
Conţinut în:
TABLE, COLGROUP
Descriere:
Acest element defineşte doar atributele comune unei coloane a unui tabel şi, spre
deosebire de COLGROUP, nu grupează structural coloanele tabelului. Dacă e folosit,
COL trebuie să apară după elementul (opţional) CAPTION şi înaintea elementului (tot
opţional) THEAD.
Atributul SPAN defineşte numărul de coloane care partajează aceleaşi atribute;
valoarea impli-cită este 1. COL poate fi conţinut direct în TABLE sau poate apare în
COLGROUP, caz în care suprascrie atributele definite de acesta. Celelalte atribute au
aceeaşi semnificaţie ca la elementul COLGROUP.
Exemplu:
Acest exemplu foloseşte COL în cadrul lui COLGROUP pentru a atribui diferite
„clase“ (atributul class) coloanelor unui tabel:
<COLGROUP CLASS="character-description">
<COLGROUP>
<COL CLASS=entity>
<COL SPAN=2 CLASS=numeric>
<COLGROUP>
<COL CLASS="entity-rendering">
<COL CLASS="decimal-rendering">
<COL CLASS="hex-rendering">
<THEAD>
<TR>
<TH SCOPE=col ROWSPAN=2>Character</TH>
<TH SCOPE=col ROWSPAN=2>Entity</TH>
<TH SCOPE=col ROWSPAN=2>Decimal</TH>
<TH SCOPE=col ROWSPAN=2>Hex</TH>
<TH SCOPE=colgroup COLSPAN=3>Rendering in Your
Browser</TH>
</TR>
<TR>
<TH SCOPE=col>Entity</TH>
<TH SCOPE=col>Decimal</TH>
<TH SCOPE=col>Hex</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD SCOPE=row>non-breaking space</TD>
<TD>&nbsp;</TD>
<TD>&#160;</TD>
<TD>&#xA0;</TD>
<TD> </TD>
<TD> </TD>
<TD> </TD>
</TR>
...
</TBODY>
</TABLE>
9. Calculul numărului de coloane dintr-un tabel
Pentru calculul numărului de coloane ale unui tabel se folosesc două metode prezentate în
continuare în ordinea precedenţei (ordinea în care sînt folosite):
1. Dacă TABLE conţine un element COLGROUP sau COL numărul coloanelor se
calculează adunînd:
Pentru fiecare COL valoarea atributului SPAN (valoarea implicită 1).
Pentru fiecare COLGROUP ce conţine cel puţin un COL se ignoră
atributul SPAN al fiecărui COLGROUP. Pentru fiecare COL se aplică
pasul 1.
Pentru fiecare COLGROUP vid se ia valoarea lui SPAN (valoarea
implicită 1).
2. Altfel, dacă TABLE nu conţine COLGROUP sau COL numărul de coloane se
determină din descrierea rîndurilor. Numărul de coloane este egal cu numărul
maxim de elemente ce par pe un rînd (incluzînd şi celule ce se extind pe mai
multe coloane). Pentru toate rîndurile care au mai puţine coloane se adaugă la
sfîrşit celule goale.
Dacă tabelul conţine COLGROUP şi COL şi cele două metode de calcul nu dau acelaşi
rezultat atunci este vorba despre o eroare. Odată ce s-a calculat numărul de coloane,
acestea pot fi grupate.
Exemplu: Pentru fiecare dintre tabelele descrise în continuare, cele 2 metode trebuie să
dea acelaşi rezultat: 3 coloane. Primele trei tabele pot fi afişate incremental:
1.
<TABLE>
<COLGROUP span="3"></COLGROUP>
<TR><TD> ...
...rîndurile tabelului...
</TABLE>
2.
<TABLE>
<COLGROUP>
<COL>
<COL span="2">
</COLGROUP>
<TR><TD> ...
... rîndurile tabelului...
</TABLE>
3.
<TABLE>
<COLGROUP>
<COL>
</COLGROUP>
<COLGROUP span="2">
<TR><TD> ...
... rîndurile tabelului...
</TABLE>
4.
<TABLE>
<TR>
<TD><TD><TD>
</TR>
</TABLE>
Exemplu:
Tabelul următor are 6 coloane. Prima nu aparţine explicit nici unui grup. Urmatoarele trei
aparţin explicit primului grup şi ultimele două aparţin celui de al doilea grup explicit.
Acest tabel nu poate fi afişat incremental întrucît conţine coloane cu lăţimi specificate
proporţional şi atributul width al lui TABLE nu are specificat nici o valoare.
<TABLE>
<COLGROUP>
<COL width="30">
<COLGROUP>
<COL width="30">
<COL width="0*">
<COL width="2*">
<COLGROUP align="center">
<COL width="1*">
<COL width="3*" align="char" char=":">
<THEAD>
<TR><TD> ...
...rîndurile tabelului...
</TABLE>
În momentul în care browserul recepţionează toate datele din tabel, speţiul orizontal
disponibil va fi alocat coloanelor după cum urmează:
1. Se alocă 30 de pixeli coloanelor unu şi doi.
2. Se rezervă spaţiul minimal pentru coloana trei.
3. Spaţiul orizontal rămas disponibil este împăţit în 6 părţi egale (întrucît 2* + 1*
+ 3* = 6 părţi egale).
4. Coloana a patra (2*) va primi 2 părţi, coloana a cincea (1*) o parte şi coloana a
şasea (3*) va primi 3 parţi.
Valoarea atributului align din coloana a treia este "center". Toate celule din fiecare
coloană din acest grup vor moşteni această valoare, dar o pot suprapune. De fapt, COL
chiar asta şi face prin specificarea faptului că fiecare celulă din coloana a şasea va fi
aliniată după caracterul ":".
Exemplu:
Tabelul următor, aşa cum are descrisă lăţimea, permite formatarea (şi implicit şi afişarea)
incremental:
<TABLE width="200">
<COLGROUP span="10" width="15">
<COLGROUP width="*">
<COL id="penultima-coloană">
<COL id="ultima-coloană">
<THEAD>
<TR><TD> ...
...rîndurile tabelului...
</TABLE>
Primele 10 coloane au fiecare cîte 15 pixeli lăţime. Ultimele două coloane vor primi
fiecare jumătate din cei 50 de pixeli care mai rămîn. Elementele COL apar doar pentru a
se specifica o valoare atributului id.
Exemplu:
În exemplul următor este descris un tabel care are margine exterioară vizibilă, de 5
pixeli grosime, în partea stîngă şi dreaptă, precum şi margini interne vizibile între
celule:
<TABLE border="5" frame="vsides" rules="cols">
<TR> <TD>1 <TD>2 <TD>3
<TR> <TD>4 <TD>5 <TD>6
<TR> <TD>7 <TD>8 <TD>9
</TABLE>
3. char = character
Acest atribut specifică un caracter (unic într-un fragment de text) care joacă rolul
de axă după care se aliniază restul. Valoarea implicită este punctul zecimal.
4. charoff = length
Cînd este prezent acest atribut specifică affsetul primei aparaţii a caracterului
după care se face alinierea pe fiecare linie. Dacă o linie nu conţine caracterul de
aliniere ea poate fi deplasată la sfîrşitul poziţieie de aliniere.
Exemplu:
Tabele cu aliniere orizontală şi verticală:
1.
<TABLE BORDER>
<CAPTION>Aliniere orizontală</CAPTION>
<TR>
<TD ALIGN=LEFT> <BR> Left <BR> </TD>
<TD ALIGN=Center> <BR> Center <BR> </TD>
<TD ALIGN=RIGHT> <BR> Right <BR> </TD>
</TR>
</TABLE>
2.
<TABLE BORDER>
<CAPTION>Aliniere verticală</CAPTION>
<TR ALIGN=CENTER>
<TD VALIGN=TOP>Top<BR> <BR> </TD>
<TD VALIGN=MIDDLE>Center</TD>
<TD VALIGN=BOTTOM> <BR><BR> Bottom </TD>
</TR>
</TABLE>
Exemplu:
Tabel cu combinaţie de alinieri:
<TABLE BORDER>
<TR>
<TH></TH>
<TH>Left (Stînga)</TH>
<TH>Center (Centru)</TH>
<TH>Right (Dreapta)</TH>
<TH>Top<BR>(Sus)<BR></TH>
<TD ALIGN=LEFT VALIGN=TOP><IMG SRC="A.gif"></TD>
<TD ALIGN=CENTER VALIGN=TOP><IMG SRC="A.gif"></TD>
<TD ALIGN=RIGHT VALIGN=TOP><IMG SRC="A.gif"></TD>
<TH>Center<BR>(Centru)<BR></TH>
<TD ALIGN=LEFT VALIGN=MIDDLE><IMG SRC="A.gif"></TD>
<TD ALIGN=CENTER VALIGN=MIDDLE><IMG SRC="A.gif"></TD>
<TD ALIGN=RIGHT VALIGN=MIDDLE><IMG SRC="A.gif"></TD>
</TR>
<TR>
<TH>Bottom<BR>(Jos)<BR></TH>
<TD ALIGN=LEFT VALIGN=BOTTOM><IMG SRC="A.gif"></TD>
<TD ALIGN=CENTER VALIGN=BOTTOM><IMG SRC="A.gif"></TD>
<TD ALIGN=RIGHT VALIGN=BOTTOM><IMG SRC="A.gif"></TD>
</TR>
</TABLE>
Exemplu:
Tabelul următor aliniază un rînd de valori ce reprezintă preţuri după punctul zecimal,
caracter de aliniere setat explicit:
<TABLE border="1">
<COLGROUP>
<COL>
<COL align="char" char=".">
<THEAD>
<TR>
<TH>Vegetable
<TH>Cost per kilo
<TBODY>
<TR>
<TD>Lettuce
<TD>$1
<TR>
<TD>Silver carrots
<TD>$10.50
<TR>
<TD>Golden turnips
<TD>$100.30
</TABLE>
Tabelul ar putea arăta astfel:
------------------------------
| Vegetable |Cost per kilo|
|--------------|-------------|
|Lettuce | $1 |
|--------------|-------------|
|Silver carrots| $10.50|
|--------------|-------------|
|Golden turnips| $100.30|
------------------------------
Ordinea de precedenţă (de la cea mai mare la cea mai mică) pentru atributul valign este:
1. Atributul de aliniere setat pentru un element din celulă (ex. P).
2. Atributul de aliniere setat pentru o celulă (TH sau TD).
3. Atributul de aliniere setat pentru un rînd sau grup de rînduri (TR, THEAD,
TFOOT şi TBODY). Cînd o celulă face parte dintr-o celulă extinsă pe mai multe
rînduri, proprietăţile de aliniere sînt moştenite de la celula de unde începe
extensia.
4. Atributul de aliniere setat pentru o coloană sau grup de coloane (COL şi
COLGROUP). Cînd o celulă face parte dintr-o celulă extinsă pe coloane,
proprietăţile de aliniere sînt moştenite de la celula de unde începe extensia.
5. Atributul de aliniere setat pentru tabel (TABLE).
6. Valoarea implicită de aliniere.
+---------------------------------------+
| | |
| Frame 1 | |
| | |
|---------| |
| | Frame 3 |
| | |
| Frame 2 | |
| | |
| | |
+ --------------------------------------+
Pentru browserele care nu pot afişa frame-uri se oferă un element special NOFRAMES în
care se descrie pagina pentru acest caz (din ce în ce mai rar!).
Un document care descrie modalitatea în care frame-urile sînt poziţionate pe ecran
(layout-ul frame-urilor) se numeşte document frameset şi are o structură diferită de cea a
unui document fără frame-uri. Un document standard are o secţiune HEAD şi una (sau
mai multe) secţiuni BODY. Un document cu frame-uri are şi el o secţiune HEAD dar în
locul secţiunii BODY are o secţiune specială descrisă de elementul FRAMESET.
Secţiunea descrisă de FRAMESET specifică modul de aranjare (layout-ul) zonelor
ocupate de frame-uri în fereastra principală a browserului. În plus această secţiune poate
conţine şi un element NOFRAMES pentru browserele ce nu pot afişa frame-uri.
Elementele ce în mod normal apăreau în BODY nu trebuie să apară înaintea primului
element FRAMESET, pentru că în acest caz elementul FRAMESET va fi ignorat.
Relativ la frame-uri există trei elemente (seturi de taguri):
<FRAMESET> ... </FRAMESET> - divide fereastra browserului (sau un alt frame
deja definit) în frame-uri specificate ca rînduri sau coloane din fereastra
respectivă (acest element trebuie să apară între tagul de sfîrşit </HEAD> şi
tagul <BODY>);
<FRAME> ... </FRAME> defineşte caracteristicile unui frame particular dintr-un
set de frame-uri (tagurile elementului FRAME trebuie să apară în interiorul
tagurilor elementului FRAMESET);
<NOFRAMES> ... </NOFRAMES> descrie informaţia care se afişează dacă
browserul nu suportă frame-uri (tagul NOFRAMES nu trebuie să includă
elementul BODY).
2. Crearea a 3 coloane: a doua cu dimensiune fixă de 250 pixeli (utilă dacă are în ea o
imagine de această lăţime), prima primind 25% din spaţiul care mai rămîne şi a treia cu
75% din acesta:
<FRAMESET cols="1*,250,3*">
... restul definiţiilor...
</FRAMESET>
3. Grid de 2x3 subspaţii:
<FRAMESET rows="30%,70%" cols="33%,34%,33%">
... restul definiţiilor ...
</FRAMESET>
Dacă dimensiunile nu fac 100%, diferenţa este gestionată de browser: dacă mai rămîne se
alocă fiecărui frame proprţional cu dimensiunea sa, dacă e prea mult se reduce
dimensiunea fiecărui frame în funcţie de proporţia din spaţiul total ocupat de fiecare
frame.
Elementul FRAMESET
Sintaxa:
<FRAMESET>... </FRAMESET>
Atribute posibile:
ROWS=MultiLengths (lungimile rîndurilor)
COLS=MultiLengths (lungimile coloanelor)
ONLOAD=Script (toate frame-urile au fost încărcate)
ONUNLOAD=Script (toate frame-urile au fost eliminate)
atribute core
Conţine:
Unul sau mai multe elemente FRAMESET şi FRAME şi, opţional, un element
NOFRAMES
Conţinut în:
HTML
Descriere:
Acest element este un container de frame-uri, utilizat pentru a împărţi o fereastră în
subspaţii dreptunghiulare numite frame-uri. Documentul care include acest element
(document cu frame-uri sau frameset document) elementul FRAMESET cel mai din
exterior ia locul lui BODY şi urmează imediat elementul HEAD.
Atributele ROWS şi COLS definesc dimensiunea fiecarui frame din set. Fiecare
atribut ia ca valoare o listă de lungimi specificate în pixeli, ca procent sau ca lungime
relativă. O lungime relativă este exprimată ca i*, unde i este un întreg. De exemplu un
set de frame-uri definit cu ROWS="3*,*" (* este echivalent cu 1*) va avea primul rînd
de trei ori mai înalt decît al doilea.
Valorile specificate pentru ROWS dau înălţimea fiecărui rînd, de sus în jos, iar cele
date pentru COLS dau lăţimea fiecărei coloane, de la stînga la dreapta. Dacă ROWS
sau COLS sînt omise, valoare implicită pentru fiecare dintre aceste atribute este 100%.
Dacă sînt specificate ambele, se defineşte un grid („caroiaj“) care se umple de la stînga
la dreapta şi de sus în jos.
Cînd se folosesc dimensiuni în pixeli acestea trebuie combinate cu lungimi relative
pentru a acoperi diversele dimensiuni ale ferestrelor. Dimensiunile fixe în pixeli se
folosesc doar în frame-urile care conţin imagini sau alte obiecte de dimensiune fixă şi
cunoscută. În general, însă, se preferă procentele datorită capacităţii de adaptare la
diversele dimensiuni ale ferestrelor.
Elementul FRAMESET acceptă, de asemenea, şi atributele ONLOAD şi
ONUNLOAD pentru a specifica acţiuni client-side executate de scripturi cînd frame-
urile sînt încărcate, respectiv eliminate.
Exemplu:
Acest exemplu descrie un document (grid) cu 2 rînduri şi 3 coloane. De remarcat
încercarea de a formata documentul şi în cazul în care browserul nu suportă frame-uri
asemănător cu originalul.
<FRAMESET ROWS="70%,30%" COLS="33%,33%,34%">
<FRAME NAME="Photo1" SRC="Row1_Column1.html">
<FRAME NAME="Photo2" SRC="Row1_Column2.html">
<FRAME NAME="Photo3" SRC="Row1_Column3.html">
<FRAME NAME="Caption1" SRC="Row2_Column1.html">
<FRAME NAME="Caption2" SRC="Row2_Column2.html">
<FRAME NAME="Caption3" SRC="Row2_Column3.html">
<NOFRAMES>
<BODY>
<H1>Table of Contents</H1>
<UL>
<LI>
<A HREF="Row1_Column1.html">Photo 1</A>
(<A HREF="Row2_Column1.html">Caption</A>)
</LI>
<LI>
<A HREF="Row1_Column2.html">Photo 2</A>
(<A HREF="Row2_Column2.html">Caption</A>)
</LI>
<LI>
<A HREF="Row1_Column3.html">Photo 3</A>
(<A HREF="Row2_Column3.html">Caption</A>)
</LI>
</UL>
</BODY>
</NOFRAMES>
</FRAMESET>
Iar exemplul următor foloseşte elemente FRAMESET îmbricate pentru a defini 2
frame-uri în primul rînd şi un frame în rîndul al doilea:
<FRAMESET ROWS="*,100">
<FRAMESET COLS="40%,*">
<FRAME NAME="Menu" SRC="nav.html" TITLE="Menu">
<FRAME NAME="Content" SRC="main.html" TITLE="Content">
</FRAMESET>
<FRAME NAME="Ad" SRC="ad.html" TITLE="Advertisement">
<NOFRAMES>
<BODY> ...
</BODY>
</NOFRAMES>
</FRAMESET>
2. Seturi de frame-uri îmbricate
Frame-urile descrise de un document pot fi îmbricate oricît de mult prin includerea unui
element FRAMESET în alt element FRAMESET.
În exemplul următor primul element FRAMESET (cel din „exterior“) divide tot spaţiul
disponibil în 3 coloane egale. Al doilea FRAMESET, din interiorul primului, divide a
doua zonă în rînduri de înălţime inegală.
<FRAMESET cols="33%, 33%, 34%">
...conţinutul primului frame ...
<FRAMESET rows="40%, 50%">
... conţinutul celui de al doilea frame, primul
rînd ...
... conţinutul celui de al doilea frame, al doilea rînd
...
</FRAMESET>
... conţinutul celui de al treilea frame ...
</FRAMESET>
Elementul FRAME
Sintaxa:
<FRAME>
Atribute posibile:
NAME=CDATA (numele frame-ului)
SRC=URI (conţinutul frame-ului)
LONGDESC=URI (descriere lungă a frame-ului)
FRAMEBORDER=[ 1 | 0 ] (marginea frame-ului)
MARGINWIDTH=Pixels (lăţimea marginii)
MARGINHEIGHT=Pixels (înălţimea marginii)
NORESIZE (dezactivează posibilitatea de redimensionare a frame-ului)
SCROLLING=[ yes | no | auto ] (posibilitatea de scroll)
atribute core
Conţine:
vid (nu conţine nimic)
Conţinut în:
FRAMESET
Descriere:
Acest element defineşte un frame – un subspaţiu dreptunghiluar dintr-un document cu
frame-uri (dintr-un set de frame-uri). Fiecare element FRAME trebuie să apară într-un
element FRAMESET care îi defineşte dimensiunea.
Atributul SRC oferă adresa (URI) de unde se va înărca conţinutul frame-ului, care
este, în mod tipic, un document HTML. Dacă este însă o imagine, o secvenţă video
sau un alt obiect similar şi acesta nu poate fi descris în mod adecvat cu atributul
TITLE al lui FRAME, atunci autorul paginii respective va trebui să folosescă atributul
LONGDESC pentru a oferi a adresă (URI) a descrierii HTML a obiectului respectiv.
Nu se recomandă însă această metodă, pentru a se permite o indexare eficientă de către
motoarele de căutare, precum şi o utilizare accesibilă în cazule browsere-lor nevizuale.
Atributul NAME dă un nume frame-ului respectiv pentru a putea fi utilizat cu atributul
TARGET al elementelor A, BASE, FORM şi LINK. Valoarea acestui atribut trebuie
să înceapă cu un caracter din domeniul A-Z sau a-z. Aceasta trebuie să fie „citibilă“ şi
să se bazeze pe conţinutul frame-ului respectiv. De exemplu NAME=left este
nerecomandat, întrucît nu spune nimic despre ce se găseşte în frame-ul respectiv, în
timp ce NAME=nav este şi aceasta nerecomandată, nefiind suficient de clară (nu este
„citibilă“). Mult mai sugestivă este o atrbuire de genul NAME=Content sau
NAME=Navigation. Şi atributul TITLE poate fi, de asemenea, folosit pentru a oferi un
titlu mai lung pentru frame, dar acesta nu este suportat de toate browserele.
Atributele prezentaţionale acceptate pot fi înlocuite de style-sheet-uri (şi e
recomandabil să fie aşa), dar sînt, încă, mai mult suportate de browsere.
Atributul FRAMEBORDER specifică dacă un frame are (valoarea 1) sau nu (valoarea
0) margine vizibilă. Valoarea implicită este 1. Acest atribut poate fi suprapus de cel al
frame-urilor adiacente. Un frame care nu are margine nu poate fi nici redimensionat.
Atributele MARGINWIDTH şi MARGINHEIGHT definesc numărul de pixeli folosiţi
ca margini stînga/dreapta şi, respectiv, sus/jos. Valorile trenuie să fie mai mari ca 1
pixel, iar atributul boolean NORESIZE împiedică utilizatorul să redimensioneze
frame-ul.
Atributul SCROLLING specifică dacă se vor oferi scroll-bar-uri pentru frame-uri.
Valoarea implicită (auto) le generează atunci cînd este cazul. Valoarea yes le afisează
tot timpul, iar valoarea no le suprimă, chiar cînd sînt necesare.
Exemplu:
Fie următorul document cu frame-uri:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Frameset//EN"
"http://www.w3.org/TR/REC-
html40/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
<FRAMESET rows="*,200">
<FRAME src="contents_of_frame1.html"
scrolling="no">
<FRAME src="contents_of_frame2.gif"
marginwidth="10" marginheight="15"
noresize>
</FRAMESET>
<FRAME src="contents_of_frame3.html" frameborder="0">
<FRAME src="contents_of_frame4.html" frameborder="0">
</FRAMESET>
</HTML>
Acesta defineşte 2 frame-uri în care se vor încărca 2 documente HTML. Conţinutul lui
init_dynamic.html, încărcat în frame-ul denumit "dynamic" ar putea fi:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Document cu legături ţintă într-un frame cu nume</TITLE>
</HEAD>
<BODY>
...partea de început...
<P>Aici se poate avansa la
<A href="slide2.html" target="dynamic">Slide-ul 2.</A>
...altele...
<P>Iar aici se poate avansa la
<A href="slide3.html" target="dynamic">Slide-ul 3.</A>
</BODY>
</HTML>
Activarea oricărei legături va deschide un nou document, dar de fiecare dată în frame-ul
numit "dynamic", în timp ce conţinutul celuilalt frame "fixed" rămîne neschimbat.
De reţinut:
1. O definiţie a setului de frame-ului NU POATE FI MODIFICATĂ niciodată, doar
conţinutul acestora putînd fi modificat dinamic. Din momentul în care apare prima
modificare dinamică, definiţia iniţială a frame-urilor (frameset-ului) nu mai reflectă
starea curentă a acestora.
2. Nu se poate codifica (şi reţine) starea globală a unui set de frame-uri şi, de aceea,
multe browsere nu permit asignarea unui bookmark („semn de carte“) unui astfel de
frameset.
3. Dacă se utilizează frame-uri, navigarea înainte şi înapoi se complică, autorii fiind
responsabili de modalitatea de a parcurge astfel de documente, prin intermediul
legăturilor din interiorul acestora.
Cînd mai multe legături din acelaşi document indică aceeaşi ţintă (acelaşi frame) este
posibil să se specifice aceasta o singură dată, renunţîndu-se la atributul TARGET setat la
fiecare element în parte. Aceasta se poate realiza prin setarea atributului TARGET al
elementului BASE.
Pentru exemplul anterior se poate defini un element BASE. căruia i se poate specifica o
valoare pentru atributul TARGET (frame-ul "dynamic"), renunţînd la specificarea lui în
elementele A care încarcă documentele în acesată ţintă:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Document cu legături ţintă într-un frame cu nume</TITLE>
<BASE href="http://www.pal.ro/Slides" target="dynamic">
</HEAD>
<BODY>
...partea de început...
<P>Aici se poate avansa la
<A href="slide2.html">Slide-ul 2.</A>
...altele...
<P>Iar aici se poate avansa la
<A href="slide3.html">Slide-ul 3.</A>
</BODY>
</HTML>
Browserele determină în care frame vor încărca o resursă după următorul algoritm (după
următoarele priorităţi, de la cele mai mari spre cele mai mici):
3. Dacă un element are atributul TARGET setat la un frame cunsocut, cînd
elementul este activat (de ex. click pe un link) resursa indicată de element se
încarcă în acel frame.
4. Dacă un element NU are atributul TARGET specificat, dar îl are elementul
BASE, atunci acesta determină frame-ul în care se încarcă resursa.
5. Dacă nici elementul şi nici BASE nu definesc o ţintă (atributul TARGET nesetat)
resursa desemnată (indicată) de element se încarcă în frame-ul care conţine
elementul respectiv.
6. Dacă un atribut TARGET referă un frame necunoscut, browser-ul va crea o nouă
fereastră şi un nou frame în aceasta, asignează numele necunoscut pînă în acel
moment acelui frame şi încarcă resursa în acesta.
În plus browserele pot oferi mecanisme de suprapunere a atributului TARGET.
7. Descrierea lungă a unui frame (atributul LONGDESC)
Atributul special LONGDESC permite autorilor să creeze documente cu frame-uri mult
mai accesibile pentru browser-ele nevizuale. Acest atribut defineşte o resursă care oferă
o descriere mai lungă (pe larg) a unui frame. Această resursă este asociată cu frame-ul, nu
cu conţinutul acestuia, şi de aceea, în timp, descrierea lungă poate deveni neadecvată
conţinutului la un moment de timp (după schimbarea conţinutului frame-ului respectiv).
O consecinţă a acestui comportament este recomandarea de a nu include o imagine ca
singur conţinut al unui frame. Mai bine este înglobarea imaginii respective într-un al
document şi specificarea acestuia ca şi conţinut al unui frame, ca în exemplul următor:
Următorul set de 2 frame-uri conţine: în frame-ul din stînga un cuprins, iar frame-ul din
dreapta, iniţial va conţine o imagine:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
"http://www.w3.org/TR/REC-html40">
<HTML>
<HEAD>
<TITLE>Un document ce defineşte GREŞIT un frameset</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAME src="table_of_contents.html">
<FRAME src="ostrich.gif" longdesc="ostrich-desc.html">
</FRAMESET>
</HTML>
Dacă se include direct imaginea în frame, independent de orice alt element, nu mai există
altă posibilitate de a specifica un text alternativ la acea imagine în afara atributului
LONGDESC. Dacă se va schimba conţinutul frame-ului din dreapta, descrierea acestuia
va rămîne aceeaşi, fără nici o posibilitate de a redescrie noul conţinut (într-o manieră
alternativă).
De aceea, în locul specificării directe a imaginii ca şi conţinut al frame-ului din dreapta,
se specifică un al document HTML care va conţine imaginea respectivă:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
"http://www.w3.org/TR/REC-html40">
<HTML>
<HEAD>
<TITLE>Un document ce defineşte CORECT un frameset</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAME src="table_of_contents.html">
<FRAME src="ostrich-container.html">
</FRAMESET>
</HTML>
Elementul NOFRAMES
Sintaxa:
<NOFRAMES>... </ NOFRAMES >
Atribute posibile:
atribute comune
Conţine:
În HTML 4.0 Transitional: elemente inline, elemente tip block level
În HTML 4.0 Frameset: un element BODY care trebuie să nu conţină nici un
NOFRAMES
Conţinut în:
APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV,
FIELDSET, FORM, FRAMESET, IFRAME, INS, LI, MAP, NOSCRIPT,
OBJECT, TD, TH
Descriere:
Acest element descrie conţinutul unui document ce trebuie afişat cînd frame-urile nu
sînt afişate. NOFRAMES este folosit în mod tipic într-un document cu frame-uri (ce
defineşte un frameset) pentru a oferi informaţia care trebuie afişată de browser-ele care
nu suportă frame-uri.
Cînd este folosit într-un FRAMESET, NOFRAMES trebuie să conţină un element
BODY. În acest caz nu mai trebuie să apară însă nici un element NOFRAMES în
elementul BODY.
Este recomandabil să se ofere un element NOFRAMES care are semnificaţie, şi care,
la limită, să conţină cel puţin un link spre o variantă de document fără frame-uri.
Elementul IFRAME
Sintaxa:
<IFRAME>... </ IFRAME >
Atribute posibile:
SRC=URI (adresa URI a conţinutului frame-ului)
NAME=CDATA (numele frame-ului)
LONGDESC=URI (link către descrierea lungă)
WIDTH=Length (lăţimea frame-ului)
HEIGHT=Length (lăţimea frame-ului)
ALIGN=[ top | middle | bottom | left | right ] (alinierea frame-ului)
FRAMEBORDER=[ 1 | 0 ] (marginea frame-ului)
MARGINWIDTH=Pixels (lăţimea marginii)
MARGINHEIGHT=Pixels (înălţimea marginii)
SCROLLING=[ yes | no | auto ] (posibilitatea de scroll)
atribute core
Conţine:
inline elements, block-level elements
Conţinut în:
inline elements, block-level elements
Descriere:
Acest element defineşte un frame inline pentru a include obiecte externe (incluzănd
alte documente HTML). IFRAME oferă un subset de funcţii ale lui OBJECT, singurul
avantaj fiin acela că poate fi specificată ca TARGET de către alte legături. OBJECT
este mai bine suportat decît IFRAME.
Atributul SRC oferă adresa de unde se va încărca conţinutul frame-ului – în mod tipic
un document HTML. Atributul opţional NAME specifică numele frame-ului permiţînd
astfel legături care să specifice acest frame ca ţintă în care să se încarce.
Conţinutul elementului IFRAME (ce este între tagul de început şi cel de sfîrşit) este
alternativă pentru browser-ele care nu suportă frame-uri. Pot apare aici elemente inline
sau bloc: orice element de tip bloc este permis în interiorul elementului ce-l conţine pe
IFRAME. De exemplu un IFRAME într-un H1 nu poate conţine un H2, dar un
IFRAME într-un DIV poate conţine orice element de tip bloc.
LONGDESC dă adresa unei resurse care descrie pe larg conţinutul frame-ului. Similar
cu atributul elementului FRAME.
Atributele WIDTH şi HEIGHT specifică dimensiunile frame-ului în pixeli sau
procente din spaţiul disponibil, iar FRAMEBORDER stabileşte dacă se deseneză sau
nu marginea. ALIGN specifică modul de aliniere faţă de conţinutul adiacent a frame-
ului inclus. ALIGN=middle aliniază frame-ul faţă de linia de bază (baseline), iar
pentru a centra în document (pagină) frame-ul se recomandă includerea într-un bloc
centrat: <P ALIGN=center><IFRAME SRC="foo.html" WIDTH=300
HEIGHT=100></IFRAME></P>. Celelalte valori (left şi right) indică un frame flotant, care
poate fi plasat la marginea din stînga sau dreapta, iar conţinutul să curgă pe lîngă.
MARGINWIDTH şi MARGINHEIGHT definesc un număr de pixeli ce se folosesc ca
margine stînga/dreapta, respectiv sus/jos, iar SCROLLING dacă sînt permise barele
scroll.
O mai mare flexibilitate în prezentarea frame-urilor este dată de style-sheet-uri.
Exemplu:
Acest exemplu include documentul reteta.html şi oferă şi un conţinut alternativ:
<IFRAME SRC="reteta.html" TITLE="Reteta lui Petrisor">
<!-- Conţinut alternativ pentru browser-ele care nu suportă IFRAME -->
<H2>Reţeta lui Petrişor</H2>
<H3>Ingrediente</H3>
...
</IFRAME>
Capitolul 7.
Utilizarea formulalelor interactive (forms)
În marea majoritate a documentelor (mai ales cele mai vechi), singura interactivitate
dintre aplicaţie (browser) şi cel ce o foloseşte (utilizatorul) constă în faptul că acesta
decide ce legătură hypertext din respectivul document să urmărească.
Specificaţiile HTML includ însă şi o altă metodă (de asemenea simplă, primitivă) de
creştere a gradului de interactivitate a unui document HTML: formularele (forms) care
permit integrarea în document a unor elemente preluate din interfaţa aplicaţiilor de tip
Windows sau X Windows – cîmpurile text statice şi editabile, butoanele radio, căsuţele
de selecţie, listele de selecţie şi cîmpurile de editare. Interactivitatea se bazează pe faptul
că acestea pot fi utilizate pentru introducerea unor date / strîngerea de informaţie
necesară unei alte aplicaţii aflată în "spatele" documentului, aplicaţie care va utiliza
aceste date (introduse de utilizatorul browser-ului şi a documentului HTML) şi care
hotărăşte ce anume şi cum anume va fi oferit clientului, ca rezultat al acestor informaţii
noi, introduse cu ajutorul formularului. Modul de introducere a datelor în formulare este
similară cu modul de a introduce date într-o aplicaţie Windows.
Ca exemple tipice de acţiuni realizate cu ajutorul (prin intermediul formularelor) pot fi
date:
o selecţie dintr-o bază de date (starea vremii dintr-o anumită regiune, de pildă)
un rezultat al unui sondaj (la care a participat cel ce a introdus datele tocmai a
participat)
vizualizarea la un document cu acces restrîns
sau orice altceva care îndeplineşte criteriile de selecţie prezentate în formular
În procesul de proiectare a unui document care utilizează un formular HTML există trei
etape:
1. designul şi implementarea (în HTML) a formularului de intrare, care va fi
vizualizat, explorat şi completat de utilizator
2. scrierea unei aplicaţii care să interpreteze datele cu care utilizatorul completează
formularul (aplicaţie care primeşte datele şi care este executată de un alt
calculator decît cel al utilizatorului, cel care rulează browser-ul – un server, de
obicei cel care gazduieşte serverul HTTP şi care a oferit pagina cu formularul
respectiv)
3. designul şi implementarea documentului generat de aplicaţia de la punctul 2, ca
răspuns la cererea utilizatorului. De regulă acest document este scris în HTML,
dar această restricţie nu este obligatorie.
Un formular HTML este o secţiune de document care conţine text, elemente HTML
uzuale, dar şi elemente speciale numite controale (similare celor din interfaţa aplicaţiilor
Windows – căsuţe de selecţie, butoane radio, etc), precum şi etichete ale acestor
controale. Utilizatorii vor „completa“ formularul prin modificarea controalelor (sau
conţinutului acestora prin introducerea unui text, selectarea unui element dintr-o listă,
etc) înainte ca acesta să fie trimis unui agent (program) pentru a fi prelucrat (de exemplu
unui server Web, unui server de mail, etc).
Fiecare control are un nume dat de atributul NAME al acelui control, nume ce este
definit (utilizabil, domeniul de definiţie) în cadrul elementului FORM în care acesta
apare. În plus, fiecare control are o valoare iniţială şi o valoare curentă, fiecare fiind
şiruri de caractere (valorile posibile şi restricţiile ce se aplică asupra acestora diferă de la
un control la altul).
În general, valoarea iniţială poate fi specificată prin intermediul valorii atributului
VALUE, dar la un element de tip TEXTAREA valoarea iniţială este dată de conţinutul
acestuia, pe cînd valoarea iniţială a unui element OBJECT este determinată de
implementarea acestuia.
Valoarea curentă a unui control este iniţial setată la valoarea iniţială, apoi ea poate fi
modificată de utilizator prin intermediul acţiunilor ce sînt permise asupra controlului sau
de scripturi.
Valoarea iniţială a unui control nu se modifică şi de aceea atunci cînd un formular este
resetat valorile curente ale fiecărui control sînt readuse la valorile iniţiale. Dacă un
control nu are specificată valoarea iniţială, efectul acestei operaţii este nedefinit (poate fi
imprevizibil).
Cînd un formular este transmis pentru a fi prelucrat, unele controale au numele legat de
valoarea curentă, astfel că se va transmite agentului (programului) care-l prelucrează un
set de dublete alcătuite din numele coontrolului şi valoarea sa curentă. Astfel de controale
sînt numite controale de succes (successful controls).
Limbajul HTML 4.0 defineşte următoarele tipuri de controale:
butoane
Autorii paginilor HTML pot crea 3 tipuri de butoane:
butoane submit: Cînd este activat (apăsat), un astfel de buton trimite un
formular unui agent (program) de prelucrare. Un formular poate conţine mai
mult de un buton submit.
butoane reset: Cînd este activat (apăsat), un astfel de buton resetează toate
controalele la valorile lor inţiale.
butoane push: Aceste butoane nu au o acţiune implicită atunci cind sînt
activate (apăsate). Fiecare astfel de buton poate avea asociat un script de tip
client-side şi generează evenimente care determină execuţia unor astfel de
scripturi (de exemplu cînd se apasă un astfel de buton se poate apela un script
specific).
Autorii crează butoane cu unul din elementele BUTON sau INPUT, prima variantă
fiin mai bogată în opţiuni.
checkbox (căsuţe de marcare)
Checkbox-urile (căsuţele de marcare), ca şi butoanele radio, sînt elemente cu 2 stări
on/off (selectat/deselectat) care pot fi trecute dintr-o stare în alte de către utilizitator.
Un astfel de element (switch) este "on" (selectat) cînd atributul selected al lui este
setat. Cînd un formular este trimis unui agent de prelucrare numai controalele
checkbox ce au valoarea "on" devin controale de succes. Într-un formular mai multe
checkbox-uri pot avea acelaşi nume.
Pentru crearea unui checkbox se foloseşte elementul INPUT.
butoane radio
Butoanele radio sînt exact ca checkbox-urile, cu excepţia faptului că atunci cînd apar
mai multe într-un formular sînt mutual exclusive: cînd un astfel de buton este "on"
(selectat), toate celelalte care au acelaţi nume sînt trecute automat pe "off".
Pentru crearea unui buton radio se foloseşte elementul INPUT.
meniuri
Menurile oferă utilizatorilor posibilitatea de a alege dintre mai multe opţiuni.
Pentru crearea unui control de tip meniu se foloseşte elementul SELECT în
combinaţie cu elementele OPTGROUP şi OPTION.
text input
Autorii pot crea două tipuri de controale pentru a permite utilizatorilor introducerea
unui text. Elementul INPUT crează un control care are doar o singură linie
disponibilă pentru introducerea textului, iar elementul TEXTAREA crează un control
cu mai multe linii în care se poate introduce text. În ambele cazuri textul ce se
introduce devine valoarea curentă a controlului.
file select (selecţie de fişiere)
Acest control permite utilizatorilor să selecteze fişiere astfel încît conţinutul acestora
să fie transmis odată cu formularul.
Pentru crearea unui control tip file select se foloseşte elementul INPUT.
controale ascunse (hidden controls)
Se pot crea controale care să nu fie afişate de către browsere, dar a căror valori să fie
transmise odată cu formularul. Acest tip de control este util pentru a păstra informaţie
între schimburile client/server ce altfel s-ar pierde, datorită naturii „fără stare“
(stateless) a protocolului HTTP.
Pentru crearea unui control ascuns se foloseşte elementul INPUT.
controale tip obiect (object controls)
Autorii pot insera obiecte generice astfel ca valorile asociate acestora să fie transmise
împreună cu celelalte controale.
Pentru crearea unui control ascuns se foloseşte elementul OBJECT.
Elementele utilizate pentru crearea controalelor apar, în general, într-un element FORM,
dar pot apare şi în afara declaraţiei acestui element cînd sînt utilizate pentru a crea
interfeţe, caz în care nu pot fi controale de succes.
Elementul FORM
Sintaxa:
<FORM>... </FORM>
Atribute posibile:
ACTION=URI (handler-ul formularului / programul care îl va prelucra)
METHOD=[ get | post ] (metoda HTTP folosită la trimiterea formularului)
ENCTYPE=ContentType (tipul conţinutului / content type utilizat pentru
trimitere)
ACCEPT-CHARSET=Charsets (codificarea suportată a setului caractere)
TARGET=FrameTarget (frame-ul în care se afişează rezultatele)
ONSUBMIT=Script (scriptul care se execută după trimiterea formularului)
ONRESET=Script (scriptul care se execută după resetarea formularului)
atribute comune
Conţine:
În HTML 4.0 Strict, unul sau mai multe elemente SCRIPT sau elemente de tip
bloc (block-level elements) cu excepţia lui FORM
In HTML 4.0 Transitional, elemente de tip inline sau elemente tip block-level,
exceptînd FORM
Conţinut în:
APPLET, BLOCKQUOTE, BODY, CENTER, DD, DEL, DIV, FIELDSET,
IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Orice formular interactiv începe cu tagul <FORM> şi se termină cu </FORM>, iar
undeva în interiorul formularului se găsesc tag-urile (elementele) care definesc
controalele (INPUT, SELECT, TEXTAREA şi BUTON) prin intermediul cărora
utilizatorul interacţionează cu acesta, precum şi butoanele „speciale“ SUBMIT şi,
opţional, RESET care acţionează asupra formularului ca entitate.
Cele mai importante atribute ale tag-ului sînt ACTION (acţiune) şi METHOD
(metodă), astfel încît tag-ul de început apare de forma:
<FORM ACTION="acţiune" METHOD="metodă">
Valorile lui ACTION specifică natura acţiunii, care va avea loc printr-un program care
va fi executat de serverul care este gazdă pentru document. Acest program va trebui să
preia datele din formular şi să le prelucreze. Astfel:
ACTION="URL" specifică URL-ul programului care va fi executat, de obicei
un program CGI sau un servlet Java.
ACTION="mailto: adresă@domeniu" specifică un program de expediere a
conţinutului formularului. Această acţiune nu este însă suportată de toate
browserele (de exemplu Microsoft Internet Explorer 3.x) care, în acest caz, în
mod tipic, vor deschide o fereastră de compoziţie a unui mesaj email. În afara
acestor neajunsuri, lipsa unui feed-back imediat face această metodă de acţiune
nu foarte recomandată pentru a fi utilizată.
Atributele METHOD şi ENCTYPE specifică metoda utilizată pentru a trimite datele
formularului serverului care gazduieşte programul specificat în ACTION.
Cînd metoda este get (implicită), datele formularului sînt transmise ca o cerere HTTP
GET cu ?form_data adăugat la adresa URI specificată de atributul ACTION.
Utilizarea metodei get permite ca transmiterea (datelor) formularului să fie conţinută
complet în URL. Avantajul este ca se pot crea bookmark-uri („semne de carte“) pe
astfel de adrese, dar are şi dezavantajul că nu poate conţine caractere non-ASCII ca
"é" and "©". Cea mai importantă limitare este dată de cantitatea de date care se pot
transmite şi care depinde de lungimea maximă a adresei URL permisă de browser şi
server. De aceea, pentru siguranţă, orice formular care conţine caractere non-ASCII
sau mai mult de 100 caractere trebuie să utilizeze METHOD=post.
Cînd metoda este post, datele formularului sînt transmise ca o cerere HTTP POST cu
datele formularului în corpul cererii. Majoritatea browserelor sînt incapabile să creeze
un bookmark pe o astfel de cerere, dar posibilitatea transmiteri de caractere non-ASCII
şi posibilitatea de transmite date oricît de mari sînt avantajele faţă de GET.
Atributul ENCTYPE specifică tipul conţinutului (content type) folosit în transmiterea
formularului şi are ca valoare implicită application/x-www-form-urlencoded. Acesta
are ca rezultat perechi nume/valoare trimise serverului sub forma
name1=value1&name2=value2..., cu caracterul spaţiu înlocuit de "+" şi cu caracterele
speciale (ca, de exemplu, "#") înlocuite de "%HH", unde HH este codul hexa al
caracterului respectiv. Sfîrşitul de linie (line break) este codificat ca "%0D%0A" – un
carriage return urmat de un line feed.
Dacă formularul conţine un element INPUT cu atributul TYPE=file, atunci este
preferabil să se folosească un ENCTYPE de tipul multipart/form-data iar METHOD să
fie post.
Pentru preluarea datelor din formularele transmise la server autorii nu trebuie să
cunoască exact formatul în care sînt codificate datele, întrucît există biblioteci publice,
free (ca de exemplu CGI.pm) care oferă rutine ce preiau transparent ceea ce se trimite
cu get sau post (ca application/x-www-form-urlencoded sau multipart/form-data). Se
poate şi simula o astfel de transmitere cu unelte ca cg-eye care permit vizualizarea
imediat, „în oglindă“ a datelor ce s-ar trimite.
Atributul ACCEPT-CHARSET specifică lista de codificări acceptate de handlerul
formularului (programul care-l primeşte şi prelucrează). Valoarea acestui atribut este o
listă de seturi de caractere ("charsets") separate cu virgulă sau blanc. Valoarea
implicită este UNKNOWN şi este considerată, de obicei, codificarea folosită pentru
transmiterea documentului ce conţine formularul.
Atributul TARGET este folosit în cazul frame-urilor pentru a specifica în care frame
se afişează răspunsul. Dacă nu e specificat nici un frame (sau numele nu există),
valoarea implicită este o fereastră nouă. Se pot folosi şi numele speciale de frame-uri:
_blank – ferastră nouă, fără nume
_self – răspunsul se afişează în frame-ul curent (util pentru suprascrierea
atributului
BASE al elementului TARGET)
_parent – răspunsul se afişează în părintele imediat din FRAMESET
_top – răspunsul se afişează în fereastra întreagă, fără frame-uri
FORM mai are şi atribute pentru a specifica acţiuni de tip „client-side scripting“ în
cazul anumitor evenimente (ONSUBMIT şi ONRESET).
Exemplu:
Acest exemplu foloseşte o funcţie (verify) scrisă în JavaScript care este activată cînd
apare evenimentul "onclick" pentru butonul care are pe el textul „Click Me“:
<HEAD>
<META http-equiv="Content-Script-Type" content="text/javascript">
</HEAD>
<BODY>
<FORM action="..." method="post">
<INPUT type="button" value="Click Me" onclick="verify()">
</FORM>
</BODY>
Exemplu:
Acest exemplu sugerează cum poate fi transmis conţinutul unui fişier indicat de
utilizator prin intermediul unui formular. Utilizatorul este întrebat de numele său şi de
lista fişierelor al căror conţinut se doreşte a fi transmis. Prin specificarea valorii
atributului ENCTYPE ca "multipart/form-data", fiecare conţinut va fi „împachetat“
pentru a fi transmis într-o secţiune separată a unui document de tip „multipart“.
<FORM action="http://server.dom/cgi/handle"
enctype="multipart/form-data" method="post">
What is your name? <INPUT type="text" name="name_of_sender">
What files are you sending? <INPUT type="file"
name="name_of_files">
</FORM>
Elementul INPUT
Sintaxa:
<INPUT>
Atribute posibile:
TYPE=[ text | password | checkbox | radio | submit | reset | file | hidden | image |
button ]
NAME=CDATA (numele care se va asocia elementului)
VALUE=CDATA (valoarea introdusă)
CHECKED (buton radio sau checkbox setat/apăsat)
SIZE=CDATA (număr sugerat de caractere pentru introducerea unui text)
MAXLENGTH=Number (număr maxim de caractere pentru introducerea unui
text)
SRC=URI (sursa imaginii)
ALT=CDATA (text alternativ pentru o imagine)
USEMAP=URI (hartă senzitivă de tip client-side image map)
ALIGN=[ top | middle | bottom | left | right ] (alinierea imaginii)
DISABLED (element inactiv/dezactivat)
READONLY (previne modificări asupra elementului)
ACCEPT=ContentTypes (tipul de media folosit la transmiterea fişierelor)
ACCESSKEY=Character (shortcut key)
TABINDEX=Number (poziţia în ordinea de parcurgere cu TAB)
ONFOCUS=Script (elementul a primit focusul)
ONBLUR=Script (elementul a pierdut focusul)
ONSELECT=Script (elementul de tip text a fost selectat)
ONCHANGE=Script (valoarea elementului a fost modificată)
atribute comune
Conţine:
Nimic
Conţinut în:
block-level elements, inline elements, cu excepţia lui BUTTON
Descriere:
Acest element defineşte un control al unui formular (form control) pentru a permite
unui utilizator să introducă date. El este utilizat de obicei în cadrul lui FORM, dar
HTML 4.0 permite şi folosirea lui în orice element block-level sau inline (cu excepţia
lui BUTTON). De remarcat, totuşi că Netscape Navigator NU va afişa nici un element
INPUT în afara unui FORM.
Cînd formularul este transmis valoarea curentă a fiecărui element INPUT din FORM
este trimisă sub forma unei perechi name/value. Atributul NAME oferă numele ce va
fi folosit pentru identificarea controlului respectiv. Tipul valorii depinde de tipul
elementului INPUT.
Un formular care include un element INPUT trebuie să specifice în tagul elementului
FORM METHOD=post şi ENCTYPE="multipart/form-data". Nu toate browserele
permit trimiterea, odată cu formularul şi a conţinutului unui fişier. În acest caz trebuie
utilizate alte metode:
Exemplu:
În exemplul următor se trimite un document HTML pemtru a fi validat. Numele lui se
cere de la utilizator prin intermediul unui formular:
<FORM METHOD=post ACTION="/cgi-bin/validate.cgi" ENCTYPE="multipart/form-data">
<P>
Selectaţi un document HTML pentru a fi trimis spre validare. Dacă browser-ul Dvs. nu
suportă această metodă folosiţi <A HREF="methods.html">metodele alternative de
validare</A>.</P>
<P><INPUT TYPE=file NAME="html_file" ACCEPT="text/html"></P>
<P><INPUT TYPE=submit VALUE="Validate it!"></P>
</FORM>
Elementul INPUT poate avea mai mulţi parametri, cel mai important fiind TYPE,
fiecare element TYPE avînd proprii lui parametri pentru definirea în continuare a
elementului. Parametrul TYPE specifică ce fel de INPUT se aşteaptă de la utilizator şi
poate primi următoarele valori:
Valoare Descriere
Text Permite utilizatorului să introducă un singur rînd de text
Password La fel ca şi Text, dar caracterele tastate de utilizator au ca ecou
asteriscul „*“ sau un alt semn echivalent menit să "ascundă"
textul introdus
Check box Implementează un buton care poate fi setat activ/inactiv
(închis/deschis)
Radio button Permite implementarea unui grup de butoane în care, la un
moment dat, numai unul poate fi activ (setat/deschis)
Button Determină apariţia unui buton care poate fi apăsat
Reset Determină apariţia unui buton care, cînd este selectat, resetează
toate celelalte elemente ale formularului la valorile lor implicite
Submit Afişează un buton care, dacă este apăsat, transmite formularul
URL-ului specificat în ACTION
Image Afişează un buton Submit grafic (cu o imagine)
File Permite selecţia unui fişier
Hidden Invizibil în browser
Exemplu:
<INPUT TYPE="CHECKBOX" NAME="TEST">
Dacă nu este specificat TYPE în elementul INPUT, valoarea implicită atribuită este
TYPE=TEXT.
Atributul NAME este un parametru cerut de toate elementele INPUT, cu excepţia
elementelor SUBMIT şi RESET. Parametrul NAME crează un nume generic care va fi
asociat cu răspunsul utilizatorului şi permite serverului să interpreteze formularul
pentru a determina corelaţia dintre fiecare răspuns al utilizatorului şi elementele
formularului. NAME poate avea orice valoare.
Exemplu:
NAME="cîini" – într-o selecţie de rase de cîini
NAME="profesii" – într-o selecţie de profesii
NAME="adresă" – pentru un cîmp text
Elementul BUTTON
Sintaxa:
<BUTTON> ... </BUTTON>
Atribute posibile:
NAME=CDATA (numele care se va asocia elementului)
VALUE=CDATA (valoarea introdusă)
TYPE=[ submit | reset | button ] (tipul butonului)
DISABLED (element inactiv/dezactivat)
ACCESSKEY=Character (shortcut key)
TABINDEX=Number (poziţia în ordinea de parcurgere cu TAB)
ONFOCUS=Script (elementul a primit focusul)
ONBLUR=Script (elementul a pierdut focusul)
atribute comune
Conţine:
Elemente inline exceptînd A, INPUT, SELECT, TEXTAREA, LABEL,
BUTTON, IFRAME
Elemente block-level exceptînd FORM, ISINDEX, FIELDSET
Conţinut în:
Elemente block-level, elemente inline, cu excepţia lui BUTTON
Descriere:
Acest element crează butoane într-un mod similar cu INPUT, dar oferă mai multe
posibilităţi de afişare (mai multe etichete, asocierea cu imagini, conţinut). Mai mult,
toate browser-ele sugerează pentru aceste butoane apăsarea, spre deosebire de cele
definite cu INPUT care pot fi „plate“. Totuşi elementul este nou în HTML 4.0 şi există
browsere care încă nu-l suportă!
Butoanele care pot fi definite cu acest element sînt submit button (implicit), reset
button şi push button şi sînt stabilite de valoarea lui TYPE. Atributele NAME şi
VALUE determină perechea name/value trimisă la server, oferind posibilitatea de avea
mai multe butoane submit într-un formular.
Exemple de tipuri de butoane:
<BUTTON NAME=submit VALUE=modify ACCESSKEY=M>Modificare </BUTTON>
<BUTTON NAME=submit VALUE=continue ACCESSKEY=C>Continuare </BUTTON>
<BUTTON ACCESSKEY=S>Submit <IMG SRC="checkmark.gif"
ALT="✔"></BUTTON>
<BUTTON TYPE=reset ACCESSKEY=R>Reset <IMG SRC="x.gif"
ALT="✘"></BUTTON>
<BUTTON TYPE=button ID=toggler ONCLICK="toggle()" ACCESSKEY=H>Hide
</BUTTON>
Atributul DISABLE face butonul inaccesibil: nu se mai poate apăsa, nu mai primeşte
focusul şi este sărit cînd se navighează cu TAB.
Atributele ACCESSKEY, TABINDEX şi cele care specifică acţiuni de scriptare
(ONFOCUS şi ONBLUR) se folosesc la fel ca şi la INPUT.
Exemplu:
Acest exemplu îl extinde pe cel de la INPUT, dar crează butoanele Submit şi Reset cu
BUTON în locul lui INPUT. Butoanele pot conţine imagini (inserate cu elementul
IMG) şi se recomandă folosirea atributului ALT al acestora pentru cazul în care nu
sînt afişate.
<FORM action="http://somesite.com/prog/adduser" method="post">
<P>
First name: <INPUT type="text" name="firstname"><BR>
Last name: <INPUT type="text" name="lastname"><BR>
email: <INPUT type="text" name="email"><BR>
<INPUT type="radio" name="sex" value="Male"> Male<BR>
<INPUT type="radio" name="sex" value="Female"> Female<BR>
<BUTTON name="submit" value="submit" type="submit">
Send<IMG src="/icons/wow.gif" alt="wow">
</BUTTON>
<BUTTON name="reset" type="reset">
Reset<IMG src="/icons/oops.gif" alt="oops">
</BUTTON>
</P>
</FORM>
Exemplu ilegal:
De remarcat că este ilegal să se asocieze o hartă senzitivă cu un IMG care apare ca şi
conţinut al unui element BUTTON. De aceea exemplul următor este ILEGAL!
<BUTTON>
<IMG src="foo.gif" usemap="...">
</BUTTON>
Elementul TEXTAREA
Sintaxa:
<TEXTAREA> ... </TEXTAREA>
Atribute posibile:
NAME=CDATA (numele care se va asocia elementului)
ROWS=Number (număr de rînduri)
COLS=Number (număr de coloane)
DISABLED (element inactiv/dezactivat)
READONLY (previne modificări asupra elementului)
ACCESSKEY=Character (shortcut key)
TABINDEX=Number (poziţia în ordinea de parcurgere cu TAB)
ONFOCUS=Script (elementul a primit focusul)
ONBLUR=Script (elementul a pierdut focusul)
ONSELECT=Script (elementul de tip text a fost selectat)
ONCHANGE=Script (valoarea elementului a fost modificată)
atribute comune
Conţine:
Text (incluzînd entităţi)
Conţinut în:
Elemente block-level, elemente inline, cu excepţia lui BUTTON
Descriere:
TEXTAREA crează un control pentru introducerea unui text multi-linie, valoarea
iniţială fiind afişată de browser la început în interiorul controlului (nu trebuie să
conţină taguri HTML). El este utilizat de obicei în cadrul lui FORM, dar HTML 4.0
permite şi folosirea lui în orice element block-level sau inline (cu excepţia lui
BUTTON). De remarcat, totuşi că Netscape Navigator NU va afişa nici un element
TEXTAREA în afara unui formular definit cu FORM.
Acest element oferă posibilitatea de a accepta de la utilizator un bloc de text, astfel că
acesta îşi poate "lipi" un document întreg într-o pagină HTML. Elementul
TEXTAREA nu este o comandă de tip INPUT ci una de cu totul alt tip. Ca şi
elementele INPUT, regiunile text au un nume care permite identificarea acestui cîmp
de către server, care va primi informaţia de formă nume=conţinut.
Elementul TEXTAREA are parametrii (obligatorii) ROWS şi COLS care specifică
dimensiunile ferestrei afişate utilizatorului, exprimate în număr de caractere pe
orizontală, respectiv verticală. Aceasta nu înseamnă o limitare a utilizatorului în
privinţa volumului de informaţie care poate fi tastat deoarece umplerea ferestrei
determină apariţia unor bare de derulare. Se limitează totuşi cantitatea totală de text ce
se poate introduce (în practică) la 32 ... 64 KB. Limitarea finală este făcută de scriptul
CGI sau de servletul Java care primeşte formularul.
Elementul TEXTAREA nu este vid, ceea ce înseamnă că trebuie un terminator
</TEXTAREA>. Ceea ce se află între cele două etichete va apare ca text implicit în
cîmpul definit.
Atributul READONLY, nou în HTML 4.0 şi destul de puţin suportat, determină
afişarea unui text nemodificabil. Diferenţa faţă de textul simplu este ca acesta este
trimis serverului odată cu formularul.
Atributul DISABLED se comportă ca şi la INPUT, transformînd textul în read-only.
Atributele ACCESSKEY, TABINDEX şi cele care specifică acţiuni de scriptare
(ONFOCUS, ONBLUR, ONSELECT şi ONCHANGE) se folosesc la fel ca şi la
INPUT.
Exemplu:
Acest exemplu crează un control TEXTAREA de 20 de rînduri şi 80 de coloane, avînd
iniţial 2 linii de text. Acest control este urmat de două butoane: Submit şi Reset.
<FORM action="http://somesite.com/prog/text-read" method="post">
<P>
<TEXTAREA name="thetext" rows="20" cols="80">
Prima linie a textului iniţial.
A doua linie a textului iniţial.
</TEXTAREA>
<INPUT type="submit" value="Send">
<INPUT type="reset">
</P>
</FORM>
Exemplu:
Se crează un meniu ce permite selectarea unor componente software care să se
instaleze. Prima şi a doua componentă sînt preselectate şi pot fi deselectate, celelalte
nefiind preselectate. Atributul SIZE indică faptul că meniul are doar 4 rînduri, chiar
dacă sînt 7 opţiuni. Ce nu se vede se accesează după ce se face scroll. Dupa definirea
meniului apar butoanele Submit şi Reset.
<FORM action="http://somesite.com/prog/component-select"
method="post">
<P>
<SELECT multiple size="4" name="component-select">
<OPTION selected value="Component_1_a">Component_1</OPTION>
<OPTION selected value="Component_1_b">Component_2</OPTION>
<OPTION>Component_3</OPTION>
<OPTION>Component_4</OPTION>
<OPTION>Component_5</OPTION>
<OPTION>Component_6</OPTION>
<OPTION>Component_7</OPTION>
</SELECT>
<INPUT type="submit" value="Send"><INPUT type="reset">
</P>
</FORM>
Exemplu:
În acest exemplu se utilizează OPTGROUP pentru a grupa opţiunile meniului:
<FORM action="http://somesite.com/prog/someprog" method="post">
<P>
<SELECT name="ComOS">
<OPTGROUP label="PortMaster 3">
<OPTION label="3.7.1" value="pm3_3.7.1">PortMaster 3 with
ComOS 3.7.1
<OPTION label="3.7" value="pm3_3.7">PortMaster 3 with
ComOS 3.7
<OPTION label="3.5" value="pm3_3.5">PortMaster 3 with
ComOS 3.5
</OPTGROUP>
<OPTGROUP label="PortMaster 2">
<OPTION label="3.7" value="pm2_3.7">PortMaster 2 with
ComOS 3.7
<OPTION label="3.5" value="pm2_3.5">PortMaster 2 with
ComOS 3.5
</OPTGROUP>
<OPTGROUP label="IRX">
<OPTION label="3.7R" value="IRX_3.7R">IRX with ComOS 3.7R
<OPTION label="3.5R" value="IRX_3.5R">IRX with ComOS 3.5R
</OPTGROUP>
</SELECT>
</FORM>
Elementul SELECT
Sintaxa:
<SELECT> ... </SELECT>
Atribute posibile:
NAME=CDATA (numele care se va asocia elementului)
MULTIPLE (permite selecţii multiple)
SIZE=Number (numărul de opţiuni vizibile)
DISABLED (element inactiv/dezactivat)
TABINDEX=Number (poziţia în ordinea de parcurgere cu TAB)
ONFOCUS=Script (elementul a primit focusul)
ONBLUR=Script (elementul a pierdut focusul)
ONCHANGE=Script (valoarea elementului a fost modificată)
atribute comune
Conţine:
Unul sau mai multe elemente OPTGROUP sau OPTION
Conţinut în:
elemente de tip block-level, elemente inline, cu excepţia lui BUTTON
Descriere:
Acest element defineşte un control pentru selecţia dintr-o listă de opţiuni. El este
utilizat de obicei în cadrul lui FORM, dar HTML 4.0 permite şi folosirea lui în orice
element block-level sau inline (cu excepţia lui BUTTON). De remarcat, totuşi că
Netscape Navigator NU va afişa nici un element SELECT în afara unui formular
definit cu FORM.
Elementul SELECT conţine unul sau mai multe elemente OPTGROUP sau OPTION
pentru a oferi un meniu de posibilităţi de alegere pentru utilizator. Fiecare opţiune este
conţinută într-un element OPTION, iar acestea pot fi grupate logic cu OPTGROUP.
Valoarea atributului NAME va fi trimisă serverului ca identificator al controlului
(împreună cu opţiunea selectată).
Elementul SELECT are un parametru opţional, SIZE. Dacă acest parametru lipseşte,
valoarea lui implicită este l, lista va fi de tip drop-down şi din listă poate fi selectat
doar un singur element. Utilizarea este pentru situaţii similare celor rezolvate de
butoanele radio. Dacă parametrul este mai mare decît 1, lista este prezentată într-o
fereastră inserată, valoarea lui SIZE indicînd cîte elemente pot fi văzute simultan.
Dacă lista este mai lungă, celelalte elemente pot fi văzute cu ajutorul barei de derulare
(scroll) care apare în dreapta listei.
Un alt parametru opţional pentru <SELECT> este MULTIPLE. Parametrul nu are o
valoare numerică asociată, iar prezenţa lui asigură doar posibilitatea selecţiei mai
multor elemente ale listei simultan (cu ajutorul tastei CTRL) care vor fi trimise la
Submit, ca în exemplul următor.
<P>Selectaţi una sau mai multe secţiuni în care doriţi să căutaţi:
<SELECT NAME=sections MULTIPLE>
<OPTION>Web Authoring Reference</OPTION>
<OPTION>FAQ Archives</OPTION>
<OPTION>Design Elements</OPTION>
<OPTION>Tools</OPTION>
<OPTION>Feature Article</OPTION>
</SELECT>
Atributele DISABLED şi TABINDEX, precum şi cele legate de acţiunile de scriptare
pe anumite evenimente sînt similare cu cele de la INPUT.
Exemplu:
Exemplul următor crează un meniu de 5 opţiuni (5 elemente OPTION), afişat într-o
fereastră în care sînt vizibile simultan 3 opţiuni (SIZE=3), prima fiind selectată
implicit (OPTION SELECTED>Roşu), cu posibilitatea de a selecta mai multe opţiuni
(MULTIPLE).
<FORM>
Selectaţi culorile favorite din următoare listă:
<SELECT NAME="culori" SIZE=3 MULTIPLE>
<OPTION SELECTED>Roşu
<OPTION>Verde
<OPTION>Albastru
<OPTION>Turcoaz
<OPTION>Magenta
</SELECT>
</FORM>
Elementul OPTGROUP
Sintaxa:
<OPTGROUP> ... </OPTGROUP>
Atribute posibile:
LABEL=Text (eticheta grupului de opţiuni)
DISABLED (grupul de opţiuni este dezactivat)
atribute comune
Conţine:
Unul sau mai multe elemente OPTION
Conţinut în:
elementul SELECT
Descriere:
Acest element defineşte un grup de opţiuni într-un meniu definit cu SELECT şi trebuie
să conţină cel puţin un element OPTION. Atributul LABEL este obligatoriu, identifică
grupul de opţiuni, fiind afişat de browser şi pentru utilizator. El trebuie să descrie
grupul de opţiuni grupate dpdv logic împreună cu atributele LABEL ale fiecărei
opţiuni în parte.
OPTGROUP nu este foarte bine suportat de toate browserele, dar cele care nu îl
recunosc nu crează nici o problemă. Cele care îl suportă permit o afişare mai compactă
prin intermediul meniurilor cascadate (submeniuri). Cascadarea este însă în HTML 4.0
doar pe un singur nivel (nu sînt permise OPTGROUP în OPTGROUP)!
Atributul DISABLED face întregul grup de opţiuni inactive (le dezactivează), acestea
neputînd fi selectate şi nici trimise la server odată cu formularul.
Exemplu:
Exemplul următor se poate folosi pentru a cere utilizatorului informaţii despre
browser-ul pe care îl utilizează mai frecvent. Se utilizează OPTGROUP pentru a grupa
informaţiile legate de acelaşi tip de browser (Netscape Navigator, Microsoft Internet
Explorer, Opera sau altul).
Elementul OPTION
Sintaxa:
<OPTION > ... </OPTION >
Atribute posibile:
VALUE=CDATA (valoarea opţiunii)
SELECTED (opţiune iniţial selectată)
DISABLED (dezactivată/inactivă)
LABEL=Text (eticheta opţiunii)
atribute comune
Conţine:
Text (inclusiv entităţi)
Conţinut în:
elementul SELECT sau OPTGROUP
Descriere:
Acest element defineşte o opţiune (un elemnt de meniu) într-un meniu (listă de
opţiuni). Valoarea acestei opţiuni este cea care va fi trimisă la Submit şi este
specificată cu atributul VALUE. Dacă lipseşte, se consideră valoare a acestui element
conţinutul lui OPTION.
Atributul boolean SELECTED defineşte o opţiune ce este iniţial selectată –
preselectată (a se vedea paragraful anterior relativ la elemente preselectate). Există
posibilitatea de a stabili ca opţiune preselectată o valoare fără semnificaţie (dummy)
pentru a fi siguri că utilizatorul selectează o opţiune şi nu trece doar peste meniu. De
exemplu, starea civilă se poate cere astfel:
<SELECT NAME="marital_status">
<OPTION SELECTED VALUE="">Select...</OPTION>
<OPTION>Single</OPTION>
<OPTION>Married</OPTION>
<OPTION>Separated</OPTION>
<OPTION>Divorced</OPTION>
<OPTION>Widowed</OPTION>
</SELECT>
Atributul DISABLED, deşi nu este suportat global, determină transformarea unei
opţiuni în opţiune inactivă (nu poate fi selectată, nu este trimisă odată cu formularul).
Atributul LABEL specifică eticheta unei opţiuni, care altfel (implicit) este conţinutul
elementului. Se recomandă folosirea ei pentru că permite utilizarea mult mai uşoară a
grupării cu OPTGROUP, fără a sacrifica compatibilitatea cu browser-ele care nu
suportă acest element.
Exemplu:
<P>Which Web browser do you use most often?
<SELECT NAME=browser>
<OPTGROUP LABEL="Netscape Navigator">
<OPTION LABEL="4.x or higher">Netscape Navigator
4.x</OPTION>
<OPTION LABEL="3.x">Netscape Navigator 3.x</OPTION>
<OPTION LABEL="2.x">Netscape Navigator 2.x</OPTION>
<OPTION LABEL="1.x">Netscape Navigator 1.x</OPTION>
</OPTGROUP>
<OPTGROUP LABEL="Microsoft Internet Explorer">
<OPTION LABEL="4.x or higher">Microsoft Internet Explorer
4.x</OPTION>
<OPTION LABEL="3.x">Microsoft Internet Explorer 3.x</OPTION>
<OPTION LABEL="2.x">Microsoft Internet Explorer 2.x</OPTION>
<OPTION LABEL="1.x">Microsoft Internet Explorer 1.x</OPTION>
</OPTGROUP>
<OPTGROUP LABEL="Opera">
<OPTION LABEL="3.x or higher">Opera 3.x or higher</OPTION>
<OPTION LABEL="2.x">Opera 2.x</OPTION>
</OPTGROUP>
<OPTION>Other</OPTION>
</SELECT>
</P>
Elementul LABEL
Sintaxa:
<LABEL> ... </LABEL>
Atribute posibile:
FOR=IDREF (cîmpul formularului asociat)
ACCESSKEY=Character (shortcut key)
ONFOCUS=Script (elementul a primit focusul)
ONBLUR=Script (elementul a pierdut focusul)
atribute comune
Conţine:
elemente inline cu excepţia lui LABEL
Conţinut în:
elemente de tip block-level, elemente inline, cu excepţia lui BUTTON
Descriere:
Acest element asociază o etichetă (label) cu un control al unui formular. Prin această
asociere autorii paginilor Web oferă sugestii importante utilizatorilor de browsere
auditive, iar celor care folosesc browsere vizuale li se permite duplicarea unor
caracteristici ale interfeţei utilizator (GUI), cum ar fi, de exemplu, posibilitatea de a
apăsa o etichetă (text) pentru a selecta un buton radio sau o căsuţă de marcare.
Fiecare element LABEL este asociat cu exact un control. Conţinutul elementului este
eticheta controlului şi poate include elemente inline, ca de exemplu IMG sau
STRONG.
Atributul FOR specifică în mod explicit controlul care se asociază cu LABEL.
Valoarea lui FOR trebuie să se potrivească cu valoarea atributului ID al controlului
asociat. În absenţa lui FOR, elementul LABEL trebuie să conţină controlul asociat!
Această metodă (de asociere implicită) funcţionează în majoritatea cazurilor, dar
devine inutulizabilă cînd eticheta şi controlul asociat sînt în celule diferite de tabel, în
paragrafe sau diviziuni diferite .
Atributul ACCESSKEY, precum şi cele legate de acţiunile de scriptare pe anumite
evenimente sînt similare cu cele de la INPUT.
Exemplu:
Acest exemplu ilustrează ambele metode de asociere a unei etichete cu un control:
asocierea explicită (cu FOR) şi asocierea implicită (control conţinut de LABEL):
<TABLE>
<TR>
<TD>
<LABEL FOR=user ACCESSKEY=U>User</LABEL>
</TD>
<TD>
<SELECT NAME=user ID=user>
<OPTION>Jean</OPTION>
<OPTION>Kim</OPTION>
<OPTION>Brian</OPTION>
</SELECT>
</TD>
</TR>
<TR>
<TD><LABEL FOR=passwd ACCESSKEY=P>Password</LABEL></TD>
<TD><INPUT TYPE=password NAME=password ID=passwd></TD>
</TR>
</TABLE>
<P>
<LABEL ACCESSKEY=S>
<INPUT TYPE=checkbox NAME=save VALUE=yes>
Save user name and password in a cookie
</LABEL>
</P>
<P>
<LABEL ACCESSKEY=C>
Comments to post:
<TEXTAREA NAME=comments ROWS=8 COLS=50></TEXTAREA>
</LABEL>
</P>
Elementul FIELDSET
Sintaxa:
<FIELDSET> ... </ FIELDSET >
Atribute posibile:
atribute comune
Conţine:
Un element LEGEND urmat de zero sau mai multe elemente de tip bloc sau in-
line.
Conţinut în:
APPLET, BLOCKQUOTE, BODY, CENTER, DD, DEL, DIV, FIELDSET,
FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD,
TH
Descriere:
Acest element defineşte un grup de controale într-un formular. Prin această operaţie
de grupare, formularele se divid în părţi mai mici, mai uşor de întreţinut, utilizatorul
putîndu-se orienta mai uşor, îmbunătăţind modul de utilizare atît pentru browserele
vizuale cît şi pentru cele auditive.
Chiar dacă FIELDSET nu este suportat de toate browser-ele, el poate fi utilizat în
deplină siguranţă prin includerea lui între tagurile <P> şi </P>, sau prin inserarea unui
tag P înainte de FIELDSET, în acest fel browser-ele care nu-l recunosc vor include
conţinutul lui într-un element de tip bloc, separat de restul formularului.
Conţinutul lui trebuie să înceapă cu un element LEGEND care să ofere un titlu (o
explicaţie) pentru grupul de controale, apoi pot să apară oricîte elemente inline sau de
tip bloc, inclusiv un alt element FIELDSET.
Exemplu:
Acest exemplu defineşte un formular pentru comanda unor informaţii (manuale): ghid
HTML 3.2, ghid HTML 4.0 sau manual de referinţă CSS. Se cer datele clientului
(numele, adresa de e-mail, adresa postală), se cer informaţii despre ceea ce se doreşte a
se cumpăra şi apoi despre modalitatea de plată. Fiecare grup de informaţii se află într-
un FIELDSET separat, fiecare avînd un element LEGEND asociat. La sfîrşit se
introduc cele 2 butoane obligatorii într-un formular (Submit şi Reset), trimiterea
formularului făcîndu-se către un program CGI (order.cgi) aflat în folderul /cgi.
<P>
<INPUT TYPE=submit VALUE="Submit order">
<INPUT TYPE=reset VALUE="Clear order form">
</P>
</FORM>
Elementul LEGEND
Sintaxa:
<LEGEND> ... </LEGEND>
Atribute posibile:
ACCESSKEY=Character (shortcut key)
ALIGN=[ top | bottom | left | right ] (alinierea relativă la FIELDSET)
atribute comune
Conţine:
elemente inline
Conţinut în:
FIELDSET
Descriere:
Acest element defineşte un titlu (explicaţie) pentru un grup de controale definite cu
FIELDSET. Elementul LEGEND trebuie să apară la începutul lui FIELDSET, înainte
de orice alt element. Chair dacă nu este suportat de toate browserele, poate fi utilizat în
siguranţă dacă este urmat imediat de un element de tip bloc. Pentru astfel de browsere
se pot folosi elemente ca STRONG, B sau BIG pentru a sugera faptul că acela este
titlul unui grup de controale.
Atributul ACCESSKEY se foloseşte la fel ca la INPUT, iar atributul (depăşit) ALIGN
sugerează poziţia relativă faţă de FIELDSET. Valorile posibile sînt: top, bottom, left,
right. Chair dacă e depăşit, este interesant de remarcat că în tehnica style-sheet-urilor
nu există alternativă!
<FIELDSET>
<LEGEND ACCESSKEY=C>Credit Card Information</LEGEND>
<P>
<LABEL ACCESSKEY=V>
<INPUT TYPE=radio NAME=card VALUE=visa> Visa
</LABEL>
<LABEL ACCESSKEY=M>
<INPUT TYPE=radio NAME=card VALUE=mc> MasterCard
</LABEL>
<BR>
<LABEL ACCESSKEY=N>
Number: <INPUT TYPE=text NAME=number>
</LABEL>
<BR>
<LABEL ACCESSKEY=E>
Expiry: <INPUT TYPE=text NAME=expiry>
</LABEL>
</P>
</FIELDSET>
Metoda "get" trebuie folosită cînd formularul este idempotent, adică nu cauzează alte
efecte laterale. Multe căutări în bazele de date nu au efecte laterale (secundare, ascunse)
vizibile şi reprezintă aplicaţii ideale pentru această metodă. În plus datele din setul de
date al formularului trebuie să fie obligatoriu, în exclusivitate, caractere ASCII.
Dacă, însă, serviciul asociat cu procesarea formularului are efecte laterale (side-effects),
ca de exemplu cazul în care formularul modifică baza de date sau reprezintă o subscriere
la un serviciu, se va folosi metoda "post". Aceasta oferă şi posibilitatea de a trimite date
din întreg setul de caractere (Unicode), prin specificarea atributului
enctype="multipart/form-data".
Dacă un control nu are o valoare curentă cînd formularul este transmis, browserul nu este
obligat să îl trateze ca pe un control de succes. În plus, nu vor fi considerate controale de
succes nici:
Butoanele Reset
Elementele OBJECT care au atributul DECLARE setat.
Controalele ascunse (hidden) care chiar dacă nu sînt afişate de browsere (nu sînt vizibile)
pot fi controale de succes.
Exemplu:
<FORM action="..." method="post">
<P>
<INPUT type="password" style="display:none"
name="invisible-password" value="mypassword">
</P>
</FORM>
va crea un control de succes pentru elementul parolă, adică o pereche din numele
"invisible-password" şi valoarea "mypassword".
3. Procesarea datelor unui formular
Cînd utilizatorul trimite un formular (prin activarea butonului Submit), browserul său
realizează următorii paşi (următoarele acţiuni):
Pasul 1: Identificarea controalelor de succes (successful controls)
Pasul 2: Crearea unui set de date asociat formularului
Un set de date asociat unui formular este o secvenţă de perechi nume-control/valoare-
curentă construită din controale de succes.
Pasul 3: Codificarea setului de date
Setul de date creat la pasul anterior este codificat în conformitate cu tipul conţinutului
(content type) specificat de atributul ENCTYPE al elementului FORM.
Pasul 4: Transmiterea setului de date codificat
În final setul de date astfel codificat este trimis de browserul client agentului de
prelucrare (programului) desemnat de atributul ACTION, folosind protocolul specificat
de atributul METHOD.
Această specificare nu acoperă toate metodele valide de trimitere sau tipurile de conţinut
ce pot fi folosite cu formularele. Totuşi, browserele compatibile HTML 4.0 trebuie să
suporte convenţiile stabilite în următoarele cazuri:
Dacă metoda este "get" şi acţiunea (atributul ACTION) este o adresă (URI) HTTP,
browserul ia valoarea atributului ACTION, adaugă un „?“ la ea, iar apoi adaugă
setul de date asociat cu formularul, stabilind tipul conţinutului (content type) la
"application/x-www-form-urlencoded". Browserul urmează apoi noua legătura
astfel creată. În acest scenariu, datele formularului sînt restricţionate la codurile
ASCII.
Dacă metoda este "post" şi acţiunea (atributul ACTION) este o adresă (URI) HTTP,
browserul va genera o tranzacţie HTTP "post" folosind valoarea atributului
ACTION şi un mesaj creat în conformitate cu tipul conţinutului (content type)
specificat de atributul ENCTYPE.
Pentru orice altă valoare a atributelor ACTION şi METHOD comportamentul este
nespecificat. Browserele trebuie să afişeze răspunsul generat de tranzacţiile HTTP "get"
şi "post".
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files";
filename="file1.txt"
Content-Type: text/plain
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files"
Content-Type: multipart/mixed; boundary=BbC04y
--BbC04y
Content-Disposition: attachment; filename="file1.txt"
Content-Type: text/plain
...contents of file2.gif...
--BbC04y--
--AaB03x—
Capitolul 8.
Alte elemente ale limbajului HTML
8.1. Formule matematice
Una din cele mai ambiţioase caracteristici aduse de specificaţiile HTML 3.0 este
posibilitatea de a afişa formule matematice. Toate ecuaţiile matematice încep cu
<MATH> şi se termină cu </MATH> care suportă atributele ID (pentru ancore) şi
CLASS (pentru subclasele ecuaţiilor; de exemplu CHEM, pentru chimie). Între aceste
tag-uri se pot introduce mici ecuaţii matematice (pe un singur rînd). Posibilităţile de
aliniere sînt reduse şi recomandarea este să se utilizeze tabele pentru alinierea seturilor
multiple de ecuaţii. Entităţile matematice (caractere greceşti, simboluri, săgeţi, etc) le
găsiţi listate la adresa http://www.hpl.hp.co.uk/people/dsr/html/maths.html
şi sînt de forma:
α alfa
β beta
γ gama, etc.
Exponenţii sînt introduşi de forma <SUP>Exponent</SUP> (superscript), iar indicii
sînt introduşi prin <SUB>Indice</SUB> (subscript).
Exemple:
<math>
x<sup>2</sup>+y<sup>2</sup>=r<sup>2</sup>
</math>
<math>
∑<sup>&inf;</sup><sub>n=1</sub>
</math>
Simbolurile anumitor operaţii matematice sînt introduse de forma:
<tag operaţie>expresie afectată</ tag operaţie>
ca în cazul următor, pentru radical de ordinul doi:
<SQRT>x+y</SQRT>
Matricile (arrays) se introduc de o manieră asemănătoare cu tabelele, rînd cu rînd,
element cu element:
<math>
<array>
<row><item>a<item>b
<row><item>c<item>d
</array>
</math>
8.2. Documente dinamice
Felul în care este prezentat un document pe Web este, din punctul de vedere al
tehnoredactării, cu mult în urma publicaţiilor tradiţionale, pe hîrtie. Limbajul HTML se
dezvoltă anevoios. A început prin a imita stîngaci publicaţiile tipărite dar a continuat prin
a-şi identifica trăsături aparte, inaccesibile publicaţiilor clasice, de la cele care ţin de
tehnologia în sine şi pînă la cele care ţin de noile posibilităţi estetice. Documentele
dinamice reprezintă un pas înainte făcut de tehnologia Web în a-şi găsi propria identitate.
1. Client pull
<META HTTP-EQUIV="Refresh" CONTENT="interval_de_timp [;URL]">
Client-pull este capacitatea navigatorului (a clientului) de a cere singur documente noi
fără vreo intervenţie a utilizatorului. Browserele realizează acest lucru folosindu-se de
header-ul HTTP numit Refresh. Refresh este trimis de la server la navigator şi-i spune
navigatorului să ceară un nou document după un anumit număr de secunde (sau imediat).
Modalitatea de a lipi headere HTTP în documente HTML este dată de tag-ul <META>.
Exemplu: Inserarea în prima pagină HTML a codului:
<META HTTP-EQUIV="Refresh" CONTENT="1; URL=http://www.xxx.ro/pagina2.htm1">
va determina navigatorul care a cerut-o să aducă după o secundă şi cea de-a doua pagină.
O idee bună (pentru a nu bloca vreun vizitator al cărui navigator nu înţelege codul) este
introducerea în paginile cu client-pull a unor legături care să-i permită vizitatorului să
"evadeze" fără a închide complet aplicaţia.
2. Server push
O altă modalitate de a realiza documente dinamice este server push. Spre deosebire de
client pull, unde navigatorul iniţia conectări multiple cu serverul, în acest caz serverul
este cel care menţine legătura deschisă şi pompează date către client. Această facilitate
poate fi folosită fie pentru a trimite mai multe pagini ale documentului către client
(rezultat similar cu client pull) fie pentru a trimite clientului imagini care se înlocuiesc
succesiv în acelaşi loc dînd impresia de animaţie în documentul HTML.
Server push se bazează pe un tip de document MIME special, numit multipart/mixed.
Acest tip MIME este utilizat pentru mesaje de poştă care conţin diferite tipuri de fişiere
de date. Server push utilizează o variantă a tipului multipart MIME numit multipart/x-
mixed-replace în care un eşantion de date înlocuieşte integral un eşantion precedent.
Rezultatul este că server-push poate coda şi trimite mai multe tipuri de informaţie (GIF,
text HTML, text ASCII, etc) într-unul şi acelaşi document. Headerul dă instrucţiuni
navigatorului să înlocuiască fiecare segment de document cu noul element ce a fost
încărcat, trimis automat de către server.
Imaginile animate constituie una din cele mai utilizate aplicaţii ale acestei tehnologii;
animarea este realizată prin trimiterea unui document multipart ce constă într-o secvenţă
liniară de imagini GIF, fiecare dintre aceste imagini reprezentând un cadru de animaţie.
Browserul afişează aceste imagini serial, una după alta, producând astfel efectul de
mişcare.
Implementarea tehnologiei server-push este mai complicată decât cea de client-pull,
deoarece nu există un tag specific şi necesită aplicaţii CGI specifice.
8.3. Utilizarea mediilor externe: imagini, sunete şi video
Mediile externe sînt fişiere care nu pot fi afişate direct de navigatorul Web. Fişiere
externe pot fi orice fişiere pe care le puteţi crea (video MPEG, fişiere PostScript, fişiere
arhivate, etc). Legătura dintr-un document HTML la un astfel de fişier se face utilizînd
tag-ul <A>.
Cînd serverul trimite un anumit fişier navigatorului, el include informaţii despre tipul
fişierului utilizînd un mesaj special trimis odată cu fişierul. Dacă navigatorul nu poate
afişa acel tip de fişier, el încearcă să identifice (dintr-o listă cunoscută) o aplicaţie
ajutătoare (numită uneori helper sau viewer), căreia să-i treacă fişierul. Dacă tipul
fişierului este recunoscut şi aplicaţia ajutătoare corespunzătoare este definită, navigatorul
startează aplicaţia şi îi trece fişierul. Aplicaţia, la rîndul ei, va prelucra fişierul care
constituie mediul extern, care nu a putut fi interpretat de navigator.
Dacă navigatorul nu identifică tipul fişierului atunci îl salvează pe disc după ce în
prealabil (de regulă) cere permisiunea utilizatorului. Navigatorul utilizează aplicaţiile
ajutătoare şi în cazul în care fişierele sînt încărcate de pe discul local, cu deosebirea că în
aceste cazuri utilizează extensiile fişierelor pentru a identifica tipul de fişier. Acesta este
de fapt şi motivul pentru care trebuie utilizate extensiile .html sau .gif pentru
documentele HTML şi imagini GIF; în cazul că lucrăm local, navigatorul poate identifica
tipurile de fişiere.
Acest mod de lucru face ca dimensiunile navigatoarelor să rămînă în continuare mici. De
altfel, nu există nici un motiv puternic ca acestea să includă viewere pentru tipuri de
fişiere mai rar întîlnite. Fiecare navigator are o listă care mapează extensiile fişierelor şi
tipurile corespunzătoare de aplicaţii.
Specificarea mediilor externe în HTML se face cu ajutorul tag-ului <A> şi a atributului
HREF, ca în cazul legăturilor la toate celelalte documente HTML:
<A HREF="fişier extern">Textul care descrie fişierul pentru vizitator</A>
Se obişnuieşte inserarea unor informaţii suplimentare despre fişier: formatul fişierului,
dimensiune sau orice alte informaţii care l-ar ajuta pe cel ajuns aici să decidă dacă să ia
fişierul sau nu.
1. Imagini externe
Formatul cel mai des utilizat în documentele HTML este GIF, afişabil de majoritatea
navigatoarelor grafice. Utilizarea imaginilor externe conferă însă o mai mare flexibilitate.
Cîteva din cele mai întîlnite formate sînt următoarele:
2. Sunete
Utilizarea sunetelor se poate face fie pentru inserarea unor adnotaţii la fişierele text, fie
pentru mesaje de bunvenit sau clipuri audio.
Deocamdată singurul format sonor independent de platformă este AU (utilizat de Sun
Microsystem şi NeXT pentru standardul lor audio). AU permite mai multe tipuri de
rezoluţii şi eşantionare dar cel mai răspîndit este mono, cu rezoluţie verticală pe 8 biţi şi
eşantionare orizontală pe 8kHZ (micro-law), conceput iniţial pentru industria telefonică
din Statele Unite. Echivalentul său european este A-law, în mare parte asemănător.
Calitatea sunetului este destul de modestă şi din această cauză vor fi întîlnite destul de
frecvent formate specifice unei anumite platforme dar care oferă sunet de o mai bună
calitate. Cele mai răspîndite sînt:
Format Extensie Utilizări
AU .au Dezvoltat iniţial pentru eşantionări pe 8 biţi, este în
prezent perfecţionat de o versiune pe 11 biţi. Fişierele
AU tind să fie mici, compacte, uşor de luat şi utilizabile
pe orice tip de computer deşi nu este încă un standard
internaţional
WAV .wav Este formatul audio pentru Microsoft Windows.
Fişierele .wav tind să fie de calitate mai bună decît .au
dar si fişierele sînt mai voluminoase. Permit orice
rezoluţie verticală şi orice frecventă de eşantionare
MPEG .mp2, MPEG este mai mult cunoscut ca standard video decît
Audio .mp3 audio dar porţiunea de standard pentru audio permite
obţinerea unor sunete de foarte bună calitate şi
modalităţi de redare există pe mai multe platforme
AIFF/AIFC .aiff, .aif AIFF (Audio Interchange File Format) este formatul
fişierelor sonore dezvoltat de Apple pentru Macintosh
dar adoptat şi de alţii (SGI). Rezoluţie verticală stereo/
mono pe 8 sau 16 biţi. Nu este un fişier foarte comun
pentru Web. Formatul are aceleaşi limitări ca şi .wav în
ceea ce priveşte compatibilitatea multiplatformă. AIFC
este AIFF cu compresie incorporată
Recomandările generale privind inserarea fişierelor externe sînt valabile şi aici. Inserarea
unui fişier audio trebuie făcută astfel:
<A HREF="audio_clip.au">Puţină muzică (375K, format AU)</A>
(se adaugă informaţii privind ce anume conţine fişierul, formatul si cît este de mare).
3. Video
Clipurile video sînt o combinaţie de imagine şi sunet asemănătoare unui film. Ca şi în
cazul clipurilor audio, fişierele video nu sînt redate direct de navigatoare, acestea avînd
nevoie de aplicaţii ajutătoare. Cu alte cuvinte, fişierele trebuie luate mai întîi de către
vizitator şi apoi redate cu unul din viewer-ele capabile să redea un clip video.
Marea problemă cu fişierele video este dimensiunea acestora. Clipurile video sînt uriaşe,
de regulă de 1-2 MB. Motivul este că aceste fişiere sînt compuse din sute de cadre care
sînt afişate cu frecvenţă ridicată unele după altele. Un minut de video poate însemna în
jur de 1000 de cadre diferite. Luarea unui asemenea fişier de pe un server poate însemna
(la o viteză de transfer de 28,8 baud) aproximativ 20 de minute. Pentru cei care au
modemuri cu viteze de transfer mai mici probabil că timpul va fi mult mai mare astfel că
aceştia vor fi descurajaţi de fişierele video mari.
Pentru a vedea fişierele video pe un PC este nevoie nu numai de aproximativ 8 MB RAM
dar şi de o aplicaţie ajutătoare. Utilizatorii Mac sînt mai norocoşi deoarece au aceste
facilităţi încorporate în sistem.
Pentru fişierele video independente de platformă, standardul curent este MPEG dar
QuickTime (Apple) cîştigă în ultima vreme tot mai mult teren, pe măsură ce softurile de
redare devin disponibile pentru alte platforme. QuickTime are de asemenea avantajul că
poate include o pistă audio împreună cu cea video.
Cîteva din formatele mai răspîndite sînt:
Format Utilizări
MPEG Unul dintre cele mai vechi formate video, MPEG este similar formatului
JPEG pentru grafică, fiind optimizat pentru video. Formatul este răspîndit
deoarece clipurile video în acest format sînt de bună calitate. Din
nefericire, formatul este foarte pretenţios hard şi RAM
AVI AVI este formatul Microsoft Windows pentru video. Utilizatorii acestui
sistem pot utiliza cu uşurinţă fişiere video AVI deoarece formatul a fost
optimizat pentru Windows
QT QT este abrevierea de la QuickTime şi este formatul dezvoltat şi brevetat
de Apple Computer. Este multiplatformă, compact şi uşor de înregistrat
Exemplu:
<A HREF="bunvenit.QT">Un mesaj de bunvenit (QuickTime, 1,5 M)</A>
Capitolul 1. Internet şi World Wide Web