Cuprins 3
Capitolul 1. INTERNET şi World Wide Web 9
1.1. Introducere 9
Ce este Internetul? 9
Ce este World Wide Web (WWW, W3) 10
1.2. Resursele World Wide Web 11
1.3. Adresarea unei resurse īn Web 11
1.4. Elementele conexiunilor īn spaţiul WWW 12
1.5. Protocolul HTTP 13
1.5.1. Introducere generală 13
1.5.2. Mesajele protocolului HHTP 14
1.5.3. Metodele protocolului HHTP 15
Capitolul 2. Descriere generală a HTML 19
2.1. Introducere, istorie, versiuni 19
Ce este HTML? 19
Caracteristicile limbajului HTML. 19
De ce HTML? 20
Istoria HTML. 21
Ce trebuie să facă un autor de pagini HTML? 24
Revoluţia HTML 4.0. 24
Validarea documentelor HTML. 25
2.2. Reprezentarea documentelor HTML 26
2.3. Structura şi logica limbajului HTML 27
I. Tag-urile HTML 27
II. Caractere entităţi 28
Capitolul 3. Structura documentelor HTML 31
3.1. Structura generală a unui document HTML 31
2. Elementul HTML 33
3. Elementul HEAD 33
4. Elementul BODY 34
5. Elementul FRAMESET 37
3.2. Structura header-ului unui document (elementul HEAD) 40
1. Elementul TITLE 40
2. Elementul BASE 41
3. Elementul STYLE 41
4. Elementul LINK 43
5. Elementul META 45
7. Elementul ISINDEX 49
8. Elementul OBJECT 49
3.3. Structura corpului unui document HTML (elementul BODY) 52
I. Elementele de tip bloc (block level elements) 53
II. Elementele de tip inline (inline level elements) 54
III. Elementele de tip nedefinit (pot fi atīt inline cīt şi block) 56
Capitolul 4. Elemente de bază HTML 57
4.1. Elemente utilizate la formatarea textului unui document 57
1. Terminarea rīndului (elementul BR) 57
2. Titluri (elementul Hi) 58
3. Containere de text (stiluri ale unui bloc) 59
A. Paragrafe (elementul P) 59
B. Containerul logic de tip bloc (elementul DIV) 60
C. Containerul logic de tip text/inline (elementul SPAN) 60
D. Textul centrat (elementul CENTER) 62
E. Textul preformatat (elementul PRE) 62
F. Adrese (elementul ADDRESS) 63
G. Citate lungi (elementul BLOCKQUOTE) 64
H. Citate scurte (elementul Q) 65
4. Stilurile caracterelor 66
5. Elemente de modificare a fontului caracterelor 67
B. Stabilirea fontului de bază 69
4.2. Definirea şi utilizarea listelor 70
4.3. Tag-uri (elemente) pentru legături hypertext 77
4.4. Imagini īn documentele HTML 83
4.5. Imagini senzitive 90
4.6. Alte elemente legate de text şi imagini 98
1. Comentariile īn documentele HTML 98
2. Linii orizontale de demarcare (elementul HR) 98
3. Fundalul unui document 99
4. Culoarea textului şi a legăturilor 100
Capitolul 5. Utilizarea tabelelor īn HTML 101
Capitolul 6. Utilizarea frame-urilor īn HTML 131
Capitolul 7. Utilizarea formulalelor (forms) 145
Capitolul 8. Alte elemente ale limbajului HTML 181
8.1. Formule matematice 181
8.2. Documente dinamice 182
8.3. Utilizarea mediilor externe: imagini, sunete şi video 183
Bibliografie
[1] WWW Consortium, HTML 4.0 Specification,
www.w3.org/TR/REC-html40
[2] Strebe, Mathew, Perkins, Charles, MCSE Internet Information server - Study Guide,
SYBEX Corporation, 1998
[3] Tittel, Ed, Gaither, Mark, Hassinger, Sebastian, Erwin, Mike, Foundations of World Wide Programming,
IDG Books Worldwide Inc.,
1997
[4] Honeycutt, Jerry, Special Edition Using HTML 4.0,
Maximillan Computer Publishing, 1998
[5] Mat Publishing Limited, Developer Network Journal,
1998, 1999 collection
[6]
Miller Freeman, Inc., Microsoft Corp., Microsoft Internet Developer
Journal,
1998, 1999 collection
Aplicaţiile distribuite sīnt de o
bună perioadă de timp o prezenţă uzuală īn peisajul IT
chiar şi din ţara noastră. Ultimii ani au īnsemnat, de asemenea,
şi paşi semnificativi şi concreţi īn impunerea
Inter-netului īn īntreaga economie şi societate. Odată cu acesta,
aplicaţiile distribuite care au
ca suport Internetul şi tehnologiile dezvoltate pentru acesta şi
īmpreună cu el, au trecut de la stadiul de noutăţi tehnologice
la cel de prezenţă reală īn comunitatea IT.
Procesul de educaţie a tinerilor
specialişti IT simte nevoia plonjării īn această realitate.
Tehnolo-gia Java, DHTML, tehnologia de scripting (Java Script, VB Script),
bazele de date distribuite īn Inter-net şi accesul la ele,
interfeţele utilizator flexibile, bazate pe browsere capabile de performanţe
din ce mai apropiate de necesităţi, tehnologia componentelor, toate
acestea sīnt necesităţi stringente ale tehno-logiei IT şi,
implicit, ale procesului educaţional din acest domeniu.
Īn acest spirit am īncercat să aduc
īn faţa studenţilor problematica fascinantă a lumii distribuite,
dar cooperante, dezvoltată de aceste tehnologii. Suportul acestei
fascinaţii stă, fară īndoială, īn geniul şi viziunea
celor care au făcut din Internet o comunitate. Fundamentul acestei
realităţi este, nu īncape īndoială, limbajul HTML, cel care a
făcut posibilă explozia de comunicare actuală, cel care a adus
aproape oameni, altfel atīt de diferiţi: de la cercetători la
studenţi, de la oameni de ştiinţă la copiii care abia
descoperă computerul, dar care descoperă odată cu el Internetul.
Aceasta este prima parte a unui suport de
curs la disciplina Dezvoltarea aplicaţiilor distribuite īn Internet,
introdusă īn acest an, la anul IV, īn semestrul al doilea, la secţia
de calculatoare a Facultă-ţii de Automatică, Calculatoare
şi Electronică din Craiova. Studenţilor acestei
facultăţi li se adresează, īn primul rīnd. Dimensiunea
lucrării a fost determinată de dorinţa de a pune la
dispoziţia celor care au preocupări īn acest domeniu a unui material
cīt mai complet īn limba romānă referitor la limbajul HTML. Versiunea
descrisă aici este HTML 4.0 şi este impusă de realitatea
Web-ului īnceputului de an 1999.
Structurat īn 8 capitole, prezentul suport
de curs, prezintă gradual şi cīt mai compet cu putinţă
limbajul HTML. Capitolul 1 face o scurtă
prezentare a noţiunilor esenţiale legate de Internet şi Web, iar
Capitolul 2 o descriere generală
şi o scurtă incursiune īn istoria limbajului HTML. Este partea
intro-ductivă care este urmată apoi de capitolele ce descriu
structura unui document scris īn HTML Capi-tolul 3) şi elementele de
bază utilizate īn documentele HTML texte, legături, imagini (Capitolul 4). Capitolele 5, 6 şi 7 detaliază modalităţile de
utilizare a tabelelor, frame-urilor şi a formularelor inter-active,
adică partea mai avansată a limbajului HTML. Capitolul 8 prezintă, pe scurt, elemente mai deosebite ale
limbajului.
Reprezentīnd doar fundamentul, prezentul
suport de curs nu face decīt să incite şi să promită
adevăratele performanţe ale tehnologiei Internetului. Va urma partea
a doua a acestui suport de curs care va acoperi (cel puţin) o parte dintre
ele: Cascading Style Sheet, Dynamic HTML, tehnologiile de scripting şi,
bineīnţeles, limbajul Java .
Acest suport reprezintă īncununarea
unei perioade de mare efort, dar extrem de rodnice, perioadă
petrecută de autor īn Germania, la Fachhochschule Regensburg, iar
apariţia lui, īn această formă, se sprijină pe sprijinul
material oferit de Uniunea Europeană prin programele Tempus.
Un gīnd plin de
recunoştiinţă, profesorului Oleg Cernian, coordonatorul
Programelor Tempus din Facultatea de Automatică, Calculatoare şi
Electronică, al cărui merit īn dezvoltarea Catedrei de Calculatoare
devine, odată cu trecerea timpului, tot mai clar şi mai evident.
Craiova, martie 1999 Autorul
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.
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).
Elementele
fundamentale ale WWW sīnt prezentate īn figura următoare:
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ă.
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.
1.3. Adresarea unei resurse īn Web
Adresarea unei resurse via http se face prin
construcţii (şiruri de caractere) de forma
http://adresa_host_in_retea[:port]/cale/subcalel/.../subcalen/nume_document
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
· referirea unor conveţii de metadate care descriu un document (a se vedea elementul HEAD).
1.4. Elementele conexiunilor īn spaţiul WWW
Īn cazul cel mai simplu, legătura dintre client
şi server se realizează prin intermediul unei singure conexiuni. De
foarte multe ori īnsă, este posibil să existe mai mulţi
intermediari īn conexiune. Aceştia pot fi de trei feluri: proxy, gateway
sau tunnel.
Un proxy este un intermediar
sofisticat: el primeşte cererile adresate unei resurse identificate
printr-un URI, rescrie anumite părţi ale mesajului sau chiar tot
mesajul, după care va transmite mesajul modificat către serverul
adresat iniţial. Cu această ocazie el se şi substituie
clientului iniţial: răspunsul īi va veni tot lui, iar proxy-ul va
face probabil o rescriere a mesajului de răspuns către client.
Dinspre server, nu se mai vede cine este clientul adevărat: toţi
clienţii ce trec prin proxy sīnt ascunşi, serverul primind numai
cereri de la proxy. Acesta poate face īn plus, īntr-un singur loc, o serie de
verificări, relative la autentificare, securizare etc., care ar fi greu de
implementat pe multe şi diverse maşini - toate calculatoarele client
care trec prin acel proxy. Un proxy reprezintă īnspre restul lumii un grup
de clienţi, putīndu-i trata pe aceştia diferenţiat.
Un gateway este similar unui proxy, dar
pe partea de server. Este un receptor, un fel de cameră de primire
pusă īn faţa unui server sau a unui grup de servere. Serverele de
după gateway nu se văd īn restul lumii - ele sīnt, toate,
reprezentate de gateway. Cererile sosite la gateway sīnt dirijate către
serverele corespunzătoare cererii (sau către serverul cel mai liber,
de exemplu, dacă faptul că există mai multe servere vine din
dorinţa de a disponibiliza mai multă putere de calcul). De
regulă are loc şi o conversie de protocol, īnspre protocolul pe care
īl cunoaşte sau īl foloseşte un anumit server, care nu mai este
obligat īn felul acesta să cunoască http.
Un tunel este un intermediar neinteligent:
el transportă date pe care nu le īnţelege sau interpretează īn
nici un fel īntre două conexiuni. Nu are loc nici un fel de schimbare a
mesajelor, decīt temporar, trecīnd printr-o formă intermediară, īntre
intrarea īn şi ieşirea din tunel; conţinutul mesajelor nu se
schimbă.
Ī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.)
Este un protocol la nivel aplicaţie destinat
sistemelor de informare distribuite, colaborative, de genul hypermedia.
Apărut ca protocol de bază pentru WWW īncă din 1990, a cunoscut
o serie de transformări, o versiune finală neexistīnd nici īn
prezent. Versiunea cea mai folosită este īncă 1.0, iar versiunea 1.1
- compatibilă īn jos cu 1.0, dar aducīnd īmbunătăţiri īn
special īn direcţia folosirii mai eficiente a resurselor - este pe cale
să se impună ca nou standard. De aceea, o parte din aspectele care
urmează nu trebuie privite ca referinţe bătute īn cuie, ci ca
instantanee ale unei specificaţii pe cale să se nască, extrase
dintr-o schiţă, un draft care poate se va mai schimba mult.
Numele este acronimul pentru HyperText Transfer Protocol, deşi la origine hypertext a
fost definitoriu, practica curentă l-a dus destul de repede īnspre
hypermedia - documentele vehiculate cuprinzīnd nu numai text, ci şi
sunet, imagine sau informaţii structurate.
Aplicaţiile care folosesc protocolul - cei doi
parteneri īn discuţie, cele două capete ale unei conexiuni - sīnt entităţi
abstracte din punct de vedere al protocolului. Ele trebuie doar să
poată comunica īntre ele ceea ce īnseamnă, īn principiu,
posibilitatea de a primi sau formula cereri şi de a formula sau
recepţiona răspunsuri, ca īn celebrul exemplu al filozofilor ce
vorbesc două limbi diferite, folosind pentru comunicare translatorii care
trimit mesajele filozofilor (traduse) prin intermediul poştaşilor.
Nici un nivel nu se preocupă de celălalt.
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.
1.5.2. Mesajele protocolului HHTP
Atunci cīnd se transferă ceva utilizīnd WWW se
specifică o resursă: serverul căruia am vrea să-i
adresăm cererea, ce conţine aceasta, cu ce protocol lucrăm.
Pentru ca această cerere să ajungă la server trebuie să
trimitem un mesaj care să conţină şi resursa
specificată mai sus. Mesajul va conţine un şi r de caractere de
forma:
GET specificare_resursă HTTP/1.1
CRLF
Forma generală a unui mesaj de cerere este
conformă schemei de mai sus:
Metodă resursă versiune_protocol CRLF
Versiunea de protocol trebuie specificată
deoarece nu toate serverele au implementat ultima versiune sau nu toţi
clienţii o cunosc. Deci, pentru ca totuşi un server deştept
să se poată īnţelege şi cu un client mai puţin dotat,
sau invers, şi fără a renunţa la posibilităţile
introduse de versiunile (mereu mai) noi ale protocolului, trebuie să se
realizeze mai īntīi o negociere īntre server şi client, relativ la ce
ştie fiecare şi abia apoi să se desfăşoare transferul
propriu-zis de date.
1.5.3. Metodele protocolului HHTP
Metodele sīnt de fapt operaţiile care pot fi
aplicate obiectelor constituite de resursele din reţea, īn
accepţiunea protocolului HTTP. Metoda va trebui să fie totdeauna
primul element dintr-o linie de cerere. Metodele prevăzute īn versiunea
1.1 sīnt următoarele: OPTIONS, GET, HEAO, POST, PUT, PATCH, COPY, MOVE,
DELETE, LINK, UNLINK, TRACE, WRAPPED.
OPTIONS
semnifică
o cerere relativă la informaţiile ce definesc opţiunile de
comunicare disponibile pe conexiunea către URI-ul specificat īn cerere.
Metoda permite determinarea opţiunilor şi/sau posibilităţilor
unui server, fără să determine o acţiune din partea
resursei adresate.
Şi metoda are nevoie de parametri, nu numai
resursa, iar īn HTTP termenul consacrat pentru parametrii metodelor este header
field sau antet de cīmp. Definite īn cadrul protocolului pentru fiecare
metodă, antetele de cīmp pot avea valori care la rīndul lor sīnt definite
(dar nu limitate, extensiile fiind īn principiu totdeauna posibile).
Exemplu:
O cerere de
tipul
OPTIONS
www.xxx.ro HTTP1/1 CRLF Accept: audio/*; q=0.2, audio/basic CRLF
reprezintă o
cerere de definire a opţiunilor către serverul www.xxx.ro, īn care
clientul solicitant spune că preferă audio/basic, dar acceptă
orice tip pentru date audio īn cazul īn care calitatea reprezentării nu
scade sub 20%.
Exemplu:
Iar o
cerere de genul
OPTIONS
www.xxx.ro HTTP1/1 CRLF Accept: text/plain; q=0.5, text/html, text/x-dvi;
q=0.8; mxb=100000, text/x-c CRLF
specifică
următoarele preferinţe relative la modul de reprezentare al textului:
x-c sau html, dacă sīnt disponibile; dacă nu, x-dvi, dar numai
dacă textul nu depăşeşte 100000 de octeţi, sau plain
altfel.
Virgula separă opţiuni posibile,
punct-virgulă separă determinările sau preferinţele
suplimentare relative la o anumită opţiune.
GET este una dintre cele
mai importante metode şi singura care era disponibilă īn prima
versiune a protocolului, HTTP/0.9. GET este metoda care aduce ceva de la
resursă; mai concret, dacă resursa este un proces care produce date
(o căutare de pildă), răspunsul la metoda GET va fi o entitate
care să cuprindă acele date. Răspunsul este unul singur: aceasta
este o caracteristică de bază a protocolului. Chiar dacă volumul
de date care trebuie incluse īn răspuns este mare, nu se face o fracţionare
īn bucăţele mai mici, care să permită transferul mai
uşor al răspunsului. Din punct de vedere al protocolului HTTP,
discuţia este totdeauna simplă: o īntrebare are un răspuns. Nu
se pot pune mai multe īntrebări pentru a obţine un singur răspuns,
nu se pot formula mai multe răspunsuri la o īntrebare.
Există totuşi două
posibilităţi de a micşora volumul de date care să circule
pe reţea īn urma elaborării unui răspuns; o condiţionare de
genul dacă s-a schimbat ceva şi posibilitatea de a prelua numai o
parte din acesta. De exemplu, o cerere de genul:
GET www.xxx.ro/?cerere HTTP/1.1 If-Modified-Since: Wed, 24 Mar 1999
1:00:00 GMT
va aduce ceea ce s-a cerut numai dacă s-a
modificat ceva după data şi ora specificate īn parametrii metodei.
HEAD este o metodă
similară cu GET, folosită īn principiu pentru testarea
validităţii şi/sau accesibilităţii unei resurse, sau
pentru a afla dacă s-a schimbat ceva. Sintaxa este similară metodei
GET; spre deosebire de GET īnsă, datele eventual produse de resursă
īn urma cererii nu sīnt transmise; doar caracteristicile acestora, şi un
cod de succes sau eroare. Ceva de genul dacă ţi-aş cere să
execuţi cererea mea, ce mi-ai răspunde?.
POST este metoda prin
care resursei specificate īn cerere i se cere să īşi subordoneze
datele incluse īn entitatea care trebuie să īnsoţească cererea.
Cu POST se poate adăuga un fişier unui anumit director, se poate
trimite un mesaj prin poştă electronică, se poate adăuga un
mesaj unui grup de ştiri, se pot adăuga date unei baze de date
existente, etc. Metoda POST este generală; care sīnt procesele pe care un
anumit server le acceptă sau cunoaşte īi sīnt strict specifice.
PUT este o metodă
care cere serverului ceva mai mult decīt POST: să stocheze/memoreze
entitatea cuprinsă īn cerere cu numele specificat īn URI. Dacă
resursa specificată există deja, entitatea nouă trebuie
privită ca o versiune modificată care ar trebui să o
īnlocuiască pe cea existentă. Serverul, bineīnţeles, va accepta
sau nu această cerere, funcţie de drepturile de acces pe care i le-a
acordat clientului, şi va răspunde cererii cu informaţii
corespunzătoare (s-a făcut, nu pot, nu ai voie să faci
treaba asta etc.). Pentru a evita situaţii care să ducă la
īncărcarea excesivă si nejustificată a reţelei - de
exemplu, un client care vrea să posteze un text de 10 MB, fără
să ţină seama de faptul că serverul nu mai are atīt loc
atīt o cerere de tipul POST cīt şi una de tipul PUT se
desfăşoară īn doi timpi: īntīi, clientul trimite numai
parametrii metodei, fără să trimită datele efective pe care
le vrea postate. După care aşteaptă 5 secunde. Īn acest timp,
dacă serverul răspunde, clientul ia īn seamă şi
analizează răspunsul serverului (iar dacă acesta este nu mai am
loc, datele nu se mai transmit). Dacă nu soseşte nici un
răspuns īn timpul de aşteptare, se consideră implicit că
serverul acceptă datele şi acestea sīnt transmise de către
client.
PATCH este o metodă
similară lui PUT, dar nu conţine toate datele care să
definească resursa, ci numai diferenţele faţă de versiunea
existentă pe server. Cu toate informaţiile necesare care să īi
permită serverului să reconstruiască o versiune la zi a
resursei.
COPY,
MOVE şi DELETE sīnt metode
prin care se cere ca resursa specificată īn URI-ul din cerere să fie
copiată īn locaţiile specificate ca parametri pentru metodă, mutată
acolo sau respectiv doar ştearsă.
LINK şi UNLINK sīnt metode prin care resursa
specificată īn cerere este legată/dezlegată de alte resurse,
stabilind una sau mai multe relaţii cu acestea din urmă, specificate
ca parametrii pentru metodă. Ar putea fi de exemplu un index pentru o
bază de date, un cuprins pentru un set de documente, etc.
TRACE este o metodă
care īi permite clientului să vadă cum ajung cererile sale la server,
pentru a verifica/diagnostica conexiunea, pentru a se verifica pe sine sau pentru
a determina felul īn care eventualele proxy-uri de pe parcurs au modificat
cererea iniţială. Serverul, īn răspuns la această cerere,
va trimite īn ecou cererile care īi vin de la client, fără să le
mai trateze ca cereri reale.
WRAPPED
este
o metodă care contrazice principiul protocolului de a trimite totdeauna
o singură cerere şi a aştepta un singur răspuns. Via
WRAPPED, mai multe cereri, care īn mod obişnuit ar fi succesive, sīnt
īmpachetate īntr-una singură. Iar o altă aplicare a metodei
ţinteşte măsuri de securizare - o cerere poate fi cifrată
şi transmisă prin metoda WRAPPED, ceea ce va determina serverul
să acţioneze īn doi paşi: īntīi să descifreze cererea
reală, iar apoi să īi dea curs acesteia.
Descriere generală a limbajului HTML
2.1. Introducere, istorie, versiuni
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
HTML are patru caracteristici principale:
1.
Foloseşte un
marcaj descriptiv pentru a indica diversele acţiuni
(instrucţiuni) ce trebuie executate. Aceasta īnseamnă
că părţi ale documentului descris de HTML sīnt marcate
cu nume descriptive, ca de exemplu <CHAPTER> sau <TITLE> care sīnt aplicabile oricărei
porţiuni de date corespunzătoare din document.
2.
Defineşte
structuri de documente ierarhice şi (hyper)legături intra- şi
inter-documente. O legătură (sau interconexiune) este o relaţie
unară īntre două elemente ale unui document. Structura unui document
este īnsoţită de astfel de legături īntre elementele sale.
3.
Limbajul HTML este
guvernat de o descriere formală. HTML are o descriere a tipului documentului
(Document Type Definition DTD) care stabileşte specificaţiile formale
ale limbajului. DTD defineşte sintaxa limbajului, descrie fiecare element
individual al unui document scris īn limbajul HTML, defineşte atributele
permise pentru fiecare element şi descrie modelul datelor conţinute
īn fiecare element (adică stabileşte care alt element, dacă este
vreunul, poate să apară īntr-un element). Īn corelaţie cu
informaţiile despre elemente, DTD oferă definiţii pentru
entităţile externe ce pot fi referite īn HTML (de exemplu, setul de
caractere ISO-Latin-1 folosit pentru a reprezenta caracterele pe ecranul unui
display).
4.
Atīt
specificaţiile limbajului cīt şi limbajul īnsuşi pot fi citite
(interpretate) şi de om dar şi de computer. Datorită faptului
că elementele de marcare sīnt separate de text prin şiruri de
delimitare alcătuite din caractere tipăribile, textul şi
marcajele pot coexista īn pace şi īnţelegere atīt pentru om, cīt
şi pentru computer.
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.
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
Stadiile prin care trece un standard elaborat de W3C
sīnt:
·
orice standard īşi īncepe aventura ca W3C Note
·
de aici este preluat de către un grup particular de
lucru (Working Group) şi este discutat pīnă cīnd se atinge consensul
·
īn acest moment este publicat ca propunere (Working Draft) şi acum oricine
poate face comentarii
·
īn momentul īn care se obţine o susţinere
şi un consens suficient de larg, directorul W3C (acum este Time
Berners-Lee) decide dacă specificaţia este gata să devină
propunere de recomandare (Proposed
Recommendation)
·
urmează o perioadă de 6 săptămīni īn
care toţi membrii W3C au şansa să voteze această propunere
de recomandare; votul nu este obligatoriu şi se poate vota īn 4 moduri
diferite:
· da
· da, sub rezerva unor
īmbunătăţiri
· nu, pīnă cīnd
anumite sarcini nu sīnt īndeplinite
· nu,
specificaţia trebuie abandonată
·
charta W3C stipulează necesitatea obţinerii
consensului complet, astfel că fiecare vot trebuie să fie un da
fără rezerve
·
dacă toţi paşii anteriori au fost
īndepliniţi, specificaţia trebuie aprobată īn final de Director
şi se publică sub forma unui standard (W3C Recommendation)
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...
HTML 4.0 este īn acest moment (ianuarie 1999)
standardul acceptat de comunitatea Internet şi de către
producătorii majori de browsere şi unelte de dezvoltare pentru
Internet (Netscape cu browserul Navigator 4.x şi cu browserul
Microsoft Internet Explorer 4.x), primind suport aproape universal. W3C
recomandă chiar autorilor de documente şi unelte pentru HTML să
producă documente HTML 4.0 īn locul HTML 3.2, dar din motive de
compatibilitate (uşor de īnţeles) se recomandă ca uneltele ce
interpreteză HTML 4.0 să suporte īn continuare HTML 3.2 şi 2.0.
Bătăliile se dau īn continuare pentru
standardele legate de DHTML (CSS Level 2 şi DOM). Chiar dacă modul īn
care a fost creată versiunea 4.0 şi soliditatea organismului care a
generat-o indică o mare stabilitate, Microsoft a făcut deja paşi
importanţi pe cale 5.0 şi spre DHTML, urmată, aproape cu
disperare, şi de către Netscape (la sfīrşitul anului 1998
cumpărată de AOL). Concluzia ce se poate desprinde este aceea că
dinamismul procesului nu poate fi combătut decīt printr-o
permanentă informare de la organismul care impune standardele (W3C)
şi adaptare la cerinţele acestora.
Elementul esenţial diferit adus de versiunea 4.0
faţă de versiunea 3.2 este posibilitatea separării structurii
unui document de prezentarea lui prin introducerea stilurilor de documente
(style sheet). Utilizīnd limbajul HTML pentru descrierea structurii unui
document şi style sheet-urile pentru a sugera prezentarea acestuia, autorii
obţin mult mai uşor independenţa de
periferic/computer/platformă hard-soft care a făcut HTML-ul atīt de
popular. Un document cu o structură complexă poate fi prezentat īn
diferite moduri pe medii diferite, permiţīnd documentului īnsuşi
să se adapteze mai uşor noilor tehnologii (cum ar fi, de exemplu,
browser-ele capabile să vorbească, cititoarelor braille, etc.).
Īn plus separarea conţinutului de prezentare
permite modificarea īnfăţişării eventual chiar a unui
īntreg site doar prin modificarea unui style-sheet (unui document care descrie
stilul). Experienţa a demonstrat că o astfel de abordare reduce
dramatic costurile de deservire a unui spectru larg de platforme, facilitīnd
şi o īntreţinere şi modificare mult mai uşoare.
Alte īmbunătăţiri semnificative aduse
de 4.0 pot fi considerate şi:
I.
Tehnologia client-side scripting.
Prin intermediul scripturilor autorii pot realiza
pagini HTML dinamice (care reacţionează la acţiunile
utilizatorilor) sau se pot realiza aplicaţii distribuite. Mecanismul de
includere a scripturilor īn paginile HTML este independent de limbaj. Se poate
specifica limbajul scriptului, se poate include un script extern sau se poate
referi rezultatul execuţiei unui script. Aceste scripturi se execută
pe computerul care rulează browserul Web (clientul).
HTML oferă acum un mecanism standard pentru a
īngloba obiecte generice şi aplicaţii īn documentele HTML. Elementul
OBJECT permite includerea imaginilor, clipurilor video, sunetului, formulelor
matematice, aplicaţii specializate şi alte obiecte īntr-un document.
Această versiune a fost proiectată cu
ajutorul experţilor īn internaţionalizare, astfel īncit documentele
pot fi scrise īn orice limbă şi transportate uşor oriunde īn
lume. Elementul cheie īl constituie adoptarea standardului ISO/IEC 10646 ca set
de caractere pentru HTML. Acest standard este cel mai complet standard ce
permite reprezentarea oricăror caractere internaţionale,
direcţie a textului, punctuaţie sau cerinţe specifice ale unei
limbi.
Odată cu creşterea diversităţii
lumii Webului, s-au diversificat şi capabilităţile
utilizatorilor acestuia, astfel īncīt a devenit importantă suportarea
diverselor tehnologii pentru a suplinii unele limitări fizice.
Īn această versiune se implementează un
model de tabel, bazat pe RFC 1942. Autorii au acum un control sporit asupra
structurii şi paginaţiei. Sīnt incluse posibilităţi de
definire a grupurilor de rīnduri şi/sau coloane, mai mare flexibilitate īn
definirea regulilor unui tabel. Īn plus afişarea tabelelor se face acum
incremental, pe măsura īncărcării paginii, nemaifiind
necesară aşteptarea īncărcării integrale a tabelelor.
Includerea
frame-urilor īn HTML 4.0 oferă posibilitatea de a prezenta documente
multiple īntr-o singură fereastră. Modelul este preluat din
propunerea originală a firmei Netscape.
Operaţia de imprimare a unui număr mai mare
de pagini legate īntre ele poate fi simplificată mult prin descrierea
relaţiilor dintre ele utilizīnd elementul LINK sau limbajul specializat
RDF (Resource Description Language) dezvoltat de W3C.
Fiecare document trebuie validat īn vederea
eliminării erorilor cum ar fi lipsa ghilimelelor, elemente sau atribute
scrise greşit şi structuri invalide. Aceste erori nu sīnt īntotdeauna
vizibile īn browsere deoarece fiecare le recuperează īntr-un mod propriu.
Validarea documentelor se poate face cu un serviciu special al W3C ce poate fi
accesat la adresa http://validator.w3.org. Un validator verifică un document īn ceea ce
priveşte definiţia tipului documentului (DTD) şi nu
siguranţa legăturilor din document.
2.2. Reprezentarea documentelor HTML
Ca aplicaţie (standard) SGML, limbajul HTML trebuie (pentru a se supune normelor de interoperabilitate) să specifice propriul set de caractere care se foloseşte īn codificarea documentelor.
Un set de caractere al unui document constă din:
· un repertoar: un set de caractere abstracte, cum sīnt litera alfabetului latin A, litera alfabetului chirilic I sau semnul chinezesc care īnseamnă apă
· poziţiile codurilor: un set de īntregi ce referă caracterele din repertoar
Fiecare document HTML este o secvenţă de caractere din repertoar. Computerele identifică aceste caractere prin poziţia acestora īn repertoar. De exemplu īn setul de caractere ASCII poziţiile 65, 66 şi 67 referă caracterele A, B şi C.
Caracterele utilizate pentru editarea textelor īn documentele HTML ar
trebui să aparţină setului standard ASCII (caractere pe 7
biţi) şi fără a include caractere din setul extins (pe 8
biţi) deoarece diversele platforme utilizează definiţii diferite
pentru caracterele din setul superior ASCII. Dar, acest set de caractere este
insuficient pentru un sistem informaţional global, aşa cum este
Webul. De aceea limbajul HTML utilizează un set de caractere mult mai
comple, numit Universal Character Set
UCS (Setul de caractere universal) definit de standardul ISO 10646, standard ce
defineşte un repertoar de mii de caractere utilizate īn īntreaga lume.
Acest set de caractere este echivalent caracter-cu-caracter cu setul Unicode 2.0 definit de W3C.
Acest set de caractere nu este īnsă suficient pentru agenţii
utilizator ca să interpreteze corect un document HTML transmis ca o
secvenţă de bytes īntr-un fişier sau īn reţea. Īn afara
setului de caractere, aceştia trebuie să cunoască şi codificarea caracterelor (character
encoding) folosită la transformarea documentului īntr-un stream de bytes.
Prin codificarea caracterelor (termenul utilizat fiind acela de charset)
se poate īnţelege metoda de conversie a unei secvenţe de bytes īntr-o
secvenţă de caractere. Această conversie se potriveşte
perfect cu schema activităţilor Webului: serverele trimit documentele
utilizatorilor (agenţilor utilizatori) ca un stream (şir) de bytes,
iar aceştia īi interpretează ca şiruri de caractere. Metoda de
conversie poate să mergă de la o corespondenţă simpla
unu-la-unu pīnă la scheme şi algoritmi complexe. O singură corespondenţă
simplă unu-la-unu nu este īnsă suficientă pentru un repertoar
aşa de complex ca cel definit de ISO 10646 (sau de Unicode). De aceea
există diferite codificări ale unor părţi ale acestui
repertoar pentru a-l acoperi īn īntregime. Cele mai uzuale codificări
sīnt: ISO-8859-1/ISO Latin 1 (utilizat pentru limbile Europei de vest),
ISO-8859-2/ISO Latin 2 (care suportă alfabetul chirilic), SHIFT_JIS
(codificare japoneză), ş.a.
Uneltele software care produc documente HTML le pot codifica oricum (nu
se impune nimic) īncercīnd să acopere cīt mai multe dintre caracterele
acestuia. Cele care nu se pot codifica cu schema folosită se pot
totuşi referi prin intermediul caracterelor entităţi (acestea referindu-se la setul de caractere
şi nu la schema de codificare). Cel care foloseşte aceste documente
(agenţii utilizatori) poate modifica această codificare (proces numit
transcodare)
şi nu este obligat să proceseze documentul utilizīnd aceeaşi
codificare sau o codificare care să acopere īntregul set de caractere. DAR,
pentru a obţine aceleaşi rezultate cu cele dorite de autorul
documentului, agenţii utilizatori trebuie să fie īn primul rīnd conformi
Unicode (adică să mapeze corect toate caracterele Unicode īn
toate codificările recunoscute) şi să cunoască schema de
codificare folosită de autor.
Informaţia care specifică schema de codificare trebuie să
fie oferită de server. Cea mai simplă
şi directă modalitate de a o specifica este utilizarea unui
parametru specific (charset) īntr-un cīmp (Content-type) al antetului
protocolului HTTP utilizat la transmiterea documentelor.
De exemplu, următorul antet HTTP anunţă că pentru
documentul solicitat s-a folosit schema de codificare EUC-JP:
Content-Type: text/html;
charset=EUC-JP
Dar nu toate serverele ştiu să folosească
acest parametru. Pentru a fixa această problemă, documentele HTML pot
include informaţii explicite despre schema de codificare folosită.
Pentru aceasta se foloseşte un element specific al limbajului (
<
Mai mult, dacă nu se foloseşte nici această metodă,
limbajul HTML a prevăzut un atribut special (charset) ce se poate
ataşa elementelor din cadrul documentului.
Implicit, dacă nu este folosită nici una dintre aceste 3
posibilităţi, se consideră documentul codificat ISO-8859-1.
Fiecare agent utilizator trebuie să ofere o metodă/mecanism de a
suprapune/suprascrie o informaţie incorectă despre charsetul
(codificarea) folosită.
2.3. Structura şi logica limbajului HTML
HTML este un limbaj care descrie modul de afişare a unui document
(text şi informaţii de alt tip, de exemplu imagini, animaţie,
sunete,) folosind două tipuri de elemente: caractere entităţi şi
taguri.
Tagurile HTML sīnt elementele specifice limbajului care determină
acţiunile ce trebuie efectuate la afişarea şi parcurgerea
ulterioară a documentului (pot fi asimilate cu instrucţiunile unui
limbaj de programare). Caracterele entităţi se folosesc la descrierea
caracterelor din document care nu fac parte din setul standard ASCII.
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>
Tagurile pot fi de două feluri:
1. Nevide
(perechi), īntre care apare textul afectat. Ele au efect numai asupra textului
inclus īntre ele şi sīnt de două tipuri:
· de īnceput şi au formatul <NUME>
· de sfīrşit şi au formatul
</NUME>
Exemple de tag-uri nevide:
<I>Acest
text va fi afişat italic</I>
<B>Acest
text va fi afişat īngroşat</B>
2. Vide (singulare),
au efect imediat īn punctul din document īn care apar.
Exemple de tag-uri vide:
<HR> Inserează o linie orizontală īn
locul īn care apare.
<IMG SRC="poza.gif"> Specifică
inserarea unei imagini.
Tag-urile şi atributele pot fi editate atīt cu caractere mici cīt si
cu caractere mari, şi au acelaşi efect.
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.
Deoarece o codificare (charset) poate să nu fie capabilă
să exprime toate caracterele unui set de caractere ale unui document
şi datorită faptului că codarea internă a computerului care
produce caracterele speciale prin apăsarea altor taste (de pildă ALT
+ codul numeric) nu este aceeaşi pentru diferitele sisteme, pentru afişarea
lor corectă şi pentru a
permite translatarea caracterelor speciale este necesară definirea unui set
special de coduri, numite caractere
entităţi (referinţe), care pot fi incluse īn documentele
HTML pentru reprezentarea acestor caractere speciale. Cīnd sīnt interpretate de
către navigatoare caracterele entităţi sīnt afişate īn mod
corespunzător ţinīnd cont de platforma pe care rulează
navigatorul si de fontul utilizat.
Caracterele entităţi sīnt predefinite şi pot lua una din
două forme posibile:
· entităţi
nume (referinţe caractere) &nume;
· entităţi
numere (referinţe numerice) &#numar; sau &#xnumar;
Toate caracterele entităţi nume īncep cu semnul &
(ampersand), urmat de numele entităţii (de exemplu â care este reprezentat de
navigatoare ca ā) şi terminat cu punct-şi-virgulă (;), avīnd
deci forma &nume;. De remarcat
că īn numele entităţilor este semnificativ dacă o
literă este mare sau mică.
Toate caracterele entităţi numere īncep cu semnul & şi
sīnt reprezentate de un număr precedat de semnul # (de pildă ~ care este reprezentat de
navigatoare ca ~), terminat cu punct-şi-virgulă (;), avīnd deci forma
&#numar; sau &#xnumar; (atunci cīnd numărul
este īn hexa).
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.
Utilizarea setului ISO Latin-1 permite reprezentarea celor mai multe
caractere cu diacritice - prezente pe majoritatea platformelor - dar este
totuşi limitată. De pildă, caractere destul de des folosite, cum
ar fi bulinele sau semnele grafice, nu sīnt disponibile īn ISO Latin 1.
Caracterele romāneşti de asemenea se găsesc īn totalitate doar īn
supersetul ISO Latin 2. Decodarea seturilor Latin 1 sau 2 nu era implementată
īn toate navigatoarele şi din această cauză documentele scrise
cu aceste coduri erau afişate de unele navigatoare mai vechi (sau versiuni
mai vechi) prin recurgerea la setul ASCII. Actualele versiuni HTML permit
multiple seturi de caractere, inclusiv Unicode care include marea majoritate a
caracterelor si a simbolurilor cunoscute īn lume.
Entităţile pentru caracterele romāneşti
ăĂāĀīĪşŞţŢ (reprezentabile de navigator dacă
acesta cunoaşte codurile Latinl şi Latin2), īn această ordine,
sīnt: ã Ã â Â î Î
(Latinl). Aici ã nu este chiar ă ci un a cu tilda şi
lipsesc literele ş şi ţ. Reprezentarea lor prin numerele de cod
este: ã Ã â Â î Î º
ª þ Þ (Latin2)
Cīteva dintre caracterele speciale mai des utilizate
sīnt:
Entitate |
Semnificaţie |
< |
< (mai mic) |
> |
> (mai mare) |
& |
& (ampersand) |
" |
" (ghilimele) |
  |
Inserează un
spaţiu dublu celui dintre caracterele monospaţiate (lărgime de
un EM, sau un punct) |
|
Inserează un
spaţiu care nu permite ruperea rīndului īn acel loc |
&endash; |
Dash de lărgime un EN |
&emdash; |
Dash de lărgime un EM |
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ă
3.1. Structura generală a unui document HTML
Īntreaga dezvoltare a HTML s-a făcut īn ideea creşterii
ulterioare a limbajului fără sacrificarea simplităţii.
Există puţine reguli generale de care trebuie să se
ţină cont īn construirea unui document HTML.
Documentele
HTML (4.0) au structura generală:
<!DOCTYPE HTML
PUBLIC "-//W3C//DTD HTML
4.0 //EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<
HEAD>
<TITLE>Titlul documentului</TITLE>
... alte declaraţii/informaţii despre
document...
</HEAD>
<BODY>
...Textul documentului
propriu-zis...
</
BODY>
</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.
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">
Adresele ce apar īn fiecare declaraţie permit agenţilor utilizatori să acceseze (şi să descarce) DTD-ul documentului (descrierea formală) şi orice set de caractere de care are nevoie. Următoarele adrese se folosesc pentru accesarea descrierilor (DTD-urilor) şi seturilor de caractere utilizate de HTML 4.0.
· http://www.w3.org/TR/REC-html40/strict.dtd DTD strict (implicit)
· http://www.w3.org/TR/REC-html40/loose.dtd DTD Transitional
· http://www.w3.org/TR/REC-html40/frameset.dtd DTD pentru documente cu frameset
· http://www.w3.org/TR/REC-html40/HTMLlat1.ent setul de caractere Latin-1
· http://www.w3.org/TR/REC-html40/HTMLsymbol.ent setul de caractere Symbol
· http://www.w3.org/TR/REC-html40/HTMLspecial.ent setul de caractere Special
Sintaxa:
<HTML>...</HTML>
Atribute posibile:
· VERSION
= xxx
· atribute de internaţionalizare: LANG, DIR
Conţine:
· In HTML 4.0 Strict şi Transitional: HEAD urmat de BODY
· In HTML 4.0 Frameset: HEAD urmat de FRAMESET
Conţinut īn:
· Nu se aplică, este element de nivel 0
Descriere:
Acest element conţine de fapt documentul (pagina) HTML şi este alcătuit din HEAD urmat de BODY (sau FRAMESET). Atīt tagul de īnceput cīt şi cel de sfīrşit ale elementului sīnt opţionale.
Atributele LANG şi DIR se folosesc cu HTML pentru a specifica limba (de bază) īn care este creat documentul (şi direcţia īn care se citeşte textul). Se foloseşte īn special cu tehnica style-sheet-urilor pentru a crea un document cu text īn mai multe limbi.
Atributul VERSION specifică DTD-ul din document (versiunea de HTML) şi nu mai trebuie folosit īntrucīt este redundant cīnd se foloseşte DOCTYPE.
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)
·
· 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.
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,
· Īn HTML 4.0 Transitional:
· elemente de tip bloc (nivel bloc)
· elemente de tip inline
·
INS,
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.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Exemplu depasit</TITLE>
</HEAD>
<BODY bgcolor="white" text="black"
link="red" alink="fuchsia" vlink="maroon">
... document body...
</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>
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)
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>
Se remarcă utilizarea elementui NOFRAMES pentru cazul īn care frame-urile nu pot fi afişate. Efectul se doreşte a fi asemănător cu cel determinat de frame-uri (o matrice de dreptunghiuri cu 2 rīnduri şi 3 coloane).
2. Exemplul următor foloseşte elemente FRAMESET īmbricate pentru a defini 2 frame-uri īn primul rīnd şi un frame īn al doilea rīnd.
<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
·
· 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)
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>
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.
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.
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="
<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="
<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.
Sintaxa:
<
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
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,
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 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
<
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ă.
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>").
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.
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 TABINDEX0 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.
3.3. Structura corpului unui document HTML (elementul BODY)
Majoritatea elementelor ce apar īn corpul unui document (īn cadrul elementului BODY) sīnt clasificate fie ca elemente de tip bloc (de nivel bloc) - block-level elements, fie ca elemente de tip inline inline elements.
Elementele de tip bloc īn mod tipic conţin elemente inline şi alte elemente de tip bloc. Cīnd sīnt prelucrate vizual (afişate pe ecran), de obicei īncep cu o linie nouă (de la capătul rīndului).
Sīnt considerate de tip bloc următoarele elemente (unele dintre ele asimilate prin extensie, pentru că pot include elemente de tip bloc, specificate mai jos cu simbolul Ø):
1. Elementele de tip header
(Hn)
· H1 - header de nivelul 1
· H2 - header de nivelul 2
· H3 - header de nivelul 3
· H4 - header de nivelul 4
· H5 - header de nivelul 5
· H6 - header de nivelul 6
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ă
3. Elementele ce definesc
(sau sīnt strīns legate de) liste
· UL -
definirea unei liste neordonate
· OL -
definirea unei liste ordonate
· DIR - definirea unei liste de tip director
· MENU - definirea unei liste de tip menu
· DL -
definirea unei liste de definiţii
· LI -
definirea unui element ce aparţine unei liste ordonate/neordonate (Ø)
· DT -
definirea unui termen/definiţie a unui liste de definiţii (Ø)
· DD descriea unei definiţii (Ø)
4. Elemente ce definesc
tabelele
· TABLE - definirea unui tabel
· CAPTION - definirea titlului unui tabel
· TBODY - definirea corpului tabelului (Ø)
· TR - definirea unui rīnd al unui tabel (Ø)
· TD - definirea unei celule de date (Ø)
· TH - definirea unei celule de tip header (Ø)
· COLGRUP - definirea unui grup de coloane īntr-un tabel
·
· THEAD - definirea unui antet al unui tabel (Ø)
· TFOOT - definirea unui footer al unui tabel (Ø)
5. Alte elemente
· HR -
inserarea unei linii orizontale
· FORM - definirea unui formular pentru a
introduce date
· FIELDSET - definirea unui grup de controale īntr-un formular
· ISINDEX - definirea unui text pentru promterul de cerut date de intrare
· FRAMESET - definirea unui frameset (set de frame-uri pentru un document) (Ø)
· NOFRAMES - definirea conţinutului alternativ la setul de frame-uri
· NOSCRIPT - definirea conţinutului alternativ la script-uri
Elementele de tip inline pot conţine, īn mod normal, numai text sau alte elemente de tip inline. Cīnd sīnt prelucrate vizual (afişate pe ecran), de obicei NU īncep cu o linie nouă (efectul se propagă din locul īn care apar, chiar dacă este īn mijlocul unui rīnd). Sīnt considerate de tip inline următoarele:
1. Elemente de marcare
logică a proprietăţilor unei porţiuni de text/unei fraze
stilurile logice
· EM -
Text scos īn evidenţă
· STRONG - Text puternic scos īn
evidenţă
· CODE - Fragment de cod (bloc de
instrucţiuni)
· SAMP - Mostră de text generat de
un program
· CITE / Q - Citat scurt / Scurt text
reluat după altă sursă
· ABBR
- Abreviere
· ACRONYM
- Acronim
· DFN - Definiţia unui termen
· KBD - Text ce trebuie
introdus de la tastatură
· VAR - Variabilă
2. Elemente de marcare
fizică a proprietăţilor unei porţiuni de text stilurile
fizice
· I - Italic
· B - Bold
· U - Subliniat
· STRIKE - Tăiat cu o linie
· S - Text cu o linie pe mijlocul
caracterelor
· BIG - Text mai mare
· SMALL - Text mai mic
· SUB - Subscript (indice)
· SUP - Superscript (putere)
· TT -
Teletype (stilul maşinilor de scris)
3. Elemente de marcare a
proprietăţilor speciale ale unei porţiuni de document
· SPAN
- Container generic de text
inline
· BR -
Line break (sfīrşit de linie)
· A - Anchor (ancoră,
legătură hypertext)
· IMG - Imagine
· FONT - Modificarea fontului
· BASEFONT
- Modificarea fontului de bază
· BDO
- Redefinirea
direcţiei īn care se citeşte textul
4. Elemente de definire a
controalelor din interiorul unui formular
· INPUT - Cīmp de introducere a unor date
(button, etc.)
· SELECT - Listă de selecţie
· FIELDSET - Grup de controale ale unui formular
· LEGEND - Titlul unui fieldset
· TEXTAREA - Cīmp de introducere a unui text
· LABEL - Eticheta unui cīmp
· BUTTON
- Buton
· OPTGROUP - Grup de opţiuni de meniu
· OPTION - Listă de selecţie a unor
opţiune de meniu
5. Alte elemente
· ! - Comentarii
· Textul documentului
Elementele următoare pot fi folosite atīt ca elemente de tip bloc
cīt şi ca elemente de tip inline. Dacă sīnt utilizate ca elemente
inline (adică sīnt īn interiorul unui alt element inline sau P) ele nu
trebuie să conţină nici un element de tip bloc.
· MAP - Definirea unei imagini
senzitive (prelucrată client-side)
· AREA - Zonă activă īntr-o
imagine senzitivă
· APPLET - Inserarea unui applet Java
· PARAM - Parameterii unui applet Java
· TEXTFLOW - Text alternativ la un applet
·
· INS
- Text inserat
· OBJECT
- Includerea unui obiect
· SCRIPT
- Includerea unui script
client-side
· IFRAME - Definirea unei frame inline (īn punctul īn care apare elementul)
Elemente de bază ale documentelor: Texte, Legături, Imagini
4.1. Elemente utilizate la formatarea textului unui document HTML
HTML este construit pe ideea ierarhiilor de informaţii şi pe specificarea elementelor care
reflectă această ierarhie. Īntr-un document aceasta īnseamnă
că unele informaţii sīnt mai importante ca altele şi că, de
obicei, sīnt părţi de text (informaţie) care includ alte
(sub)părţi de text. Cīnd se descrie această situaţie
īntr-un document se obţine o structură care reflectă ierarhia
īntr-un mod asemănător exemplului următor:
I. Primul element principal
(Major Topic)
A. Primul Sub-Topic
1.
Primul sub-sub-topic care se
intinde...<CR/LF>
....şi aici... rīndul de sus trebuind să fie īntrerupt...
2. Al doilea sub-sub-topic
B. Al doilea Sub-Topic
II. Al doilea element principal
(Major Topic)...etc., etc.
Uneori documentul doreşte reflectarea acestei logici. Pentru aceasta este pusă la dispoziţia autorului posibilitatea definirii de titluri şi/sau subtitluri pe diverse nivele.
De remarcat că un rīnd de text afişat de un browser se termină doar atunci cīnd se termină ecranul sau se specifică explicit acest lucru cu un tag special. Inserarea de linii īn document (CR/LF cu Enter) nu se reflectă şi la afişare. Browserele ignoră toate spaţiile albe (white-spaces) din documente (caracterele de tip CR, LF, TAB, etc).
Sintaxa:
<BR>
Atribute posibile:
· CLEAR=[
left | all | right | none ] (ştergerea/setarea
poziţiei obiectelor flotante)
· atribute comune core
Conţine:
· Nimic (gol)
Conţinut īn:
· elemente de tip inline
· elemente de tip block
Descriere:
Tag-ul <BR>
termină rīndul de text acolo unde este inserat. Cīnd navigatorul
īntīlneşte tag-ul <BR>, afişează textul care urmează
acestui tag īncepīnd de la marginea din stīnga, indiferent unde anume este
această margine. De pildă īn cazul īn care elementul <BR> este
inserat īntr-o listă, marginea din stīnga este alta decīt īn cazul unui
text normal. Tag-ul se foloseşte cīnd dorim să terminăm
afişarea rīndului īntr-un anumit loc.
Trebuie avută
grijă la inserarea acetui tag deoarece modul īn care apare un text/linie
depinde şi de fontul utilizat şi dimensiunea sa.
Atributul CLEAR mută dedesubt obiectele flotante (care pot apare īn diverse poziţii īn pagină, cum ar fi imaginile şi tabelele). Mult mai flexibilă este metoda stilurilor deoarece proprietate clear se poate aplica oricărui element).
Exemplu:
Textul următor dintr-un document HTML
Şi
dacă ramuri bat īn geam,<BR>De ce nu tai copacul?
Are ca
efect afişarea īn browser:
Şi
dacă ramuri bat īn geam,
De
ce nu tai copacul?
Sintaxa:
<H1>Titlu de nivel 1</H1>
<H2>Titlu de nivel 2</H2>
<H3>Titlu de nivel 3</H3>
<H4>Titlu de nivel 4</H4>
<H5>Titlu de nivel 5</H5>
<H6>Titlu de nivel 6</H6>
Atribute posibile:
· ALIGN
= [ left | center | right | justify ] (alinierea orizontală)
· atribute comune
(atribute core, atribute de internaţionalizare şi evenimente
scriptabile)
Conţine:
· elemente de tip inline
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DEL, DD, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Titlurile sīnt
utilizate pentru ierarhizarea diferitelor secţiuni de text. HTML
defineşte şase nivele pentru titluri, indicate īn formatul <Hl>
<H2>...<H6>. La afişare titlurile nu sīnt numerotate, diversele
navigatoare afişīndu-le astfel īncīt să iasă īn
evidenţă (centrat, īngroşat, subliniat, mărit, etc). Ele nu
trebuie identate īn document, identările fiind ignorate de navigatoare.
Spre deosebire de titlul documentului (<TITLE> Titlul documentului
</TITLE>), titlurile utilizate la structurarea documentului (<H1>
Titlul de ordinul 1 </H1>) pot avea orice lungime.
H1 defineşte headerul (titlul) de nivel 1, adică cel mai important. Īn mod normal, īntr-un document nu trebuie să existe decīt un singur astfel de header. Autorii nu trebuie să se bazeze pe dimensiunea fontului utilizat īn acest caz, ci doar pe importanţa headerului (titlului) respectiv.
Autorii pot să sugere cum să apară titlurile prin folosirea stilurilor.
Exemplu:
1. Headerul H1 poate fi sugerat astfel:
h1 {
color: #c33;
background: transparent;
font-weight: bold;
text-align: center
}
2.
Dimensiunile (normale) ale acestor taguri sīnt:
<H1> Header 1 </H1>
<H2> Header 2 </H2>
<H3> Header 3 <H3>
<H4> Header 4 </H4>
<H5> Header 5 </H5>
<H6> Header 6 </H6>
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% }
Sintaxa:
<DIV>...</DIV>
Atribute posibile:
· ALIGN=[
left | center | right | justify ] (aliniere orizontală)
· atribute
comune
Conţine:
· elemente inline şi elemente de tip bloc (block level)
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Acest element defineşte un container de tip bloc (block-level) generic, permiţīnd autorilor să specifice diverse atribute globale blocului respectiv (cum ar fi, de exemplu, stilul sau limba). Cea mai importantă utilizare a acestui element este īn combinaţie cu elementele CLASS, ID sau LANG, elemente definitorii īn folosirea stilurilor (style-sheet). Atributul (depăşit) ALIGN sugerează alinierea orizontală a conţinutului diviziunii de text definită cu acest element, avīnd ca argumente posibile: left, right, center şi justify. Un echivalent (alias) pentru valoarea center (<DIV ALIGN=center>) este elementul (preferabil a fi folosit ) <CENTER>. Elementul DIV are un echivalent la nivelul text SPAN, utilizat īn interiorul paragrafelor şi al elementelor de tip inline. De remarcat că browserele adaugă, de obicei, o linie nouă atīt īnainte cīt şi după elementul DIV. De exemplu:
<P>aaaaaaaaa<DIV>bbbbbbbbb</DIV><DIV>ccccc<P>ccccc</DIV>
va fi afişată astfel: (o linie goală)
aaaaaaaaa
bbbbbbbbb
ccccc
ccccc (şi apoi īncă o linie goală)
Sintaxa:
<SPAN>...</SPAN>
Atribute posibile:
· atribute
comune
Conţine:
· elemente inline
Conţinut īn:
· elemente inline şi elemente de tip bloc (block level)
Descriere:
Acest element defineşte un container de text generic de tip inline, permiţīnd autorilor să specifice diverse atribute globale textului (zonei de document) respectiv (cum ar fi, de exemplu, stilul sau limba). Cea mai importantă utilizare a acestui element este īn combinaţie cu elementele CLASS, ID, DIR sau LANG, elemente definitorii īn folosirea stilurilor (style-sheet).
SPAN se foloseşte doar acolo unde nici un alt element de tip inline nu este potrivit. Dar dacă există un astfel de element atunci acesta este preferabil. De exemplu, īn locul:
<P><SPAN LANG=ro>Mineriadele anilor 90</SPAN> au şocat opinia publică.
se poate
folosi:
<P><I LANG=ro> Mineriadele anilor 90</I> au şocat opinia publică.
Dacă īn interiorul zonei selectate se află elemente de tip bloc (ca P sau TABLE) se foloseşte elementul echivalent SPAN.
Exemplu:
Presupunem că vrem să scriem o pagină HTML care să conţină un formular care să preia date pentru o bază de date. Fiecare cīmp ar trebui să poată fi identificat īn mod unic pentru a putea fi prelucrat separat (validat, de exemplu, cu un script). Īntrucīt HTML nu are elemente specifice pentru a identifica, de exemplu, numele persoanei, se folosesc DIV şi SPAN pentru a obţine efectul structural (şi chiar şi de prezentare) dorit. De remarcat că fiecare cīmp este plasat īntr-o celulă a unui tabel, pentru a se obţine efectele de poziţionare şi aliniere asemănătoare controalelor vizuale din interfeţele grafice.
<!-- Exemplu de date pentru o
bază de date: -->
<!-- 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>
Sintaxa:
<CENTER>Text
Centrat</CENTER>
Atribute posibile:
· atribute
comune
Conţine:
· elemente inline şi elemente de tip bloc (block level)
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Acest element
defineşte un bloc al cărui conţinut este centrat orizontal. Este
o prescurtare pentru elementul <DIV ALIGN=center>, dar rămīne
folositor īn special pentru tabele pe care le centrează (pe ele, nu
conţinutul lor!!!) īn pagină, evitīnd folosirea lui <TABLE
ALIGN=center> care nu este suportat de toate browserele.
Există
două modalităţi de centrare a textului. Una cu ajutorul tag-ului
<CENTER> iar cealaltă cu ajutorul atributului ALIGN care ia valoarea
CENTER. ALIGN=CENTER este un atribut care poate fi utilizat īn conjuncţie
cu majoritatea tag-urilor.
Exemplu:
<CENTER>
<TABLE>
<TR ALIGN=center>
<TH SCOPE=col>Name</TH>
<TH
SCOPE=col>Age</TH>
<TH
SCOPE=col>Country</TH>
</TR>
<TR ALIGN=center>
<TD>Liam
Quinn</TD>
<TD>20</TD>
<TD>
</TR>
</TABLE>
</CENTER>
Sintaxa:
<PRE>
text preformatat (conţine tab-uri, multe spaţii, etc) </PRE>
Atribute posibile:
· WIDTH=Număr
(lăţimea unei linii)
· atribute
comune
Conţine:
· elemente inline cu excepţia: IMG, OBJECT, APPLET, BIG, SMALL, SUB, SUP, FONT, BASEFONT
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Majoritatea
documentelor HTML conţin text marcat cu tag-uri HTML. Aceasta face ca
textul să fie afectat de restricţiile HTML īn sensul că toate
spaţiile suplimentare (tab-uri, mai multe spaţii, RETURN) să fie
ignorate de către navigator. Afişarea acestor texte, aşa cum
sīnt ele, se poate face prin utilizarea tag-urilor <PRE> ...
</PRE>. Toate spaţiile suplimentare cuprinse īntre aceste două
tag-uri vor fi afişate aşa cum sīnt. Aceasta ne permite utilizarea
textului preformatat pentru afişarea tabelelor şi chiar a unei
grafici rudimentare obţinute cu caractere ASCII. Textul preformatat este
afişat īn majoritatea cazurilor cu fontul Courier monospaţiat.
Atributul WIDTH oferă informaţii despre lăţimea liniei,
astfel ca browserul să aleagă un font şi o spaţiere adecvată,
dar de obicei este ignorat.
Autorii care folosesc PRE
trebuie să evite dependenţa de elementele īnconjurătoare
datorită modului specific de afişare (de la un browser la altul) a
unui astfel de text. Se foloseşte īn special la inserarea unor bucăţi
de program (cod), pentru care eliminarea spaţiilor ar face citirea mult
mai grea. Exemplu de cod Java inserat CA TEXT!!! īntr-o pagină HTML:
<PRE><CODE CLASS=Java>
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
</CODE></PRE>
CODE este un element care se
utilizează pentru a oferi informaţie structurală.
Sintaxa:
<ADDRESS>Informaţii
de contact</ADDRESS>
Atribute posibile:
· atribute
comune
Conţine:
· elemente inline şi P
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Tag-ul adresă este utilizat pentru entităţile gen semnătură. De regulă este folosit la sfīrşitul documentelor, acolo unde sīnt inserate informaţiile cu privire la autorul documentului, data publicării şi adresa de contact. De regulă, adresele sīnt precedate de o linie orizontală iar informaţiile conţinute sīnt afişate pe rīnduri diferite cu ajutorul tag-ului <BR>.
Exemplu:
Dacă īntr-un document
apar informaţiile de adresă de tipul:
<ADDRESS>
Most recent update: 28/01/99
<BR>
For more information contact <<A HREF="mailto:lp@lp.ro">
lp@lp.com</A>>
</ADDRESS>
īn browser
va apare:
Most recent update: 28/01/99
For more information contact <lp@lp.com>
Sintaxa:
<BLOCKQUOTE>
Citat lung </BLOCKQUOTE>
Atribute posibile:
· CITE=URI
(sursa de unde se citează)
· atribute
comune
Conţine:
· elemente inline sau elemente de tip bloc sau SCRIPT
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Acest element este
utilizat pentru citate mai lungi care pot conţine elemente de tip bloc (de
exemplu P sau TABLE), spre deosebire de <Q> ... </Q> utilizat īn
citate scurte.
Atributul
opţional CITE indică adresa sursei citate, oferind posibilitatea de
verificare şi oferind referinţe suplimentare. Nu este īnsă
suportat de toate browserele.
Punerea īn evidenţă a citatelor se face de regulă prin identare diferită faţă de restul textului. De aceea, pīnă la implementarea style-sheet-urilor, elementul se folosea mai ales pentru identarea unui bloc de text faţă de textul īnconjurător. Acum această metodă este considerată depăşită.
Exemplu:
Citatul definit īn modul
următor:
<BLOCKQUOTE CITE="http://www.bibliomania.com/Fiction/xxx.html" >
...orice
generalizare presupune īntr-o anumită măsură credinţa īn
unitate şi simplitatea naturii. <p>Īn ceea ce priveşte unitatea
aici nu poate exista vreo dificultate.
</BLOCKQUOTE>
va
apărea astfel:
"...orice
generalizare presupune īntr-o anumită măsură credinţa īn
unitate şi simplitatea naturii.
Īn
ceea ce priveşte unitatea aici nu poate exista vreo dificultate."
Sintaxa:
<Q>
Citat scurt </Q>
Atribute posibile:
· CITE=URI
(sursa de unde se citează)
· atribute
comune
Conţine:
· elemente inline
Conţinut īn:
· elemente inline şi elemente de tip bloc
Descriere:
Acest element este
utilizat pentru citate scurte, care nu necesită paragrafe, spre deosebire
de <BLOCKQUOTE> utilizat īn citate lungi. Atributul opţional CITE
indică adresa sursei citate, oferind posibilitatea de verificare şi
oferind referinţe suplimentare. Nu este īnsă suportat de toate
browserele.
Punerea īn evidenţă a acestor citate se face de regulă prin introducerea lui īntre ghilimele, de fapt īntre simbolurile folosite pentru citate īn limba īn care este dat citatul, dacă aceasta este specificată cu elementul LANG. Astfel, nu este responsabilitatea autorului să pună aceste simboluri!
Exemplu:
Citatul definit īn modul
următor:
John said, <Q
lang="en-us">I saw Lucy at lunch, she says <Q
lang="en-us">Mary wants you to get some ice cream on your way
home.</Q> I think I will get some at Ben and Jerry's, on Gloucester
Road.</Q>
va apare (datorită
specificării limbii engleze americane) astfel:
John
said, "I saw Lucy at lunch, she told me 'Mary wants you to get some ice
cream on your way home.' I think I will get some at Ben and Jerry's, on
Utilizarea tag-urilor pentru paragrafe, titluri sau
liste afectează textul ca un īntreg schimbīnd fontu-rile, spaţierea
verticală, adăugīnd o bulină sau un număr. Tag-urile pentru
stilurile caracterelor afec-tează felul īn care vor fi afişate numai
anumite cuvinte sau chiar numai anumite caractere (de pildă
afişīndu-le italic, īngroşat sau subliniat). Există două
tipuri de stiluri ale caracterelor: stiluri logice şi stiluri
fizice. Disticţia īntre stilurile logice şi fizice a fost
importantă īn era browserelor ce nu afişau decīt text simplu (cum a
fost, de exemplu, LYNX) şi nu erau capabile să afişeze texte
italice, bold, etc, de aceea se recomanda folosirea stilurilor logice. Dar
odată cu apariţia browserelor de tip GUI nu mai există nici un
motiv pentru a evita stilurile fizice sau pentru a ţine cont de
distincţia dintre ele (B şi STRONG vor apare īn multe din aceste
browsere la fel, fără a fi īnsă siguri de aceasta). Se
recomandă astfel īn primul rīnd consistenţa de-a lungul textului
atunci cīnd se doreşte scoaterea īn evidenţă a unei
porţiuni de text.
4.1. Stilurile logice
Tag-urile pentru stilurile logice indică doar
cum anume să fie utilizat textul marcat nu şi cum anume să fie
afişat. Din acest punct de vedere sīnt asemănătoare tag-urilor
folosite la marcarea paragrafelor sau titlurilor. Tag-urile stilurilor logice
indică doar faptul că textul este o definiţie, o bucată de
cod sau doar o porţiune de text care trebuie scoasă īn
evidenţă īn raport cu contextul. Este complet la latitudinea
navigatorului (şi uneori, a utilizatorului acestuia prin anumite
setări ale browserului) să determine cum anume va fi prezentat textul
marcat cu aceste tag-uri, dacă va fi īngroşat, italic sau
evidenţiat īn alt mod.
Toate tag-urile stilurilor logice sīnt nevide.
Există mai multe tipuri de tag-uri pentru aceste stiluri:
Tag |
Utilizare |
</EM> ...
</EM> |
Text accentuat |
<STRONG> ...
</STRONG> |
Textul marcat va fi mai
puternic accentuat |
<CODE> ...
</CODE> |
Secvenţă de cod
afişată cu font fix (ex Courier) |
<SAMP> ...
</SAMP> |
Eşantion; similar lui
<CODE> |
<KBD> ...
</KBD> |
Text tastat de utilizator |
<VAR> ...
</VAR> |
Nume de variabilă |
<DFN> ...
</DFN> |
Definiţie (cuvīnt
care va fi definit) |
<CITE> . .
</CITE> |
Un scurt citat |
<DFN> |
Definiţia unui termen |
<Q> |
Un citat scurt, īn
interiorul unui paragraf. |
<ACRONYM> |
Un acronim |
<ABBR> |
O abreviere |
<INS> |
Un text inserat (un
document, de pildă) |
<DEL> |
Text marcat ca şters |
<SUB> |
Indice |
<SUP> |
Exponent |
4.2. Stilurile fizice
Tag-urile pentru stilurile fizice indică
navigatorului cum anume să fie afişat textul marcat, de pildă
īngroşat (bold), italic sau uniform (monospaţiat) spaţiat
(asemănător textului produs de maşinile de scris). Utilizarea
stilurilor fizice are neajunsul că dacă navigatorul nu poate
afişa acel stil el īl va substitui cu un altul. Tag-urile stilurilor
fizice sīnt:
Tag |
Utilizare |
<B> ... </B> |
Text īngroşat (aldin) |
<I> ... </I> |
Textul italic (cursiv) |
<U> ... </U> |
Text subliniat |
<S> ...
</S> sau <STRIKE> ...
</STRIKE> |
Text tăiat |
<BIG> ...
</BIG> |
Text afişat cu un
font mai mare decīt restul |
<SMALL> ...
</SMALL> |
Text afişat cu un
font mai mic decīt restul |
<TT> ... </TT> |
Text monospaţiat |
Exemplu: Utilizarea acestor
taguri:
<P><b>bold</b>,
<i>italic</i>, <b><i>bold italic</i></b>,
<tt>teletype text</tt>, and
<big>big</big>
and <small>small</small> text.
poate produce efecte ca īn figura
următoare:
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=4
FONT SIZE=5
FONT SIZE=6
Exemplu: Dimensiunile
fonturilor (văzute īn browsere) specificate relativ arată astfel:
Exemplu: Următorul
fragment de text, descris cu aceste caracteristici, arată ca īn figura de
mai jos:
<FONT FACE="ARIAL" SIZE=2 COLOR="#339966">
<H1>The Scariest Jungle</H1>
</FONT>
<FONT FACE="ARIAL" SIZE=2>
Follow the map to see <I>lions</I> and <I>tigers</I> and <I>bears</I>.
<B>Oh, my!</B>
</FONT>
Sintaxa:
<BASEFONT>
Atribute posibile:
· SIZE
= Dimensiune (dimensiunea fontului)
· COLOR
= Culoarea (culoarea fontului)
· FACE
= Fel (felul
fontului/font face)
· ID = ID (identificator)
Conţine:
· nimic
Conţinut īn:
· inline elements, block-level elements, cu excepţia lui PRE
Descriere:
Spre deosebire de
FONT, tagul BASEFONT modifică fontul de bază, aplicīndu-se tuturor
elementelor care urmează, cu excepţia titlurilor (Hn). Chiar
dacă nu e specificat, utilizarea lui BASEFONT īn tabele (cu elementul
TABLE) produce efecte imprevizibile şi diferite, de la browser la browser.
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).
Atributul SIZE specifică dimensiunea fontului ce se doreşte folosit, dimensiune dependentă de browser, pe o scală de la 1 la 7, cu o valoare implicită de 3. Atributele COLOR şi FACE, suportate foarte slab sugerează culoarea şi felul fontului. Mult mai bine suportată şi mai adecvată este folosirea style-sheet-urilor pentru aceste atribute.
4.2. Definirea şi utilizarea listelor
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.
Sintaxa:
<OL>
<LI>
Primul element al listei ordonate
<LI>
Al doilea element
<LI>
A1 treilea element...
</OL>
Atribute posibile:
· TYPE=[
1 | a | A | i | I ] (stilul de numerotare)
· START=Number
(numărul de īnceput al elementelor)
· COMPACT
(afişare compactă)
· atribute comune
Conţine:
· unul sau mai multe elemente LI
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Listele ordonate
īncep cu <OL> şi se īncheie cu </OL> (OL este o abreviere de
la Ordered List) şi fiecare element este introdus īn listă cu
ajutorul tag-ului vid <LI>. Cīnd navigatorul interpretează o
listă ordonată el numerotează secvenţial fiecare element
īntīlnit (nu se numerotează īn document). Identarea īn textul original
(cel ce va fi afişat) nu este obligatorie, folosindu-se doar pentru a
putea fi mai uşor reperate listele din restul textului.
Atributul TYPE
sugereză stilul de numerotare. Valorile pe care le poate lua sīnt
(literele mici diferă de cele mari):
· 1 (numere zecimale: 1, 2, 3, 4, 5, ...)
· a (literele mici ale alfabetului: a, b, c, d, e, ...)
· A (literele mari ale alfabetului: A, B, C, D, E, ...)
· i (numerele Romane scrise cu litere mici: i, ii, iii, iv, v, ...)
· I (numerele Romane scrise cu litere mari: I, II, III, IV, V, ...)
Atributul START indică primul număr
folosit la numerotarea elementelor listei.
Exemplu:
Prepararea unei căni de
ceai.
<OL>
<LI>
Puneţi apa la fiert
<LI>
Puneţi ceaiul preferat īntr-o cană de porţelan
<LI>
Turnaţi apa fierbinte peste ceai şi acoperiţi cana
<LI>
Aşteptaţi 3 minute
</OL>
Sintaxa:
<UL>
<LI>
Primul element al listei neordonate
<LI>
Al doilea element
<LI>
A1 treilea element...
</UL>
Atribute posibile:
· TYPE=[
disc | square | circle ] (stilul bulletului folosit pentru elemente)
· COMPACT
(afişare compactă)
· atribute comune
Conţine:
· unul sau mai multe elemente LI
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Diferenţa
faşă de lista ordonată (OL) este că elementele nu vor apare
numerotate, ele fiind afişate identat, unele sub altele, precedate de un
semn specific elementelor listelor (de exemplu bulina ). Acest semn este
determinat de atributul TYPE şi poate lua valorile:
· disc (cerc umplut/plin)
· square (pătrat)
· circle (circumferinţa unui cerc)
Acestea arată, de obicei, astfel:
Exemplu: Un meniu la restaurant poate
fi descris astfel:
<UL>
<LI>
Ciorbă de burtă
<LI>
Ciorbă de perişoare
<LI>
Alte ciorbe
</UL>
Listele neordonate trebuie marcate cu tag-urile
<UL> iar elementele listei se introduc la fel ca īn listele ordonate.
Rezultatul este o listă ale cărei elemente sīnt marcate cu buline sau
alte caractere (dacă nivelul pe care apar este mai mare de 1). Forma lor
(pentru sub-liste) poate fi schimbată definind o nouă listă īn
interiorul primeia, după modelul următor:
<UL>
<UL>
<LI>
Element al noii liste
<LI>
Un alt element, etc
</UL>
</UL>
Sintaxa:
<LI>
Element al listei... </LI>
Atribute posibile:
· TYPE=[
disc | square | circle | 1 | a | A | i | I ] (stilul de marcare a elementelor
listei)
· VALUE=Number
(numărul elementului din secvenţă)
· atribute comune
Conţine:
· elemente inline şi elemente de tip bloc (bloc level)
Conţinut īn:
· OL, UL, MENU, DIR
Descriere:
Elementele listelor
se definesc folosind acest tag. Atributul VALUE poate specifica numărul
din secvenţă care se atribuie acelui element. Atributul TYPE
specifică elementul grafic/alfabetic ce va marca elementul respectiv.
Valorile pe care le poate lua sīnt:
· Valorile pentru LI īn UL, DIR sau MENU:
· disc (cerc umplut/plin)
· square (pătrat)
· circle (circumferinţa unui cerc)
· Valorile pentru LI īn OL:
· 1 (numere zecimale: 1, 2, 3, 4, 5, ...)
· a (literele mici ale alfabetului: a, b, c, d, e, ...)
· A (literele mari ale alfabetului: A, B, C, D, E, ...)
· i (numerele Romane scrise cu litere mici: i, ii, iii, iv, v, ...)
· I (numerele Romane scrise cu litere mari: I, II, III, IV, V, ...)
Sintaxa:
<DL>
<DT>
Termen care urmează să fie definit </DT>
<DD>
Definiţia termenului </DD>
<DT>
Alt termen </DT>
<DD>
Altă definiţie </DD>
</DL>
Atribute posibile:
· COMPACT
(afişare compactă)
· atribute comune
Conţine:
· unul sau mai multe elemente DT sau DD
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Listele de
definiţii (uneori numite şi liste glosar) sīnt uşor diferite
faţă de celelalte liste. Fiecare element al listei este format din
două părţi: termenul de definit şi definiţia.
Listele de definiţii īncep cu <DL> şi se termină cu
</DL>. Termenii care trebuie definiţi sīnt inseraţi cu ajutorul etichetei
<DT> iar definiţiile corespunzătoare se introduc cu ajutorul
etichetei <DD>.
O listă de
definiţii poate avea mai mulţi termeni pentru o definiţie
dată, precum şi mai multe definiţii pentru un termen. De
asemenea se poate da un termen fără o definiţie
corespunzătoare şi vice versa (!), dar o astfel de structură are
sens īn cazuri extrem de rare.
Listele de
definiţii sīnt formatate de navigatoare astfel īncīt termenii şi
definiţiile sīnt separaţi prin linii iar marginile definiţiilor
sīnt identate. Cu ajutorul atributului COMPACT, <DL COMPACT>, lista de
definiţii ar trebui să fie formatată pe o suprafaţă
ecran mai mică. Se pare īnsă că majoritatea navigatoarelor
ignoră acest atribut.
O listă de
acest tip poate fi adaptată şi pentru utilizarea cu structuri care nu
sīnt termeni stricţi şi definiţii (īn sensul uzual),
această practică fiind justificată cīnd alte elemente HTML nu
pot descrie adecvat acea structură. De exemplu, o listă cu programul
unei persoane dintr-o săptămīnă ar putea fi definită
astfel:
<H1>Programul
săptămīnal</H1>
<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>
</DD>
</DL>
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.
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.
Sintaxa:
<MENU>
<LI>
Primul element din meniu
<LI>
Al doilea element din meniu
<LI>
Al treilea element din meniu
</MENU>
<DIR>
<LI>
fişiere/
<LI>
aplicaţii/
<LI>
poştă/
</DIR>
Descriere:
Meniurile sīnt liste
simple de elemente sau scurte paragrafe care nu sīnt inserate cu ajutorul
numerelor sau bulinelor. Afişarea lor se face prin identare diferită
sau o formatare diferită de restul textului. Listele director sīnt şi
mai scurte decīt listele meniu, sīnt identate şi formatate īn coloane de
către navigatoare, īn mod asemănător listelor director din Unix.
Meniurile au fost proiectate pentru a fi folosite ca liste cu o singură
coloană.
Īn practică un
browser va afişa listele definite cu DIR şi MENU exact ca cele
definite cu UL!
Imbricarea listelor se realizează simplu: se
inserează o nouă listă īn interiorul primei liste. Se pot insera
liste neordonate īn interiorul celor ordonate si viceversa. Felul īn care apar
afişate listele imbricate diferă mult de la un navigator la altul.
Exemplu: Meniul (mai complet) de la
restaurant:
<OL>
<LI> Ciorbe
<UL>
<LI> Ciorbă de
burtă
<LI> Ciorbă de
perişoare
<LI> Alte ciorbe
</UL>
<LI> Felul doi
<LI> Desert
</OL>
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, ...)
4.3. Tag-uri (elemente) pentru legături hypertext
Adevărata putere a limbajului HTML stă īn capacitatea sa de a include
īn documentele HTML a unor legături (link-uri) către
alte documente de pe Web. Legăturile transformă documentele simple
afişate doar pe ecran īntr-o bibliotecă universală īn care
materialele dorite a fi consultate vin la cititor aproape instantaneu, iar
documentele statice devine īn acest fel documente interactive.
Legătura/link-ul
(hyperlegătura, hyperlink-ul) este construcţia de bază, putīnd
fi definită ca o conexiune de la o resursă Web la alta. Chiar
dacă pare un concept simplu, ea a fost forţa primară care a
asigurat succesul Webului. O legătură (link) are două capete,
numite uneori ancore, şi o direcţie. Link-ul porneşte de la
ancora sursă şi indică spre ancora destinaţie care poate fi
orice resursă Web (un document HTML, un element din interiorul unui
document HTML, o imagine, un clip, un sunet, un program, etc).
Acţiunea implicită asociată cu o legătură este aducerea
(īncărcarea) īn navigator (browser) a resursei către care
indică legătura. Acest comportament este obţinut de obicei
(şi implicit) prin selectarea legăturii (de exemplu cu mouse-ul prin
clic, de la tastatură, etc). Elementul esenţial al unei legături
este tagul <A>...</A> utilizat pentru marcarea
(hyper)legăturilor. El are īntotdeauna atribute asociate pentru a indica
ce tip de legătură este. Există două tipuri de bază:
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.
2.
Ancora LEGĂTURĂ,
indicată de atributul HREF, care indică browserului
să sară la altă resursă (să o īncarce), dacă
legătura curentă este 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
·
<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.
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.
html" |
doc.html se găseşte
īntr-un director aflat cu două 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.
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.
4.4. Imagini īn documentele HTML
Imaginile inserate īn documentele HTML
īmbogăţesc paginile Web nu numai sub raport decorativ;
bogăţia informaţiei şi noile posibilităţi de
organizare a resurselor fac din imagini un element indispensabil din
publicaţiile Web. Inserarea se face īntr-un mod asemănător unei
legături: se specifică URL-ul imaginii ce se inserează, URL ce
aparţine īnsă unei resurse diferite
de documentul propriu-zis (un alt fişier!), chiar dacă apare īn
aceeaşi pagină īn browser.
1. Formatele suportate
Există două tipuri de imagini care pot fi
văzute de navigatoare: imagini inline (īn text, line =
rīnd) şi imagini externe.
Imaginile
inline sīnt imagini care apar direct īn paginile Web fiind īncărcate
odată cu pagina (presupunīnd că se utilizează un navigator
grafic şi că nu este inhibată īncărcarea automată a
imaginilor). O condiţie pentru ca imaginile să poată fi
afişate este salvarea lor īntr-unul din formatele recunoscute de
navigatoare: GIF sau JPEG. Fără multe amănunte, diferenţele
principale īntre aceste formate sīnt legate de dimensiune (la aceeaşi
imagine formatul JPEG are o dimensiune mai mică, ceea ce īnseamnă
că se īncarcă mai repede īn paginile Web) şi de calitate (care
este, de obicei, superioară la GIF, folosită atunci cīnd imaginea ce
se inserează trebuie să fie de o foarte bună calitate,
rezoluţie sau adīncime de culoare).
Imaginile
externe sīnt imagini care nu sīnt afişate direct la īncărcarea paginii.
Ele pot fi īncărcate īnsă la cererea utilizatorului. Navigatoarele
pot fi configurate să manipuleze fişiere imagine de diferite tipuri
prin utilizarea unor aplicaţii auxiliare aşa că imaginile
externe pot fi salvate īn formate diferite: PCX, XBM, PICT, etc. Există
mai multe programe de editare de imagine care sīnt capabile să
deschidă imagini īn formate diferite şi să le convertească
īn formatul JPEG/GIF, īntre cele mai răspīndite fiind Adobe Photoshop
şi Paint Shop Pro. Există şi programe care fac numai conversia
īn GIF, cum ar fi De Babelizer pe Mac sau pachetul de filtre PBM pentru UNIX.
Două trăsături fac noile formate GIF
(numite GIF89) mai deosebite: formatul īntreţesut şi fundalul
transparent. Imaginile transparente sīnt
imagini la care culoarea (sau modelul) din fundalul paginii va transpare, dīnd
senzaţia că imaginea pluteşte pe suprafaţa paginii. Īnainte
de a le converti (cu un program special) trebuie să ne asigurăm
că imaginile au fundalul īntr-o singură culoare. Dacă fundalul
este format din mai multe culori, chiar dacă acestea sīnt apropiate ca
tonalitate, numai una singură va fi făcută transparentă.
Fundalul unei imagini se poate izola utilizīnd un program de editare de
imagine.
Īntreţeserea (interlacing) nu schimbă felul īn care este văzută
imaginea īn document ci doar aspectul ei īn timp ce este īncărcată.
Pe măsură ce imaginea este adusă de pe Web, apariţia ei
poate fi gradată, de la o imagine de rezoluţie joasă la una de
rezoluţie mai īnaltă. Pentru crearea acestui efect este nevoie nu
numai ca imaginea să fie salvată īntr-un format special (GIF
īntreţesut) ci şi ca navigatorul să fie capabil să prezinte
imaginea īn timp ce aceasta este īncărcată.
Īn mod normal, un fişier GIF este salvat īn
fişier linie cu linie (scan lines),
īncepīnd cu partea de sus a imaginii şi continuīnd progresiv īn jos.
Dacă navigatorul poate afişa imaginile īn timp ce acestea sīnt
īncărcate, se vede mai īntīi partea de sus a imaginii şi apoi tot mai
mult din ea pe măsură ce informaţia imaginii ajunge pe sistem.
Imaginile īntreţesute sīnt salvate diferit. La
īnceput este salvată fiecare a opta linie (īncepīnd cu prima), apoi
fiecare a opta linie (īncepīnd cu a patra), apoi fiecare a patra linie
(īncepīnd cu a treia), apoi restul rīndurilor.
La īncărcarea imaginii fie liniile lipsă
sīnt umplute cu informaţie din liniile sosite deja (imaginea apare
neclară pīnă la īncărcarea completă) fie sīnt afişate
doar liniile sosite (efect veneţian). Dacă navigatorul nu
suportă imaginile īntreţesute sau dacă este setat să
aştepte pīnă la sosirea īntregii imagini īnainte de afişare,
efectul nu va fi observat.
Avantajul unui format īntreţesut este că
utilizatorul poate căpăta o idee despre ce anume reprezintă
imaginea īnainte ca aceasta să sosească īn īntregime şi poate
hotărī dacă să aştepte să se īncarce sau să oprească
transferul. Unelte pentru crearea acestor efecte sīnt destule.
2. Inserarea imaginilor īn text
După convertirea imaginii īntr-un format
suportat, aceasta poate fi inserată īn document. Imaginile inline sīnt
specificate īn HTML cu ajutorul tag-ului <IMG>.
Acesta este un tag vid din aceeaşi familie cu <HR> şi
<BR>.
Sintaxa:
<IMG>
Atribute posibile:
· SRC=URI (locaţia imaginii)
· ALT=Text (text alternativ)
· LONGDESC=URI (link la o descriere lungă)
· WIDTH=Length (lăţimea imaginii)
· HEIGHT=Length (īnălţimea imaginii)
· USEMAP=URI (figură senzitivă - client-side image map)
· ISMAP (figură senzitivă - server-side image map)
· ALIGN=top|middle|bottom|left|right (alinierea imaginii)
· BORDER=Length (grosimea marginii)
· HSPACE=Pixels (spaţiu liber lăsat pe orizontală)
· VSPACE=Pixels (spaţiu liber lăsat pe verticală)
·
atribute comune
Conţine:
· nimic
Conţinut īn:
· elemente de tip inline, elemente de tip bloc (block-level elements), cu excepţia lui PRE
Descriere:
Atributul SRC indică URL-ul imaginii care va
fi inserată īn document. Dacă numele imaginii este poza.gif şi
imaginea se află īn acelaşi director ca şi documentul HTML,
atunci integrarea imaginii se face cu tag-ul: <IMG
SRC="poza.gif">, iar pentru o imagine aflată īn directorul
imediat superior celui īn care se află documentul, forma tag-ului este:
<IMG SRC="../poza.gif">.
Specificarea
căii către imagine se face urmīnd aceleaşi reguli ca şi la
specificarea URL pentru orice alt document/resursă. Dacă se
utilizează aceeaşi imagine de mai multe ori īn interiorul
aceluiaşi document, este indicat să se facă referinţe
relative (spre aceeaşi resursă!)
īn locul celor absolute pentru a permite navigatorului să folosească
aceeaşi copie a resursei (din cache) şi a evita astfel ca acesta
să aducă imaginea de pe server de mai multe ori.
Atributul
ALT ia ca valoare textul care va fi
afişat de navigatoarele care nu lucrează īn modul grafic (sau care au
inhibată funcţia de īncărcare automată a imaginilor), iar LOWSRC="..." indică
URL-ul unei imagini care va fi īncărcată īnaintea imaginii specificate
īn SRC. Valoarea atributului LOWSRC este de regulă URL-ul unei versiuni de
o mai mică rezoluţie a imaginii specificate īn SRC. Textul ce apare
la ALT trebuie să indice (de obicei) funcţia acelei imagini (mai mult
decīt descrierea ei) avīnd īn vedere că trebuie folosit cīnd imaginea nu e
īncărcată (şi nu mai apare sugestia dată de conţinutul
acesteia).
Atributul
WIDTH="..." rezervă
un spaţiu (īn pixeli) pentru lăţimea imaginii. Dacă
imaginea este de altă lăţime, va fi scalată
(redimensionată) astfel īncīt să īncapă īn (sau să
umplă) spaţiul rezervat; iar HEIGHT="..."
rezervă un spaţiu (īn pixeli) pentru īnălţimea
imaginii. Dacă imaginea este de altă īnălţime, va fi
scalată/redimensionatăcorespunzător. Atenţie, īnsă:
redimensionarea se face după algoritmi extrem de simpli şi
rezultatele sīnt extrem de departe de cele obţinute cu unelte adecvate.
Utilitatea acestor atribute apare atunci cīnd se specifică dimensiunile
reale (adevărate) ale imaginii. Īn acest fel browserul va rezerva un
spaţiu corect īn pagină, dīnd īncă de la īnceput imaginea
reprezentării paginii respective.
Atributul
VSPACE="..." stabileşte
spaţiul dintre imagine şi textul aflat deasupra şi sub imagine
(pe verticală), iar HSPACE="..."
stabileşte spaţiul dintre imagine şi textul aflat la stīnga
şi la dreapta imaginii (pe orizontală). Sīnt considerate
depăşite, recomandīndu-se utilizarea style-sheet-urilor īn locul lor.
Atributul
BORDER="..." desenează
o margine de grosimea specificată, īn jurul imaginii şi dacă
imaginea este activă, face marginea de asemenea activă. Dacă se
specifică BORDER=0, marginea va fi eliminată chiar dacă imaginea
este o ancoră/link spre altă resursă. De exemplu:
<A
HREF="reference.html">
<IMG
SRC="icon/reference.gif" ALT="" WIDTH=90 HEIGHT=90
BORDER=0>Web Authoring Reference
</A>
are ca
efect afişarea unei imagini (din fişierul reference.gif, care se găseşte īn subfolderul icon al folderului curent) şi a
unui text, transformarea acestora īntr-o ancoră (link) care indică
spre documentul reference.html, dar
fără ca imaginea să aibă margine īn jurul ei, ca īn figura
următoare:
Atributul
LONGDESC dă o descriere mai
lungă a imaginii şi poate fi folosit acolo unde este necesară,
de exemplu, ca alternativă la reprezentarea uzuală a imaginii (īn
browserele ce suportă doar text sau cele utilizate de persoanele care nu
văd).
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.
Aceeaşi imagine inserată īn cadrul unui
paragraf cu text:
<HTML>
<HEAD>
<TITLE>My Jungle Home
Page</TITLE>
</HEAD>
<BODY>
<FONT FACE="ARIAL" SIZE=2
COLOR="#339966">
<H1>The Scariest
Jungle</H1>
</FONT>
<FONT FACE="ARIAL" SIZE=2>
Follow the map to see
<I>lions</I> and <I>tigers</I> and
<I>bears</I>.
<P> <IMG
SRC="bear.jpg" WIDTH="201"
HEIGHT="132" BORDER=0 ALT="A big, brown bear">
<P><B>Oh, my!</B>
</FONT>
</BODY>
</HTML>
Şi va arată astfel:
3. Alinierea imaginilor īn text
Imaginile pot fi aliniate
īn document cu ajutorul atributului ALIGN, cel care permite
controlul alinierii imaginii cu linia de text alăturată. Există
următoarele valori posibile pentru controlul alinierii.
·
ALIGN=TOP, care aliniază
imaginea cu partea cea mai de sus a rīndului
·
ALIGN=MIDDLE, care aliniază
imaginea cu mijlocul rīndului (de fapt cu linia de bază)
·
ALIGN=BOTTOM, care aliniază
imaginea cu cea mai de jos parte a rīndului sau cu partea de jos a celei mai
mari imagini de pe rīnd
·
ALIGN=TEXTOP care aliniază
partea de sus a imaginii cu cele mai īnalte caractere din rīnd
·
ALIGN=ABSMIDDLE care aliniază
mijlocul imaginii cu mijlocul celui mai mare element
·
ALIGN=BASELINE care aliniază
partea de jos a imaginii cu linia de bază a textului
·
ALIGN=ABSBOTTOM care aliniază
partea de jos a imaginii cu cea mai de jos parte a unui element de pe rīnd
·
ALIGN=LEFT şi ALIGN=RIGHT care aliniază imaginea
īn stīnga, respectiv dreapta paginii
4. Imagini flotante
Imaginile şi
obiectele pot apare direct īn text (in-line) sau pot fi flotante pe o margine
a paginii alterīnd astfel temporar marginile textului care curge pe
līngă aceasta. Elementul care determină modul īn care o va face este
BR.
Fie următoarea
situaţie, īn care avem alăturate o imagine şi un text care are o
linie terminată cu BR:
********* -------
| | -------
| image | --<BR>
| |
*********
Elementul BR are ca efect inserarea īn punctul īn care apare a unei noi linii. Dar, prin valoarile pe care le poate lua atributul său clear determină şi modul īn care se va afişa şi textul īn continuare (unde va apare noua linie de text după acest element). Valorile pe care le poate lua clear sīnt:
clear = none|left|right|all
Semnificaţia fiecărei valori este:
1. none: Noua linie va īncepe normal. Este valoarea implicită. Īn acest caz, pentru situaţia din figura de mai sus, noua linie (marcată cu semne +) va īncepe imediat sub cea intreruptă, la marginea din dreapta a imaginii:
********* -------
| | -------
| image | --<BR>
| | +++++++
*********
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">
| |
*********
++++++++++++++++++
5. Includerea de obiecte generale (elementul
OBJECT).
Īncepīnd cu HTML 4.0 se restrīnge utilizarea lui
<IMG> pentru inserarea imaginilor, chiar dacă rămīne
permisă. Explicaţia este dată de īncercarea de generalizare a
procesului de inserare şi a altor obiecte (cum sīnt, de exemplu,
appleturile) sub un singur tag: OBJECT.
Pīnă la HTML 4.0 fiecare tip de resursă ce se putea insera īn
paginile HTML īşi avea propriul tag.
Această abordare introducea cīteva dezavantaje
majore:
·
nu permitea extensii ale altor tipuri de resurse
·
fiecare tag nu se putea folosi decīt cu acel tip de
resursă (de exemplu o imagine se insera cu IMG, un applet cu APPLET, etc)
·
se introduceau probleme de accesibilitate, tagurile
vechi neindicīnd mai nimic despre resursa care se ingloba īn pagină,
browserul nefiind capabil să determine dacă poate sau nu să
prezinte resursa respectivă
Pentru a rezolva aceste probleme s-a introdus
elementul OBJECT care oferă o soluţie generală de inserare
a unui obiect generic īn paginile HTML. El permite specificarea tuturor caracteristicilor
necesare pentru a fi prezentate de un browser: codul sursă, valori
iniţiale, date necesare la execuţie. Īn acestă accepţiune
termenul de obiect denotă ceva ce se inserează īn pagina HTML
şi are ca sinonime: applet, plug-in, media handler, etc.
Astfel funcţionalitatea acestor taguri a fost
preluată de noul tag, după schema prezentată īn tabelul
următor:
Tipul resursei care se inserează |
Elementul
specific |
Elementul generic |
Imagini (gif, jpg) |
IMG |
OBJECT |
Applet |
APPLET |
OBJECT |
Alt document HTML |
IFRAME |
OBJECT |
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.
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.
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.
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>
Această hartă este folosită cu imaginea īncărcată din fişierul sitemap.gif, de dimensiuni 300 pixeli x 200 pixeli, plasată īn documentul HTML cu tagul:
<IMG SRC="sitemap.gif" ALT="Site map" USEMAP="#mymap" WIDTH=300 HEIGHT=200>
Exemplu:
Acest exemplu foloseşte două imagini, de tipuri diferite, a doua fiind o alternativă a primeia īn cazul īn care aceasta nu este suportată. Ambele imagini partajează o hartă comună care este inclusa īn fiecare dintre elementele definite cu OBJECT. Elementul MAP conţine şi o listă de legături de meniu care sīnt afişate dacă browserul nu īncarcă imaginile:
<OBJECT DATA="sitemap.png" USEMAP="#map" TYPE="image/png" TITLE="Sitemap" 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>
Ī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). Adăugarea figurii:
<IMG
SRC=logo.gif>
<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>
</IMG>
c). Adăugarea atributul SHAPE pentru a indica localizarea şi forma zonelor active.
Valorile lui sīnt cele cunoscute din meniurile grafice de selecţie:
· SHAPE="default"
pentru
selecţia implicită
· SHAPE="circle
x,y,r" pentru
a defini un cerc de rază r, cu centrul īn x,y.
· SHAPE="rect
x,y,l,h" pentru
dreptunghi (x,y stīnga sus, l lăţime, h īnălţime)
· SHAPE="polygon
x1,y1,x2,y2..." pentru poligon
determinat de punctele xi,yi
Exemplu:
<IMG
SRC=logo.gif>
<UL>
<LI><A
HREF="Editorial.html" SHAPE="rect 0,0,100,100">
Editorial</A>
<LI><A
HREF="Index.html" SHAPE="rect 100,0,100,100">
Index</A>
<LI><A
HREF="Presa.html" SHAPE="rect 200,0,100,100">
Presa</A>
<LI><A
HREF="Oaspeţi.html" SHAPE="rect 300,0,100,100">
Oaspeţi</A>
</UL>
</IMG>
2. Imagini senzitive server-side
Dacă harta imaginii senzitive este mult prea
complicată (şi, implicit, dificil de descris cu metoda
anterioară) se poate lăsa sarcina aceasta pe seama serverului.
Imaginile senzitive de scest tip lucrează cu ajutorul unui script CGI (un
program rezident pe server). Cīnd navigatorul activează o
legătură de pe o imagine senzitivă, apelează de fapt
(indirect) un program special (dedicat acestei acţiuni) din folderul
(directorul) cgi-bin al serverului
căruia īi trimite coordonatele (x,y) ale punctului īn care a fost
activată imaginea (unde s-a făcut clic cu mouse-ul).
Programul special pentru imaginile mapate caută
īntr-un fişier-hartă unde sīnt stabilite corespondenţele īntre
diversele regiuni ale imaginii şi resursele/documentele care sīnt apelate.
Face apoi cīteva calcule pentru a vedea ce pagină să īncarce şi
īncarcă pagina.
Din cauza naturii grafice a imaginilor senzitive, ele
pot fi "văzute" numai de navigatoarele grafice. De fapt
dacă se īncearcă să se vadă o astfel de imagine
senzitivă cu un navigator care lucrează numai īn modul text (de
pildă Lynx) nu se poate vedea nici măcar că o astfel de imagine
există. Prima grijă deci, dacă se utilizează o imagine
senzitivă, este să se creeze un text echivalent pentru utilizatorii
care se conectează īn modul text.
Ca şi īn cazul
altor scripturi CGI, fiecare server are o altă metodă de implementare
a mapării imaginilor, mai mult chiar, metodele pot diferi chiar pentru
serverele de pe aceeaşi platformă. De pildă, serverele de tip CERN
şi NCSA utilizează metode diferite pentru implementarea imaginilor
senzitive. Totuşi, toate serverele utilizează aceleaşi elemente
de bază:
·
Marcarea cu tag-uri
HTML a imaginii (īn document) pentru a arăta că aceasta este o
imagine senzitivă.
·
Scrierea unui fişier
de mapare a imaginii, care va specifica legătura īntre diferite regiuni ale
imaginii şi URL-urile documentelor Web la care acestea fac
referinţă.
·
Un script CGI
(program) īn directorul cgi-bin care le ajută să funcţioneze
īmpreună.
Procesul de realizare a unei imagini senzitive de tip
server side, pentru diverse servere HTTP mai cunoscute şi utilizate (CERN
şi NCSA) este descris īn continuare.
A. Tag-urile imaginii senzitive
Primul pas este alegerea unei imagini care satisface
anumite criterii pentru a fi potrivită ca imagine senzitivă. Cele mai
potrivite sīnt cele care conţin arii vizuale distincte care pot fi
selectate individual (de pildă, imagini care pot fi cu
uşurinţă īmpărţite īn poligoane). Fotografiile sīnt
mai dificil de mapat deoarece elementele tind să aibă o anumită
continuitate (prin tonurile de culoare, de pildă) sau sīnt de forme
complicate.
Marcarea imaginii īn documentul HTML se face de
forma:
<a
href="http://nume_server/cgi-bin/nume_script/cale/fişier_de_mapare_imagine.map">
<img
src="nume_imagine_senzitivă.jpg"
ISMAP alt="mesaj pentru
text">
</a>
unde:
·
<a> şi </a> sīnt etichetele nevide
pentru ancora imagine
·
href = indică fişierul de mapare a zonelor de
pe imagine cu diferite resurse
·
http = protocolul de aducere a fişierului
·
cgi-bin = directorul īn care sīnt rezidente script-urile
·
nume_script = numele script-ului care face legătura
īntre fişierul imagine.map, care conţine maparea imaginii şi
documentele HTML asociate legăturii (htimage pentru serverul CERN sau imagemap
pentru serverul NCSA)
·
imagine.map = fişierul care conţine maparea
imaginii
·
ISMAP = tag-ul care declară că imaginea este
senzitivă
·
<img> = eticheta pentru imagine, cu atributul src
cel care specifică fişierul imagine
Exemplu:
Imaginea pentru a fi prelucrată este logo.jpg.
Marcarea ei īn documentul HTML s-a făcut cu:
<a
href="http://www.comp-craiova.ro/cgibin/htimage/maps/poza.map">
<img
src="logo.jpg" ISMAP alt="CSD Site" border=0 height=160
width =500></a>
Tag-ul border a luat aici valoarea zero. Atributele height
şi width declară īnălţimea respectiv lăţimea
imaginii pentru ca navigatorul să rezerve loc pentru imagine şi
să continue să afişeze textul chiar dacă imaginea nu este
īncă adusă. Dacă valorile specificate sīnt mai mici decīt
dimensiunea imaginii, aceasta este scalată pentru spaţiul rezervat.
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
Sintaxa:
<!-- Acesta este un comentariu -->
Descriere:
Īn toate documentele
HTML se pot introduce comentarii. Acestea vor fi complet ignorate de
navigatoare la afişare/interpretare. Comentariile īncep cu şirul
<!--, pot conţine orice caracter şi se termină la
apariţia şirului -->. Ca regulă generală trebuie plasat
fiecare comentariu pe o linie separată şi este preferabil sa se evite
īn interiorul comentariului utilizarea caracterelor speciale de tipul <,
>, & sau !. Fiecare rīnd de comentariu trebuie formatat īn acest fel. Nu
este indicat să se includă alte tag-uri HTML īntre tag-urile de
comentariu.
Sintaxa:
<HR>
Atribute posibile:
· ALIGN=[
left | center | right ] (alinierea orizontală)
· NOSHADE
(linie solidă)
· SIZE=Pixels
(īnălţimea linei)
· WIDTH=Length
(lungimea liniei)
· atribute core
· evenimente comune
Conţine:
· nimic
Conţinut īn:
· APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DEL, DD, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH
Descriere:
Tag-ul <HR>
poate fi vid şi are ca efect crearea unei linii orizontale pe pagină.
Liniile orizontale pot fi utilizate pentru separarea diferitelor secţiuni
ale unei pagini Web sau pentru punerea īn evidenţă a unor porţiuni
de document cum ar fi liste, meniuri, informaţii de contact.
Atributul ALIGN
specifică alinierea īn apgină, SIZE determină grosimea
(īnălţimea), iar WIDTH lungimea pe orizontală (poate fi şi
procent din lăţimea paginii).
NOSHADE este un
atribut care indică faptul că linia este fără efectul
tridimensional dat de umbră, asemănătoare cu o linie
solidă.
Liniile se pot
substitui şi cu imagini care īndeplinesc acelaşi rol.
Exemplu:
Urmează
o linie de 3 pixeli grosime
<HR SIZE=3>
Urmează o linie de 6
pixeli grosime
<HR SIZE=6>
Exemplu:
Pentru liniile definite astfel:
<HR width="50%" align="center">
<HR size="5" width="50%" align="center">
<HR noshade size="5" width="50%" align="center">
Efectul este cel din figura următoare:
Se poate
īnlocui linia desenată de navigator cu o imagine, ca mai jos:
Sintaxa:
<BODY
BGCOLOR=#FFFFCA> sau
<BODY
BACKGROUND="imagine.gif">
Descriere:
Cel mai simplu mod
de a schimba fundalul se realizează utilizīnd o culoare de fond. Aceasta
poate fi setată īn tag-ul <BODY> prin atributul BGCOLOR. Culoarea trebuie specificată īn RGB pe 8 biţi.
Fiecare culoare folosită la sinteza aditivă RGB poate avea o valoare
īntre 0 şi 255 (0 0 0 fiind negru şi 256 256 256 fiind alb). Singura
dificultate este că valoarea lui BGCOLOR trebuie dată īn hexazecimal.
Exemplu:
<BODY
BGCOLOR=#FFFFCA>
<BODY
BGCOLOR=<#FFFFFO>
Pentru fundaluri pot fi folosite şi imagini sau,
mai bine, o singură imagine aşezată alăturat de mai multe
ori pīnă la acoperirea completă a fundalului. Problema este alegerea
unei imagini care alăturată sie īnsăşi să dea impresia
de continuitate.
Setul de atribute care urmează oferă un
control crescut asupra felului īn care apare afişat textul documentului
HTML şi legăturile.
Atribut=Valoare |
Semnificaţie |
TEXT |
Controlează culoarea
īntregului text din document |
LINK |
Controlează culoarea
legăturilor nevizitate (implicit, albastru) |
VLINK |
Controlează culoarea
legăturilor vizitate (implicit, purpuriu) |
ALINK |
Controlează culoarea
unei legături asupra căreia este apăsat butonul mouse-lui
(implicit, roşu) |
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.
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ă.
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.
Atributul
tag-ului <TABLE> BORDER indică lăţimea chenarului
tabelului, CELLSPACING - spaţiul dintre celulele tabelului, iar CELLPADDING
- spaţiul dintre marginile celulelor şi conţinut. Figura
următoare sugerează aceste elemente:
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>
Şi
el ar putea arăta cu un browser negrafic ca īn figura următoare:
A test table with merged cells
/-----------------------------------------\
| | Average | Red |
| |-------------------| eyes |
| | height | weight | |
|-----------------------------------------|
| Males | 1.9 | 0.003 | 40% |
|-----------------------------------------|
| Females | 1.7 | 0.002 | 43% |
\-----------------------------------------/
iar cu unul grafic astfel:
2. Explicaţia unui tabel (elementul CAPTION)
Natura unui tabel (ce conţine sau cum se foloseşte, etc) este descrisă de elementul CAPTION. Acesta este permis doar imediat după tagul de īnceput al lui TABLE şi poate apare maxim o dată īn descrierea unui tabel.
Acest element permite deducerea rapidă structurii unui tabel, īntocmai ca headerele acestuia. Ca o consecinţă, rezultă că este inadecvat ca sumar (descriere mai pe larg) din perspectiva unor utilizatori ai unor browsere nevizuale. De aceea, informaţiile adiţionale (mai bogate) descriind scopul tabelului şi structura lui se oferă prin atributul summary al elementului TABEL. Aceasta este important mai ales la tabelele care nu au explicaţii date cu CAPTION. Se recomandă să se evite depăşirea dimensiunilor tabelului īn ceea ce priveşte explicaţia, pentru ca aceasta să fie nevoită să facă scroll.
Sintaxa:
<CAPTION>...</CAPTION>
Atribute posibile:
· ALIGN=[ top | bottom | left | right ] (alinierea explicaţiei)
·
atribute comune
Conţine:
·
elemente inline
Conţinut īn:
· TABLE
Descriere:
Elementul CAPTION defineşte o explicaţie
pentru un tabel. O explicaţie bună trebuie să ofere un scurt
antet pentru tabel. Pentru tabelele simple poate să fie şi un sumar,
dar pentru cele mai complexe trebuie completat cu un sumar adevărat,
implementat de atributul SUMMARY.
Explicaţia tabelului poate fi dată şi
printr-un paragraf separat sau printr-un titlu de structură introdus chiar
īnainte de tabel dar este de preferat să fie introdusă prin
<CAPTION> deoarece explicaţiile pot fi tratate special de către
navigatoare. De pildă explicaţiile pot fi extrase īntr-un fişier
separat sau pot fi numerotate.
Atributul ALIGN specifică modalitatea de
aliniere faţă de tabel. Valoarea implicită este top.
Exemplu:
Un exemplu de utilizare a
acestui element este dat īn cele ce urmează:
<TABLE>
<CAPTION>Common Usenet Abbreviations</CAPTION>
<THEAD>
...
</TABLE>
iar o completare cu un sumar
poate arăta astfel:
<TABLE SUMMARY="This table gives the character entity reference,
decimal character reference, and hexadecimal character
reference for symbols and Greek letters.">
<CAPTION>Symbols and Greek
Letters in HTML 4.0</CAPTION>
...
</TABLE>
3. Grupuri de rīnduri (elementele THEAD, TFOOT
şi TBODY)
Rīndurile unui tabel
pot fi grupate īn cap de tabel (head), legendă a tabelului (foot) şi
una sau mai multe secţiuni, utilizīnd elementele THEAD, TFOOT şi,
respectiv, TBODY. Această divizare permite browserelor să suporte
scrollul corpului tabelului independent de headerul şi footerul tabelului,
care, la rīndul lor, pot fi repetate pe fiecare pagină cīnd astfel de
tabele se listează. Headerul şi footerul trebuie să
conţină informaţii despre coloanele tabelului, iar corpul
acestuia să conţină rīndurile de date.
Secţiunile definite de THEAD, TFOOT şi TBODY trebuie să conţină acelaşi număr de coloane.
Cīnd sīnt prezente,
fiecare element THEAD, TFOOT şi TBODY conţine grupuri de rīnduri.
Fiecare astfel de grup trebuie să conţină cel puţin un rīnd
definit cu TR.
Exemplul
următor ilustrează ordinea şi structura headerului, footerului
şi corpurilor unui tabel:
<TABLE>
<THEAD>
<TR> ... informaţii de header ...
</THEAD>
<TFOOT>
<TR> ... informaţii de footer ...
</TFOOT>
<TBODY>
<TR> ... primul rīnd al primului bloc de date ...
<TR> ... al doilea rīnd al primului bloc de date ...
</TBODY>
<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 ...
</TBODY>
</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>
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ă.
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>
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]
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>
Acest tabel poate arăta astfel:
Name Cups Type of Coffee Sugar?
T. Sexton 10 Espresso No
J. Dinnen 5 Decaf Yes
Sintaxa:
<TH>...</TH>
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 TH defineşte o celulă de tip header (antet,
cap de tabel). Dacă o celulă este şi antet şi dată
trebuie folosit TD.
Atributele ROWSPAN şi COLSPAN specifică
numărul de rīnduri şi respectiv numărul de coloane care sīnt
depăşite de celulă (sīnt suprapuse de celulă, peste care se
intinde celula). Valoarea implicită este 1. Valoarea specială 0
indică suprapunerea tuturor rīndurilor sau coloanelor pīnă la
sfīrşitul tabelului, dar este ignorată de majoritatea browserelor.
Atributul HEADERS specifică celulele header ce
se aplică lui TH. valoarea este o listă a valorilor atributului ID a
acelor celule. Se foloseşte de browserele nevizuale. Atributul SCOPE
specifică celulele pentru care elementul descris cu TH oferă
informaţii de header (antet).
Atributul ABBR dă o versiune abreviată a
conţinutului celulei, utilizată īn cazul īn care nu există
suficient spaţiu pentru a vizualiza conţinutul celulei.
Atributul AXIS oferă o metodă de a
clasifica celulele. Valoarea acestui atribut este o listă de nume de
categorii.
Atributele ALIGN, VALIGN, CHAR, CHAROFF, BGCOLOR au
aceeaşi semnificaţie ca la TR, iar WIDTH, HEIGHT, NOWRAP
şi BGCOLOR sīnt depăşite īn favoarea style-sheet-urilor.
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"):
7. Grupuri de coloane (elementul COLGROUP)
Īntr-un tabel se pot
grupa şi coloanele, nu numai rīndurile, folosind elementul COLGROUP. Numărul de coloane ce
fac parte dintr-un grup se poate specifica īn două moduri (mutual
exclusive):
1.
Cu atributul SPAN al elementului (valoare implicită
1)
2.
Cu elementul COL, inclus īn COLGROUP, se reprezintă
una sau mai multe coloane din grupul respectiv.
Avantajul folosirii
atributului SPAN (metoda 1) este că se pot grupa informaţii despre
lăţimile coloanelor. De exemplu, dacă un tabel conţine 40
de coloane, fiecare cu o lăţime de 20 pixeli, este mult mai uşor
de scris:
<COLGROUP span="40" width="20">
</COLGROUP>
de cīt:
<COLGROUP>
<COL width="20">
<COL width="20">
...pīnă la 40 de coloane...
</COLGROUP>
Cīnd este necesar să se individualizeze o coloană (pentru stil, lăţime, etc) īntr-un grup, se poate identifica acea coloană cu un element COL. Astfel, pentru a aplica un stil special ultimei coloane a tabelului dat ca exemplu anterior se poate folosi:
<COLGROUP width="20">
<COL span="39">
<COL id="format-special">
</COLGROUP>
Atributul width al lui COLGROUP este moştenit de toate cele 40 de coloane. Primul element COL se referă la primele 39 de coloane (nu e nimic special cu ele) şi al doilea atribuie o valoare identificatorului reprezentat de atributul ID, astfel ca un stil defint cu tehnica style-sheet-urilor să se refere la el.
Īn exemplul următor se descrie un tabel cu două grupe de coloane. Prima conţine 10 coloane, iar cea de a doua 5. Lăţimea implicită pentru fiecare coloană din primul grup va fi 50 de pixeli, iar lăţimea fiecărei coloane din a doua grupă va fi minimul necesar pentru acea coloană:
<TABLE>
<COLGROUP span="10" width="50">
<COLGROUP span="5" width="0*">
<THEAD>
<TR>
<TD> ...
</TABLE>
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>
Īn locul lui <COLGROUP SPAN=3> se poate folosi un COLGROUP cu 3 elemente COL, astfel:
<COLGROUP>
<COL CLASS=entity>
<COL CLASS=decimal>
<COL CLASS=hex>
</COLGROUP>
S-a folosit atributul CLASS pentru a se face disticţie īntre coloane individuale ale grupului, permiţīnd astfel sugerarea diferită a prezentării pentru respectivele coloane, prin folosirea style-sheet-urilor.
8. Definirea atributelor comune coloanelor (elementul
COL)
Elementul COL
permite autorilor paginilor HTML gruparea īmpreună a atributelor unor coloane.
COL nu grupează coloane (dpdv
structural) acesta fiind rolul lui COLGROUP. Elementel COL sīnt vide şi
servesc doar ca suport pentru atribute. Ele pot apare īn interiorul sau
exteriorul unui grup explicit de coloane (defint cu COLGROUP).
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:
<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 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>
10. Calculul lăţimii coloanelor dintr-un
tabel
Lăţimea
unei coloane poate fi specificată īn trei moduri:
1. Fix
Specificarea unei lăţimi fixe este dată īn pixeli (ex. width="30"). Această metodă permite afişarea tabelelor īn mod incremental (pe măsură ce se īncarcă rīndurile tabelului).
2. Procent
Specificarea unei lăţimi ca procent (ex. width="20%") este dată īn funcţie de lăţimea disponibilă pentru īntreg tabelul. Aceasta nu depinde de tabelulul īnsuşi, şi astfel această metodă permite şi ea afişarea tabelelor incremental.
3. Proporţional
Specificarea unei lăţimi īn mod proporţional (ex. width="3*") se referă la porţiunile de spaţiu orizontal solicitate de tabel. Dacă lăţimea tabelului este dată ca o valoare fixă, prin intermediul atributului width al elementului TABLE, atunci şi această metodă permite afişarea tabelelor incremental.
Dacă, īnsă, tabelul nu are o lăţime fixă, browserele trebuie să aştepte īncărcarea integrală a tabelului īnainte de a determina lăţimea orizontală cerută de tabel. Numai atunci se poate determina şi lăţimea coloanelor.
Dacă nu se specifică nici o informaţie despre lăţimea unei coloane, browserele nu vor capabile să formateze tabelul incremental, īntrucīt trebuie să aştepte īntregul conţinut al coloanei pentru a determina lăţimea acesteia.
Dacă lăţimea coloanei se dovedeşte prea mică pentru conţinutul acesteia, browserele pot alege să reformateze tabelul.
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.
11. Afişarea marginilor exterioare şi
interioare
Atributele care
determină modul de afişare al marginilor exterioare şi liniilor
interioare (dintre celule) sīnt următoarele:
1. frame = void|above|below|hsides|lhs|rhs|vsides|box|border
Acest atribut specifică marginile exterioare (care īnconjoară tabelul) care vor fi vizibile.
2. rules = none|groups|rows|cols|all
Acest atribut specifică marginile interioare (care delimitează celulele tabelului) care vor fi vizibile. Modul īn care sīnt afişate depinde de browser.
3. border = pixels
Acest atribut specifică lăţimea (īn pixeli) a marginilor exterioare.
Pentru a se păstra compatibilitatea
cu versiunile anterioare, se impun următoarele reguli:
· Dacă border="0" atunci frame="void" şi, dacă nu este specificat altfel, rules="none".
· Orice altă valoare pentru border implică frame="border" şi, dacă nu este specificat altfel, rules= "all".
· Valoarea "border" īn tagul de īnceput al lui TABLE trebuie interpretat ca valoare a atributului frame. Aceasta implică rules="all" şi o valoare diferită de zero pentru atributul border.
Exemplu:
Următoarele 2 definiţii sīnt
echivalente:
<TABLE border="2">
<TABLE border="2" frame="border" rules="all">
este aceeaşi cu:
<TABLE border>
<TABLE frame="border" rules="all">
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>
12. Alinierea datelor din celule
Pentru estetica conţinutului tabelului
există cīteva opţiuni care permit alinierea datelor īn interiorul
celulelor atīt pe orizontală cīt şi pe verticală. Opţiunile
sīnt exprimabile prin intermediul unor atribute ale tag-urilor TR, TH, TD, COL,
COLGROUP.
Atributele care afectează alinierea datelor īn
celule unui tabel sīnt:
1. align = left|center|right|justify|char
Atributul ALIGN este utilizat pentru aliniere orizontală şi poate lua următoarele valori:
Valoare |
Descriere |
LEFT |
Datele din celulă
sīnt aliniate la marginea din stīnga celulei |
RIGHT |
Datele din celulă
sīnt aliniate la marginea din dreapta celulei |
CENTER |
Datele din celulă
sīnt centrate orizontal la mijlocul celulei |
JUSTIFY |
Datele din celulă
sīnt aliniate atīt la marginea din stīnga a celulei cīt şi la marginea
din dreapta |
CHAR |
Datele din celulă
sīnt aliniate după un anumit caracter |
2. valign = top|middle|bottom|baseline
Atributul
VALIGN este utilizat pentru aliniere
verticală şi poate lua următoarele valori:
Valoare |
Descriere |
TOP |
Datele din celulă
sīnt aliniate la marginea de sus a celulei |
BOTTOM |
Datele din celulă
sīnt aliniate la baza celulei |
MIDDLE |
Datele din celulă
sīnt centrate vertical la mijlocul celulei |
BASELINE |
Aliniere similară cu
TOP dar alinierea se face cu baza primului rīnd text din fiecare celulă. |
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|
------------------------------
Atributele de aliniere inserate īn tag-urile de
īnceput de rīnd (<TR>) au efect asupra tuturor celulelor din rīnd.
Atributele de aliniere inserate īn tag-urile care definesc celule au
precedenţă faţă de atributele de aliniere inserate īn
tag-urile īnceput de rīnd.
Moştenirea specificaţiilor de aliniere
Alinierea conţinutului celulelor poate fi specificată individual fiecărei celule sau poate fi moştenită de la elementele ce includ celula respectivă (rīnd, coloană, tabel).
Ordinea de precedenţă (de la cea mai mare la cea mai mică) pentru atributele align, char şi charoff 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 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.
4. 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.
5. Atributul de aliniere setat pentru tabel (TABLE).
6. Valoarea implicită de aliniere.
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.
La afişarea celulelor, alinierea orizontală este determinată de coloane īnaintea rīndurilor, īn timp ce pentru alinierea verticală ordinea de preferinţă este rīnduri şi apoi coloane.
Alinierea implicită depinde
de browser dar, īn cele mai multe cazuri este: informaţiile din celulele cap de tabel sīnt
centrate atīt orizontal cīt şi vertical iar informaţiile din celulele
de date sīnt centrate vertical dar aliniate orizontal la stīnga.
Exemplu:
Un exemplu complet de tabel cu diverse atribute este prezentat īn continuare:
<TABLE border="2" frame="hsides" rules="groups"
summary="Code page support in different versions of MS Windows.">
<CAPTION>CODE-PAGE SUPPORT IN MICROSOFT WINDOWS</CAPTION>
<COLGROUP align="center">
<COLGROUP align="left">
<COLGROUP align="center" span="2">
<COLGROUP align="center" span="3">
<THEAD valign="top">
<TR>
<TH>Code-Page<BR>ID
<TH>Name
<TH>ACP
<TH>OEMCP
<TH>Windows<BR>NT 3.1
<TH>Windows<BR>NT 3.51
<TH>Windows<BR>95
<TBODY>
<TR><TD>1200<TD>Unicode (BMP of ISO/IEC-10646)<TD><TD><TD>X<TD>X<TD>*
<TR><TD>1250<TD>Windows 3.1 Eastern European<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1251<TD>Windows 3.1 Cyrillic<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1252<TD>Windows 3.1 US (ANSI)<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1253<TD>Windows 3.1 Greek<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1254<TD>Windows 3.1 Turkish<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1255<TD>Hebrew<TD>X<TD><TD><TD><TD>X
<TR><TD>1256<TD>Arabic<TD>X<TD><TD><TD><TD>X
<TR><TD>1257<TD>Baltic<TD>X<TD><TD><TD><TD>X
<TR><TD>1361<TD>Korean (Johab)<TD>X<TD><TD><TD>**<TD>X
<TBODY>
<TR><TD>437<TD>MS-DOS United States<TD><TD>X<TD>X<TD>X<TD>X
<TR><TD>708<TD>Arabic (ASMO 708)<TD><TD>X<TD><TD><TD>X
<TR><TD>709<TD>Arabic (ASMO 449+, BCON V4)<TD><TD>X<TD><TD><TD>X
<TR><TD>710<TD>Arabic (Transparent Arabic)<TD><TD>X<TD><TD><TD>X
<TR><TD>720<TD>Arabic (Transparent ASMO)<TD><TD>X<TD><TD><TD>X
</TABLE>
Acesta poate arăta ca īn figura următoare:
Utilizarea frame-urilor īn limbajul HTML
Frame-urile HTML permit autorilor de pagini Web
prezentarea documentelor īn zone de ecran multiple, zone care pot fi ferestre
independente sau subferestre ale ferestrei principale a browserului. Fereastra
browserului este astfel divizată la fel cum un tabel īmparte o
pagină. Īn fiecare dintre aceste zone se pot īncărca diverse şi
diferite (!) documente HTML.
Aceste zone multiple oferă posibilitatea de a
păstra anumite informaţii vizibile īn timp ce altele sīnt derulate
(scroll) sau īnlocuite. de exemplu īn aceeaşi fereastră un frame
poate afişa un banner static, un altul un meniu de navigare şi al
treilea documentul propriu-zis care poate fi derulat (deplasat, scroll) sau
īnlocuit prin comenzile din cel de-al doilea frame. Dincolo şi de
avantajele legate de prezentarea mult mai potrivită a informaţiilor,
această posibilitate oferă şi o creştere a vitezei de
īncărcare a unor pagini. Dacă meniu de navigare este alcătuit
din butoane (care sīnt elemente grafice), acestea pot fi īncărcate doar o
singură dată şi folosite cu diverse contexte (pagini),
fără ca browserul să fie nevoit să le īncarce sau chiar
să le afişeze de fiecare dată cīnd se schimbă pagina.
Īn continuare se prezintă un document simplu
care conţine 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 simple frameset document</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAMESET rows="100, 200">
<FRAME src="contents_of_frame1.html">
<FRAME src="contents_of_frame2.gif">
</FRAMESET>
<FRAME src="contents_of_frame3.html">
<NOFRAMES>
<P>This frameset document contains:
<UL>
<LI><A href="contents_of_frame1.html">Some neat contents</A>
<LI><IMG src="contents_of_frame2.gif" alt="A neat image">
<LI><A href="contents_of_frame3.html">Some other neat contents</A>
</UL>
</NOFRAMES>
</FRAMESET>
</HTML>
care ar putea arăta astfel:
+---------------------------------------+
| | |
| 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).
1. Descrierea layout-ului documentului cu frame-uri
(elementul FRAMESET)
Modul de aranjare al subspaţiilor ocupate de frame-uri (al setului de frame-uri, frameset-ului) īntr-o fereastră se descrie cu elementul FRAMESET. Acesta are ca argumente ROWS, care defineşte numărul de subspaţii orinzontale şi COLS care defineşte numărul de subspaţii verticale. Folosirea simultană a ambelor atribute īmparte spaţiul ocupat de frame-uri īntr-un grid, umplut de la stīnga la dreapta şi de sus īn jos: īntīi rīndul de sus, de la stīnga la dreapta, apoi rīndul al doilea, tot de la stīnga la dreapta, ş.a.m.d.
Dacă ROWS nu are valoare, fiecare coloană se extinde pe lungimea īntregii pagini, iar dacă lipseşte COLS fiecare rīnd se extinde pe īntreaga lăţime. Dacă lipsesc amīndouă frame-ul ia exact dimensiunea paginii care-l defineşte.
Exemple:
1. Īmpărţirea ecranului vertical īn două parţi egale:
<FRAMESET rows="50%, 50%">
... restul definiţiilor ...
</FRAMESET>
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>
4. Presupunem că ferestra browserului are dimensiunea curentă de 1000 pixeli īnălţime. Definim 4 rīnduri care au: primul cu 30% din această dimensiune (300 de pixeli), al doilea cu dimensiunea exact de 400 de pixeli. Rămīn astfel 300 de pixeli pentru a fi īmpărţiţi īntre rīndurile 3 şi 4. Al patrulea rīnd are dimensiunea ("2*") de două ori cīt al treilea ("*"), īnseamnă că are 200 pixeli īnălţime, iar ultimul are 100
<FRAMESET rows="30%,400,*,2*">
... 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.
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>
3. Partajarea datelor īntre frame-uri
Se pot partaja date īntre diverse frame-uri prin includerea acestora īntr-un element OBJECT. Acesta va fi inclus īn elementul HEAD al documentului care descrie frame-urile şi va fi denumit cu atributul ID. Orice document ce reprezintă conţinutul unei frame īl va putea accesa prin intermediul acestui identificator.
Exemplul următor ilustrează modul īn care un script poate referi un element OBJECT definit pentru tot setul de frame-uri:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
"http://www.w3.org/TR/REC-html40/frameset.dtd">
<HTML>
<HEAD>
<TITLE>This is a frameset with OBJECT in the HEAD</TITLE>
<!Acest obiect NU este afişat -->
<OBJECT
id="myobject" data="data.bar"></OBJECT>
</HEAD>
<FRAMESET>
<FRAME src="AnotherPage.html" name="AnotherPage">
</FRAMESET>
</HTML>
<!-- In AnotherPage.html -->
<HTML>
<HEAD>
<TITLE>... Page title bla, bla, bla ... </TITLE>
</HEAD>
<BODY>
... īnceputul documentului ...
<P>
<SCRIPT type="text/javascript">
parent.myobject.myproperty
</SCRIPT>
... restul documentului ...
</BODY>
</HTML>
4. Definirea conţinutului şi atributelor unui
frame (elementul FRAME)
Conţinutul (documentul care se īncarcă īn
frame) şi īnfăţişarea unui frame (detalii despre marginile
frame-ului şi despre posibilităţile de scroll) sīnt definite de
elementul FRAME prin intermediul unor atribute specifice. Īn plus frame-urile
se pot identifica prin nume care pot fi utilizate la navigare: tagul ANCHOR
poate specifica un atribut (NAME) care să indice frame-ul īn care se
īncarcă documentul indicat de legătură.
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>
Acest exemplu crează 4 frame-uri cu layout-ul (poziţionarea) ca īn figura următoare:
+------------------------------------------+
|Frame 1 |Frame 3 |Frame 4 |
| | | |
| | | |
+------------| | |
|Frame 2 | | |
| | | |
+ -----------------------------------------+
şi ilustrează utilizarea atributelor lui FRAME. Frame-ul 1 nu are bare de scroll; frame-ul 2 lasă spaţiu īn jurul conţinutului său (care este iniţial o imagine) şi nu este redimensionabil; īntre frame-urile 3 şi 4 nu este desenată marginea, care va fi, totşi desenată (implicit, nefiind specificat altfel) īntre frame-urile 1, 2 şi 3.
5. Specificarea conţinutului iniţial al unui
frame (atributul SRC)
Conţinutul iniţial al unui frame (resursa
care se īncarcă īn acel frame: document HTML, imagine, animaţie, etc)
se specifică cu atributul SRC al elementului FRAME.
Pentru exemplul anterior, reluat aici:
<!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>
se crează 4 frame-uri īn care se īncarcă 3
documente HTML (īn frame-urile 1, 3 şi 4 din documentele contents_of_frame1.html,
contents_of_frame3.html şi, respectiv contents_of_frame4.html) şi o imagine
(īn frame-ul 2, din fişierul contents_of_frame2.gif).
De reţinut:
Conţinutul
unei frame NU trebuie să fie īn
acelaşi document cu definiţia frame-ului!
Exemplu ILEGAL (eronat):
Următoarea definiţie a unui set de frame-uri nu este legală īntrucīt conţinutul celui de al doilea frame este īn acelaşi document ca şi definiţia setului de frame-uri (frameset-ului):
<!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="50%,50%">
<FRAME src="contents_of_frame1.html">
<FRAME src="#anchor_in_acelasi_document">
<NOFRAMES>
...text...
<H2><A name="anchor_in_acelasi_document">Important section</A></H2>
...alt text...
</NOFRAMES>
</FRAMESET>
</HTML>
6. Specificarea numelui unui frame (atributul NAME)
şi utilizarea lui īntr-un link (TARGET)
Prin asignarea unui nume uneu frame cu ajutorul
atributului NAME, autorii pot referi acel frame ca ţintă
(destinaţie) pentru legăturile definite de alte elemente. Aceasta se
realizează cu atributul TARGET al acestora şi poate fi utlizat pentru
crearea link-urilor uzuale (A, LINK), imaginilor senzitive (AREA) şi a
formelor (FORM).
Se prezintă īn continuare un exemplu care
sugerează o modalitate de a modifica dinamic conţinutul unui frame.
Definim īntīi setul de frame-uri īn documentul frameset.html:
<!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 rows="50%,50%">
<FRAME name="fixed" src="init_fixed.html">
<FRAME name="dynamic" src="init_dynamic.html">
</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>
<!-- In ostrich-container.html: -->
<HTML>
<HEAD>
<TITLE>The fast and powerful ostrich</TITLE>
</HEAD>
<P>
<OBJECT data="ostrich.gif" type="image/gif">
These ostriches sure taste good! <! conţinut alternativ -->
</OBJECT>
</HTML>
8. Specificarea conţinutului alternativ al unui
document cu frame-uri (NOFRAMES)
Dacă browser-ul nu poate afişa conţinutul unui document ce foloseşte frame-uri, se poate specifica o alternativă la acesta prin intermediul elementului NOFRAMES. Această alternativă va fi folosită şi de browser-ele care pot afişa frame-uri dar au fost configurate să nu le afişeze. Elementul NOFRAMES poate fi folosit īntr-o secţiune FRAMESET a unui document:
Exemplu:
<!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 un frameset dar are şi NOFRAMES</TITLE>
</HEAD>
<FRAMESET cols="50%, 50%">
<FRAME src="main.html">
<FRAME src="table_of_contents.html">
<NOFRAMES>
<P>Aici este
<A href="main-noframes.html"> versiunea documentului fără frame-uri.</A>
</NOFRAMES>
</FRAMESET>
</HTML>
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.
9. Frame-uri inline (elementul IFRAME)
Este posibil să se includă un frame īntr-un
bloc de text. Elementul ce permite această operaţie este IFRAME.
Inserarea unui astfel de frame este foarte asemănătoare cu inserarea
unui obiect prin intermediul elementului OBJECT, permiţīnd īn ultimă
imstanţă inserarea unui document HTML īn mijlocul altuia.
Informaţia care se inserează este
specificată prin atributul SRC, iar conţinutul
unui element IFRAME va fi afişat doar dacă browser-ul nu
suportă frame-uri.
De exemplu, pentru browserele care suportă frame-uri, exemplul următor va insera un frame, īnconjurat de margine, īn mijlocul unui text:
<IFRAME src="foo.html" width="400" height="500"
scrolling="auto" frameborder="1">
[Browserul dvs. nu suportă frame-uri.
Puteţi īnsă vedea totuşi
<A href="foo.html">documentul </A>
ce ar fi trebuit să vă apară īntr-un frame inline.]
</IFRAME>
Spre deosebire de frame-urile obişnuite, frame-urile inline nu pot fi redimensionate şi de aceea nu au atributul NORESIZE.
De remarcat că un document HTML poate fi inserat (īnglobat) īn altul prin intermediul lui OBJECT.
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>
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.
1. Descrierea unui formular (elementul FORM)
Elementul care descrie un formular este FORM. El se comportă ca un
container pentru controale şi specifică:
· Layout-ul (īnfăţisarea) formularului (prin conţinutul elementului).
· Programul ce va prelua formularul completat şi transmis (atributul ACTION). Programul care-l recepţionează trebuie să fie capabil să preia corect şi să decodifice perechile nume/valoare transmise pentru a le putea folosi.
· Metoda prin care datele introduse de utilizator vor fi trimise serverului (atributul METHOD).
· O codificare a caracterelor acceptabilă pentru server, astfel ca acesta să poată prelua formularul (atributul ACCEPT-CHARSET). Browserele utilizatorilor trebuie să-i avertizeze asupra valorilor setului de caractere acceptat şi/sau să restricţioneze posibilitatea acestora de a introduce caractere necunoscute.
Un formular poate conţine īn afara controalelor şi text şi elemente HTML (paragrafe, liste, etc.)
Exemplul următor arată un formular care va fi procesat de un program numit "adduser", īn momentul īn care va fi transmis de browser. Metoda utilizată pentru transmitere va fi "post":
<FORM action="http://somesite.com/prog/adduser" method="post">
...conţinutul formularului...
</FORM>
Iar exemplul următor arată cum se trimite un formular la o adresă de email:
<FORM action="mailto:L.P@alpha.comp-craiova.ro" method="post">
...conţinutul formularului...
</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).
2. Crearea controalelor de bază ale unui formular
(INPUT, BUTTON, TEXTAREA)
Elementul INPUT este cel mai frecvent īntīlnit
deoarece crează mai multe tipuri de controale care permit utilizatorului
să aleagă. Controalele includ trei tipuri de butoane care pot fi apăsate,
două tipuri de butoane pe care utilizatorul le poate seta īnchis/deschis,
un element de selecţie fişiere şi cīmpuri īn care poate fi
tastat text. Tag-ul INPUT este nevid.
Controalele de bază pe care le poate utiliza un
autor īn cadrul formularelor interactive sīnt create cu elementul INPUT, individualizarea lor
făcīndu-se prin intermediul atributului său TYPE. Pe acestea (ca de
fapt pe toate controalele unui formular) utilizatorul le expediază prin
intermediul unui buton creat cu INPUT de
tipul SEND sau le reintroduce
după acţionarea unui buton de tipul RESET. Nu există o limită asupra numărului de
elemente conţinute īntr-un formular.
Valorile atributului TYPE care crează diversele
tipuri de controale (pentru elementul INPUT) sīnt:
text
Crează un control de introducere a unui text pe o singură linie: text input control.
password
La fel ca şi "text", dar textul introdus este afişat astfel ca să nu fie descifrabil / să fie ascuns (de exemplu cīte un asterix pentru fiecare caracter introdus), de aceea se şi numeşte parolă. Valoarea curentă a acestui control este textul introdus de utilizator, nu cel afişat de formular! De remarcat că protecţia oferită īn acest fel este minimă, textul transmiţīndu-se, dacă nu se folosesc tehnici adecvate, īn clar!
checkbox
Crează o căsuţă de marcare: checkbox.
radio
Crează un buton radio: radio button.
file
Crează un control utilizat la selecţia fişierelor: file select control. Se foloseşte valoarea atributului VALUE ca nume iniţial de fişier.
button
Crează un buton care poate fi apăsat. Este utilizat prin intermediul valorii atributului VALUE care de fapt şi este textul ce apare pe acesta.
submit
Crează un buton care trimite datele din formular: submit button.
reset
Crează un buton care reiniţializează datele din formular: reset button.
image
Crează un buton de submit dar care are o īnfăţişare grafică. Valoare atributului SRC specifică adresa URI a imaginii care e folosită la decorarea butonului. Se recomandă folosirea şi a unui text alternativ (cu atributul ALT) pentru cazul cīnd imaginea nu e vizibilă.
Cīnd imaginea este apăsată (cu mouse-ul, de exemplu) formularul este transmis serverului īmpreună cu coordonatele punctului apăsat exprimate īn pixeli faţă de colţul stīnga-sus. Datele transmise includ name.x=x-value şi name.y=y-value, unde "name" este valoarea atributului NAME, iar x-value şi y-value sīnt valorile coordonatelor.
Dacă serverul are implementate diferite acţiuni īn funcţie de punctul apăsat, utilizatorii cu browsere non-grafice vor fi dezavantajaţi şi de aceea se pot lua īn considerare următoarele alternative:
· Utilizarea butoanelor SUBMIT multiple (fiecare cu imaginea lui). Poziţia acestora poate fi controlată cu style-sheet-uri.
· Utilizarea unei hărţi senzitive de tip client-side image map, care rulează pe client, īmpreună cu un script.
hidden
Crează un control ascuns: hidden control.
Exemplu:
Acest exemplu defineşte un formular simplu care permite utilizatorului introducerea numelui, prenumelui, adresei de email şi sexului. Cīnd se activează (apasă) butonul de trimitere (submit) formularul va fi trimis programului specificat de atributul ACTION (aici adduser):
<FORM action="http://somesite.com/prog/adduser" method="post">
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>
<INPUT type="submit" value="Send">
<INPUT type="reset">
</FORM>
Astfel, acest formular poate
apărea astfel:
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>
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
Sintaxa:
<INPUT
TYPE="text" NAME="nume" VALUE="valoare" SIZE=xx
MAXLENGTH=yy>
Cīmpul text este
utilizat frecvent ca formă de intrare a datelor pentru culegerea unor
informaţii cum ar fi nume, adrese e-mail, numere de telefon, comentarii
scurte sau orice altceva care poate fi tastat pe un rīnd. Ca majoritatea
elementelor INPUT, un rīnd text trebuie să aibă un nume (NAME). La
trimiterea datelor din formular la server, numelui īi va fi asociată
valoarea tastată. De pildă, pentru culegerea unor adrese email, dacă
am ales ca nume al rīndului NAME=adresă, la server va fi trimisă
secvenţa adresă=ce s-a tastat.
Parametrul VALUE este egal cu textul implicit pe
care īl dorim introdus īn rīndul text. Dacă VALUE lipseşte, rīndul va
fi iniţial blanc.
Parametrul SIZE (dimensiune) permite setarea lungimii
rīndului īn număr de caractere. Dacă numărul de caractere este
mai mare (pīnă la valoarea maximă admisă prin MAXLENGTH), rīndul se va derula (scroll
orizontal). Numărul maxim specificat de MAXLENGTH nu
reprezintă o cale sigură de a limita numărul de caractere
introduse de utilizator care, de exemplu, poate edita pagina ce conţine
formularul şi trimite un număr oricīt de mare de caractere pentru
text. Această limitare trebuie luată īn considerare şi de
programul care primeşte formularul. Dacă parametrul SIZE lipseşte, se
consideră că are valoarea implicită de 20 de caractere.
Majoritatea
navigatoarelor suportă cīmpuri text formate din mai multe rīnduri,
definite prin SIZE=X,Y unde X=număr de caractere pe rīnd si Y=număr
de rīnduri. Deoarece HTML suportă şi comanda TEXTAREA (zonă
text), elementul tip text se foloseşte aproape exclusiv la definirea unui
singur rīnd.
Atributul READONLY, nou īn HTML 4.0, este destul
de puţin suportat de browsere. El previne editarea conţinutului unui
control de tip text sau parolă, dar totuţi sīnt trimise cu
formularul.
Exemplu:
<FORM>
Tastaţi
numele Dvs.:
<INPUT
TYPE="text" NAME="nume" SIZE=40
MAXLENGTH=60></input>
Si
adresa e-mail:
<INPUT
TYPE="text" NAME="adresa" SIZE=30
MAXLENGTH=40></input>
</FORM>
Tot un control utilizat la introducerea textelor pe o linie se poate
crea şi cu elementul ISINDEX. Cu ajutorul lui se poate introduce un text avīnd
oricīte caractere. Acesta este īnsă un element depăşit, chiar
şi pentru crearea unui prompter simplu.
Exemplu:
Se poate īnlocui declaraţia lui ISINDEX:
<ISINDEX prompt="Enter your search phrase: ">
cu:
<FORM action="..." method="post">
<P>Enter your search phrase: <INPUT type="text"></P>
</FORM>
Elementul parolă (TYPE=PASSWORD)
Sintaxa:
<INPUT
TYPE="password" NAME="nume" VALUE="Valoare"
SIZE=xx MAXLENGTH=yy></input>
Acest tip de
intrări este folosit dacă se acceptă date de la utilizator dar
nu se doreşte ca informaţiile tastate să apară pe ecran (de
pildă īn cazul furnizării unor informaţii confidenţiale;
dar atenţie, această modalitate nu realizează o criptare a
datelor). Parametrii NAME, VALUE şi MAXLENGTH acţionează exact
ca şi īn cazul elementului TEXT.
Exemplu:
Se utilizează elemente tip text
şi parolă care au şi etichete ataşate cu LABEL:
<LABEL
ACCESSKEY=U>
User name: <INPUT TYPE=text
NAME=username SIZE=8 MAXLENGTH=8>
</LABEL>
<LABEL ACCESSKEY=P>
Password: <INPUT TYPE=password
NAME=pw SIZE=12 MAXLENGTH=12>
</LABEL>
Căsuţe de selecţie (TYPE=CHECKBOX)
Sintaxa:
<INPUT TYPE="CHECKBOX"
NAME="nume" VALUE="valoare" CHECKED>
Tipul CHECKBOX
(căsuţe de selecţie) permite crearea unui buton pe care
utilizatorul īl poate seta activ/inactiv (īnchis/deschis). Funcţia
īndeplinită de CHECKBOX permite culegerea de răspunsuri la
īntrebări simple, pentru care nu există decīt două
răspunsuri posibile. Īntr-un formular se pot include oricīte
căsuţe de selecţie. Fiecare va fi independentă de
celelalte. La trimiterea formularului, vor fi remise serverului doar
căsuţele selectate. Căsuţa selectată implicit are
parametrul CHECKED (selectat) īn elementul formularului.
Elementele CHECKBOX
pot conţine de asemenea un parametru VALUE care permite setarea
şirului de caractere care va fi trimis serverului la selectarea
căsuţei. Dacă VALUE nu apare, valoare implicită
asignată este ON.
Utilizatorul poate
selecta nici una, una sau mai multe căsuţe. Pentru fiecare
căsuţă selectată va fi trimis serverului un şir
nume=valoare.
Exemplu:
<FORM>
<INPUT TYPE="CHECKBOX"
NAME="cīini" VALUE="Cocker"> Cocker <P>
<INPUT TYPE="CHECKBOX"
NAME="cīini" VALUE="Setter"> Setter <P>
<INPUT TYPE="CHECKBOX"
NAME="cīini" VALUE="Mioritic"> Mioritic <P>
</FORM>
Sintaxa:
<INPUT TYPE="radio"
NAME="nume" VALUE="valoare" CHECKED>
Elementele tip
butoane radio funcţionează asemănător cu căsuţele
de selecţie, adică pot fi īn poziţiile selectat/deselectat.
Diferenţa constă că īntr-un grup de butoane, numai unul poate fi
selectat la un moment dat. Selectarea altuia conduce automat la deselectarea
celui selectat anterior. Elementul este util pentru a forţa selecţia
unui singur element dintr-o listă multiplă. Ca şi
căsuţele de selecţie, butoanele radio pot avea nume generice, acelaşi pentru toate butoanele unui
anumit grup. Īntr-un grup poate fi activat un singur buton.
Butonul selectat
implicit (care este necesar pentru unele browsere) este marcat cu CHECKED.
Exemplu:
<FORM>
<INPUT
TYPE="RADIO" NAME="abonament" VALUE="3_luni">
3_luni <P>
<INPUT
TYPE="RADIO" NAME="abonament" VALUE="6_luni">
6_luni <P>
<INPUT
TYPE="RADIO" NAME="abonament" VALUE="12:luni">
12 luni <P>
</FORM>
Exemplu:
Īn exemplul următor se selectează o metodă de plată prin intermediul butoanelor radio. De remarcat că toate butoanele au acelaşi nume, atributul NAME), deci fac parte din acelaşi grup. Se mai foloseşte şi o căsuţă (un buton) de marcare.
<P>Please
indicate your method of payment:</P>
<P>
<LABEL
ACCESSKEY=C>
<INPUT TYPE=radio
NAME="payment_method" VALUE="credit card" CHECKED> Credit card
</LABEL><BR>
<LABEL
ACCESSKEY=D>
<INPUT TYPE=radio
NAME="payment_method" VALUE="debit card"> Debit
card
</LABEL><BR>
<LABEL
ACCESSKEY=M>
<INPUT TYPE=radio
NAME="payment_method" VALUE="money order">
Money order</LABEL>
</P><P>
<LABEL
ACCESSKEY=S>
<INPUT TYPE=checkbox
NAME="send_receipt" VALUE="yes" CHECKED> Send
receipt by e-mail
</LABEL></P>
Sintaxa:
<INPUT TYPE="button"
NAME="nume" VALUE="valoare">
Elementele tip buton
specifică un buton care se poate apăsa şi care se foloseşte
cu scripturi (client-side). Valoarea atributului VALUE dă textul ce apare pe
buton. Atributul ONCLICK este folosit īn mod tipic pentru a defini o
acţiune ce se declanşează cīnd butonul este apăsat, ca īn
exemplul următor:
<INPUT TYPE=button VALUE="Hide non-strict
attributes" ID=toggler ONCLICK="toggle()">
Īn acest caz, īn momentul īn care butonul este apăsat (click) se execută funcţia toggle(), definită anterior cu un element SCRIPT.
Īntrucīt astfel de butoane sīnt utile doar cīnd posibilitatea de execuţie a scripturilor pe partea de client (client-side scripting) este activă (permisă), se recomandă evitarea unor butoane care nu fac nimic prin inserarea tagului <INPUT TYPE=button> folosind scripturi, ca īn exemplul următor:
<SCRIPT TYPE="text/javascript">
<!--
document.write("<INPUT TYPE=button VALUE=\"Hide non-strict attributes\""
+ "ID=toggler ONCLICK=\"toggle()\">");
// -->
</script>
Un set mai complet de opţiuni este oferit de elementul BUTTON, dar suportul scăzut acordat de browsere acestuia fac utilizarea lui INPUT īncă extrem de utilă.
Sintaxa:
<INPUT
TYPE="reset" VALUE="Resetează">
Īn HTML se poate
defini un singur buton pentru resetarea tuturor cīmpurilor din interiorul unui
formular. Resetarea aduce toţi parametrii la valorile lor implicite.
Butonul de resetare nu are nume deoarece starea lui nu este niciodată
transmisă serverului, apăsarea lui afectīnd doar navigatorul
utilizatorului. Singurul parametru pentru RESET este VALUE, a cărui
valoare va fi īnscrisă pe buton.
Sintaxa:
<INPUT
TYPE="submit" NAME="nume" VALUE="Trimite">
Elementul INPUT
TYPE="submit" (trimite) este utilizat pentru crearea butonului care
trimite formularul serverului. La apăsarea butonului, formularul şi
conţinutul lui curent sīnt trimise serverului specificat de atributul
ACTION al elementului FORM, utilizīnd procedeul specificat cu METHOD. Cīmpurile necompletate şi butoanele
neselectate nu vor fi transmise.
Parametru VALUE
dă o valoare care va fi īnscrisă pe buton. Dacă apare şi
atributul NAME, browserul va trimite o pereche name/value şi pentru
butonul SUBMIT, aceasta permiţīnd existenţa mai multor butoane SUBMIT
īntr-un formular, fiecare cu propria acţiune.
Sintaxa:
<INPUT TYPE="image" NAME="nume"
VALUE="Trimite"
SRC="URL"
ALT="text" USEMAP="URL">
Elementul INPUT TYPE="image" este utilizat pentru crearea unui buton submit grafic. Atributul SRC trebuie inclus pentru a specifica adresa imaginii folosite, atributul ALT oferind o alternativă (un text) pentru browser-ele care nu afişează imagini. Numai HTML 4.0 defineşte acest atribut, browser-ele bazīndu-se pe valorile atributelor NAME sau VALUE, astfel că recomandarea este ca toate să aibă acelaşi text asociat.
Atributul ALIGN, depăşit acum, specifică modul de aliniere al acestui tip de buton. Valorile top, middle şi bottom specifică poziţia butonului īn raport de conţinutul adiacent īn dreapta şi stīnga, iar valorile left şi right transformă butonul īntr-un element flotant, plasīnd imaginea la marginea din stīnga, respectiv dreapta, restul conţinutului curgīnd pe līngă el. Pentru a trimite restul conţinutului sub buton se foloseşte <BR CLEAR=left|right|all>. Īn locul acestui atribut se recomandă folosirea proprietăţilor CSS vertical-align şi float.
Un astfel de
buton trimite īn plus şi coordonatele punctului īn care s-a apăsat
sub forma perechilor: name.x=x-value
şi name.y=y-value. Dacă se
combină atributul USEMAP cu TYPE=image, se defineşte o
hartă senzitivă prelucrată de client (client-side image map) dar
metoda este foarte puţin suportată.
Sintaxa:
<INPUT TYPE="file"
NAME="nume" VALUE="valoare" ACCEPT="lista">
Elementele tip
selecţie de fişier crează un cīmp prin intermediul căruia
utilizatorii pot trimite fişiere de pe computerul local īn reţea.
Valoarea atributului VALUE specifică numele fişierului iniţial,
dar este ignorată (īn mod normal) de toate browser-ele din motive de
securitate. Atributul ACCEPT oferă o listă cu tipurile de media
(fişiere) suportate, permiţīnd browser-elor un filtru asupra
acestora, dar īn general este ignorat.
Sintaxa:
<INPUT TYPE="file"
NAME="nume" VALUE="valoare" ACCEPT="lista">
Elementele tip
ascuns permit inserarea īn formulare a unor elemente care nu sīnt vizibile (de
fapt nu sīnt afişate de browser dar ele pot fi văzute īn sursa
documentului fără nici o problemă). Ele sīnt extrem de utile
cīnd aplicaţiile utilizează mai multe documente HTML: ceea ce
introduce utilizatorul poate fi transportat de la un formular la altul
fără ca acesta să vadă acest lucru. De asemenea, astfel de
elemente sīnt utile şi pentru anumite scripturi CGI generale, cīnd sīnt
folosite pentru a defini variabile pentru acesta, ca īn exemplul următor
(unde se defineşte un subiect şi o adresă de email pentru un
răspuns trimis prin email):
<INPUT
TYPE=hidden NAME=recipient VALUE="lp@csd.com">
<INPUT TYPE=hidden NAME=subject VALUE="Feedback on your
course">
Atributul DISABLED, puţin suportat, dezactivează un control. Astfel, un control devine read-only, nu poate primi focusul, este sărit cīnd se navighează cu tasta TAB şi, īn plus, valoare sa nu este trimisă serverului.
Atributele ACCESSKEY şi TABINDEX se aplică tuturor, excepţie făcīnd hidden. ACCESSKEY specifică un singur caracter Unicode (inclusiv entităţile) ca shortcut pentru a da focusul unui control. Acelaşi rezultat se obţine şi dacă se setează la elementul LABEL Atributul TABINDEX specifică un număr īntre 0 şi 32767 pentru a indica ordinea elementului īn lista de parcurgere (cu TAB). Un element cu TABINDEX=0 sau fără TABINDEX va fi vizitat după toate elementele cu o valoare pozitivă. Īntre elementele cu valoare pozitivă a lui TABINDEX, primele se vizitează cele cu valori mai mici. Īn caz de egalitate, primele apărute īn document sīnt primele vizitate.
Toate variaţiile lui INPUT pot specifica şi atribute utilizate de scripturi pe diverse evenimente. Pe līngă evenimentele de tip core ce apar pentru majoritatea elementelor, INPUT mai acceptă şi următoarele:
· ONFOCUS, cīnd elementul primeşte focusul;
· ONBLUR, cīnd elementul pierde focusul;
· ONSELECT, cīnd textul dintr-un control de tip text sau password este selectat;
· ONCHANGE, cīnd elementul pierde focusul şi valoarea lui a fost schimbată faţă de momentul īn care l-a primit
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>
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>
3. Crearea controalelor de selecţie īntr-un
formular (SELECT, OPTGROUP, OPTION)
HTML permite crearea mai multor tipuri de liste de
selecţie (meniuri), de orice lungime, prin intermediul elementului SELECT. Fiecare listă
prezintă utilizatorului unul sau mai multe elemente care pot fi selectate
individual sau multiplu. Listele pot fi afişate īn interiorul unei
ferestre sau de forma drop-down. Ferestrele inserate permit accesarea
elementelor conţinute cu ajutorul unor bare de derulare.
Īn interiorul elementului SELECT sīnt permise doar
două elemente: text simplu şi cel puţin un element OPTION. Elementul OPTION este utilizat
pentru definirea fiecărui element al meniului. OPTION are un singur
parametru: SELECTED. Utilizarea lui īnseamnă că elementul respectiv
este selectat implicit.
Atunci cīnd un formular este transmis spre a fi prelucrat (submit), numele (NAME) listei va fi trimis serverului īmpreună cu elementul selectat din listă.
Elementele unui meniu pot fi grupate logic īn grupuri cu ajutorul elementului OPTGROUP. Această posibilitate este utilă cīnd trebuie ales dintr-o listă foarte lungă: opţiunile ce au legătură īntre ele dpdv logic se pot grupa şi utiliza īmpreună mai uşor decīt dacă sīnt toate īntr-o singură listă (la fel ca submeniurile unui meniu). Īn HTML 4.0 grupurile nu pot fi, īnsă, īmbricate.
Opţiuni preselectate
Dintre opţiunile unei liste pot fi preselectate zero sau mai multe. Determinarea elementelor preselectate se face după cum urmează:
· Dacă nici un element OPTION nu are atributul SELECTED setat, atunci nu vor fi elemente preselectate.
· Dacă un element OPTION are atributul SELECTED setat, atunci acesta va fi preselectat.
· Daca elementul SELECT are atributul MULTIPLE şi mai mult de un element OPTION are atributul SELECTED setat, atunci toate acestea vor fi preselectate
· Se consideră eroare dacă mai mult de un element OPTION are atributul SELECTED setat şi elementul SELECT nu are atributul MULTIPLE. Fiecare browser va acţiona diferit, dar nu trebuie să fie preselectat mai mult de o singură opţiune
La afişarea unui menu, se foloseşte valoarea atributului LABEL de la fiecare element OPTION pentru afişarea acelei opţiuni. Dacă nu este specificată se foloseşte conţinutul elementului OPTION. Īn cazul unui grup de opţiuni, atributul LABEL specifică eticheta acelui grup de opţiuni.
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>
Grupurile (logice) de opţiuni sīnt, īn acest caz:
PortMaster 3
3.7.1
3.7
3.5
PortMaster 2
3.7
3.5
IRX
3.7R
3.5R
Browser-ele pot permite utilizatorilor selectarea unei opţiuni dintr-un
grup utilizīnd, de exemplu, meniuri ierarhice sau alt mecanism
asemănător. O posibilă afişare a meniului definit anterior
este prezentată īn figura următoare:
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>
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).
<P>Ce browser Web folosiţi īn mod curent?
<SELECT NAME=browser>
<OPTGROUP
LABEL="Netscape Navigator">
<OPTION LABEL="4.x">Netscape Navigator 4.x or higher</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">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>
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>
Atributul LABEL al elementelor OPTGROUP şi OPTION's LABEL au fost introduse īmpreună, astfel că un browser sau le suportă pe amīndouă sau pe niciunul. Cele care le suportă vor afişa acest exemplu folosind atributul LABEL al lui OPTION pentru a oferi ca element de selecţie doar numărul de versiune, īmpreună cu atributul LABEL al lui OPTGROUP care dă numele complet al aplicaţiei (browserului), obţinīndu-se o afişare mai compactă. Celelalte, care nu suportă atributul OPTGROUP, le vor ignora (īmpreună cu atributele lor, aici LABEL), afişīnd numele complet şi versiunea la fiecare opţiune.
4. Etichetele controalelor dintr-un formular (elementul
LABEL)
Cīteva controale care se utilizează īn
formularele interactive au asociate etichete cu ele (butoanele ce se
apasă), dar multe nu au (cīmpurile text, checkbox-urile, butoanele
radio şi meniu). Pentru controalele care au etichete asociate, browserele
trebuie să le folosească ca şiruri de caractere afişate
pentru ele. Pentru cele care nu, specificarea se face cu elementul LABEL. Acesta ataşează
informaţie pentru un control şi numai unul.
Cīnd un element LABEL primeşte focusul īl pasează controlului asociat.
Elementul LABEL are un atribut, FOR, care
asociază o etichetă cu un alt control, īn mod explicit: valoarea
atributului FOR trebuie să fie exact aceeaşi cu valoarea atributului
ID al controlului asociat. Īn acest fel aceluiaşi control i se pot asocia
mai multe elemente LABEL prin crearea de referinţe multiple (cu ajutorul
lui FOR).
Exemplu:
Acest exemplu crează un tabel care este folosit pentru a alinia două controale text (şi etichetele asociate lor). Fiecare etichetă este asociată explicit cu un control de tip text:
<FORM action=" http://somesite.com/prog/adduser " method="post">
<TABLE>
<TR>
<TD><LABEL for="fname">First Name</LABEL>
<TD><INPUT type="text" name="firstname" id="fname">
<TR>
<TD><LABEL for="lname">Last Name</LABEL>
<TD><INPUT type="text" name="lastname" id="lname">
</TABLE>
</FORM>
Acelaşi lucru se poate face şi prin includerea elementelor explicite LABEL:
<FORM action="http://somesite.com/prog/adduser" method="post">
<LABEL for="firstname">First name: </LABEL>
<INPUT type="text" id="firstname"><BR>
<LABEL for="lastname">Last name: </LABEL>
<INPUT type="text" id="lastname"><BR>
<LABEL for="email">email: </LABEL>
<INPUT type="text" id="email"><BR>
<INPUT type="radio" name="sex" value="Male"> Male<BR>
<INPUT type="radio" name="sex" value="Female"> Female<BR>
<INPUT type="submit" value="Send"> <INPUT type="reset">
</FORM>
Această tehnică nu poate fi īnsă utilizată cīnd tabelul este folosit pentru aşezarea elementelor īn pagină (layout), cīnd eticheta este īntr-o celulă şi controlul asociat īn alta.
Pentru a se asocia implicit o etichetă cu un alt control, controlul trebuie să apară īn interiorul (conţinutul) elementului LABEL. Īn acest caz, LABEL poate conţine doar un singur control. Eticheta īnsăşi poate fi poziţionată sau īnainte sau după controlul asociat.
Exemplu:
Īn acest exemplu asociem implicit două etichete cu două controale de tip text:
<FORM action="..." method="post">
<LABEL>
First Name
<INPUT type="text" name="firstname">
</LABEL>
<LABEL>
<INPUT type="text" name="lastname">
Last Name
</LABEL>
</FORM>
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>
5. Elementele de structură dintr-un formular
(elementele FIELDSET, LEGEND)
Elementul FIELDSET permite gruparea tematică a controalelor şi a etichetelor unui formular. Prin această operaţie se uşurează procesul de īnţelegere a scopului pentru care au fost introduse controalele (făcīnd documentele mai accesibile), oferind īn plus şi facilităţi de navigare (pentru browserele vizuale, de exmplu cu tasta TAB).
Elementul LEGEND permite asignarea unei explicaţii (unui titlu, şir de caractere) unui element FIELDSET, īmbunătăţind accesibilitatea la acesta pentru browserele nevizuale.
Fie, pentru exemplificare, un formular care s-ar putea utiliza la un cabinet medical. Este īmpărţit īn 3 secţiuni: informaţii personale, antecedente medicale (istoria bolilor) şi tratamentul curent. Fiecare secţiune conţine controale pentru a se introduce informaţia corespunzătoare.
<FORM action="..." method="post">
<P>
<FIELDSET>
<LEGEND>
Informaţii Personale</LEGEND>
Numele: <INPUT name="personal_lastname" type="text" tabindex="1">
Prenumele: <INPUT name="personal_firstname" type="text" tabindex="2">
Adresa: <INPUT name="personal_address" type="text" tabindex="3">
</FIELDSET>
<FIELDSET>
<LEGEND>Medical History</LEGEND>
<INPUT name="history_illness"
type="checkbox"
value="Rujeola" tabindex="20"> Rujeola
<INPUT name="history_illness"
type="checkbox"
value="Varicela" tabindex="21"> Varicela
<INPUT name="history_illness"
type="checkbox"
value="Rubeola" tabindex="22"> Rubeola
<INPUT name="history_illness"
type="checkbox"
value="Pojar" tabindex="23"> Pojar
...alte boli mai vechi...
</FIELDSET>
<FIELDSET>
<LEGEND>Medicamente Curente</LEGEND>
Luati medicamente acum?
<INPUT name="medication_now"
type="radio"
value="Yes" tabindex="35">Da
<INPUT name="medication_now"
type="radio"
value="No" tabindex="35">Nu
</FIELDSET>
<FIELDSET>
Daca da, ce luati:
<TEXTAREA name="current_medication"
rows="20" cols="50"
tabindex="40">
</TEXTAREA>
</FIELDSET>
</FORM>
De remarcat că īn acest exemplu se poate īmbunătăţi reperezentarea vizuală a formularului prin alinierea elementelor din fiecare FIELDSET (utilizīnd style-sheet-urile), prin adăugarea de informaţii de culoare şi stil (utilizīnd tot style-sheet-urile), adăugīnd scripturi (activīnd, de exemplu, zona īn care se scriu medicamentele curente doar dacă se selectează butonul radio cu Da), etc.
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.
<FORM METHOD=post ACTION="/cgi-bin/order.cgi">
<FIELDSET>
<LEGEND ACCESSKEY=I>Contact Information</LEGEND>
<TABLE>
<TR>
<TD><LABEL FOR=name ACCESSKEY=N>Name:</LABEL></TD>
<TD><INPUT TYPE=text NAME=name ID=name></TD>
</TR>
<TR>
<TD><LABEL FOR=email ACCESSKEY=E>E-mail Address:</LABEL></TD>
<TD><INPUT TYPE=text NAME=email ID=email></TD>
</TR>
<TR>
<TD><LABEL FOR=addr ACCESSKEY=A>Mailing Address:</LABEL></TD>
<TD><TEXTAREA NAME=address ID=addr ROWS=4 COLS=40></TEXTAREA></TD>
</TR>
</TABLE>
</FIELDSET>
<FIELDSET>
<LEGEND ACCESSKEY=O>Ordering Information</LEGEND>
<P>Please select the product(s) that you wish to order:</P>
<P>
<LABEL ACCESSKEY=3>
<INPUT TYPE=checkbox NAME=products VALUE="HTML 3.2 Reference">
<A HREF="/reference/html32/">HTML 3.2 Reference</A>
</LABEL>
<BR>
<LABEL ACCESSKEY=4>
<INPUT TYPE=checkbox NAME=products VALUE="HTML 4.0 Reference">
<A HREF="/reference/html40/">HTML 4.0 Reference</A>
</LABEL>
<BR>
<LABEL ACCESSKEY=S>
<INPUT TYPE=checkbox NAME=products VALUE="CSS Guide">
<A HREF="/reference/css/">Cascading Style Sheets Guide</A>
</LABEL>
</P>
</FIELDSET>
<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=u>
Number: <INPUT TYPE=text NAME=number>
</LABEL>
<BR>
<LABEL ACCESSKEY=E>
Expiry: <INPUT TYPE=text NAME=expiry>
</LABEL>
</P>
</FIELDSET>
<P>
<INPUT TYPE=submit VALUE="Submit order">
<INPUT TYPE=reset VALUE="Clear order form">
</P>
</FORM>
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>
6. Procesarea datelor din formulare
Valorile completate īn cadrul unui formular pot fi
transmise īnspre server pe mai multe căi, metodele de bază fiind GET
sau POST, dar pot fi utilizate şi posibilităţile oferite de
elementul ISINDEX. Fiecare metodă tratează intrările īntr-un mod
aparte, avīnd īn comun doar variabilele de mediu.
<ISINDEX>
este
un tag vid de un tip mai special. Includerea lui īn header s-a făcut
iniţial (īnainte de existenţa formularelor) pentru ca acesta să
activeze un cīmp text īn bara de butoane sau īn fereastra navigatorului.
Vizitatorul putea tasta īn acel cīmp şirul de caractere dorit şi,
apăsīnd RETURN, trimitea datele serverului. Este o modalitate de a
implementa interacţiunea īnainte de existenţa formularelor.
Metoda se alege īn funcţie de aplicaţie.
GET poate fi folosit īn cazul cīnd informaţia transmisă este
scurtă (de exemplu un cuvīnt cheie şi tipul acestuia). Dacă
formularul lucrează cu mai multe cīmpuri de date, variabilele de mediu pot
fi trunchiate, dar acest defect se poate elimina prin apelul metodei POST.
Metoda folosită de protocolul HTTP pentru a
trimite datele la server este stabilită de atributul METHOD al elementului
FORM, atribut ce poate lua două valori:
· get: Cu metoda "get" a protocolului HTTP, setul de date al formularului este adăugat la adresa URI specificată de atributul ACTION, folosind semnul īntrebării ("?") ca separator. Noua adresă URI este trimisă astfel la agentul (programul) care o procesează.
· post: Cu metoda "post" a protocolului HTTP, setul de date al formularului este inclus īn corpul formularului şi transmis agentului (programului) care-l procesează.
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".
Un control de succes este acel control al unui formular valid pentru a fi trimis (la Submit). Fiecare astfel de control are numele său ascociat, īntr-o pereche, cu valoarea sa curentă. Această pereche face parte din setul de date al formularului. Un control de succes trebuie să fie definit īntr-un element FORM şi trebuie să aibă un nume. Nu toate controalele unui formular sīnt de succes. Astfel:
· Controalele care sīnt dezactivate/inactive (disable) nu pot fi de succes
· Dacă un formular conţine mai mult de un buton Submit, numai acela care este activat (apăsat) este de succes
· Toate căsuţele de marcare (checkbox-urile) setate la on (activate), şi numai ele, sīnt de succes
· Dintre butoanele radio care au aceeaşi valoare a atributului NAME numai cel care activ/setat (pe "on") poate fi de succes.
· Pentru meniuri (liste de selecţie), numele controlului este oferit de un element SELECT iar valorile sīnt date de elementele OPTION. Numai opţiunile selectate sīnt de succes.
· Valoarea curentă a unui element de selectare a unui fişier este o listă de unul sau mai multe nume. La transmiterea unui formular, conţinutul fiecărui fişier este transmis cu restul datelor din formular. Conţinutul fişierului este īmpachetat conform tipului conţinutului formularului (content-type).
· Valoarea curentă a unui obiect este determinată de implementarea specifică a acelui obiect.
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".
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".
Atributul ENCTYPE al elementului FORM specifică
tipul conţinutului folosit pentru a codifica setul de date asociat
formularului īn momentul transmiterii către server. Browserele
utilizatorilor trebuie să suporte tipurile indicate īn cele ce
urmeză. Comprtamentul pentru alte tipuri este nespecificat:
application/x-www-form-urlencoded
Acesta este tipul implicit. Formularele transmise cu acest tip de conţinut trebuie codificate după cum urmează:
1. Numele controalelor şi valorile sīnt escaped. Caracterele blanc (spaţiu) sīnt īnlocuite de `+', iar caracterele rezervate sīnt şi ele escaped: caracterele non-alphanumeric sīnt īnlocuite cu `%HH', (semnul procent şi două cifre hexazecimale reprezentīnd codul ASCII al caracterului). Sfīrşitul de linie (line break) este reprezentat ca o pereche "CR LF" (adică `%0D%0A').
2. Perechile nume/valoare pentru controale apar īn ordinea din document. Numele este separat de valoare prin semnul egal `=' şi fiecare pereche este separată de celelalte prin semnul`&'.
Tipul de conţinut "application/x-www-form-urlencoded" este ineficient pentr a trimite cantităţi mari de date binare sau texte conţinīnd caractere non-ASCII. Tipul de conţinut "multipart/form-data" va fi folosit cīnd se trimit formulare ce conţin fişiere, date non-ASCII şi date binare.
multipart/form-data
Este tipul folosit cīnd conţinutul setului de date este alcătuit din mai multe feluri de (seturi de) date. Se supune regulilor de la toate şirurile de date (stream-urile) de tip multipart MIME. Un stfel de mesaj conţine o serie de părţi, fiecare reprezentīnd un control de succes. Părţile sīnt trimise agentului care le procesează īn ordinea īn care apar īn document. La fel ca la orice tip multipart MIME, fiecare parte are un header opţional "Content-Type" care implicit are valoarea "text/plain" şi care este īnsoţit de un parametru "charset". Fiecare parte trebuie să conţină:
1. Un header tip "Content-Disposition" a cărui valoare să fie "form-data".
2. Un atribut NAME care specifică numele controlului corespondent. Numele controalelor care sīnt codificate īntr-un set de caractere non-ASCII pot fi modificate.
Astfel, de exemplu, pentru controlul cu numele "mycontrol" partea corespunzătoare lui va fi specificată astfel: Content-Disposition: form-data; name="mycontrol"
Ca la toate transmiterile MIME, pentru a separa liniile de date se foloseşte "CR LF" (`%0D%0A').
Dacă se trimite un fişier (conţinutul lui) acesta trebuie să fie identificat obligatoriu de tipul conţinutului (de exemplu"application/octet-stream"). Dacă se trimit mai multe (ca rezultat al unei sigure selecţii din formular), ele trebuie trimise ca "multipart/mixed", īnăuntrul lui "multipart/form-data". Fiecare fişier trebuie trimis cu un nume, specificat cu parameterul "filename" al headerului 'Content-Disposition: form-data'. Dacă acesta nu este codificat ASCII el trebuie fie aproximat fie codificat.
Exemplu:
Acest exemplu ilustrază codificarea "multipart/form-data". Presupunem că avem următorul formular:
<FORM action=http://server.dom/cgi/handle enctype="multipart/form-data"
method="post">
<P>
Numele Dvs? <INPUT type="text" name="submit-name"><BR>
Fisierele pe care le trimiteti? <INPUT type="file" name="files"><BR>
<INPUT type="submit" value="Send"> <INPUT type="reset">
</FORM>
Dacă utilizatorul introduce "Larry" īn controlul de tip text şi selectează "file1.txt", browserul lui va trebui să trimită următoarele date la server:
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--
Dacă utilizatorul selectează al doilea fişier (o imagine), cu numele "file2.gif", browserul va trebui să contruiască părţile componente ale tranzacţiei după cum urmează:
Content-Type: multipart/form-data; boundary=AaB03x
--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 file1.txt ...
--BbC04y
Content-Disposition: attachment; filename="file2.gif"
Content-Type: image/gif
Content-Transfer-Encoding: binary
...contents of file2.gif...
--BbC04y--
--AaB03x
Alte elemente ale limbajului HTML
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>
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:
Format |
Extensie |
Utilizări |
GIF |
.gif |
Formatul afişabil
direct de navigatoare. Este recomandabilă utilizarea lui şi pentru
imagini externe |
JPEG |
.jpg, .jpeg |
Deşi unele
navigatoare pot afişa acest format, majoritatea nu o pot face. Este deci
recomandabilă utilizarea imaginilor cu acest format ca imagini externe |
XBM |
.xbm |
Numele vine de la X Window
System Bitmap. Nu sīnt afişabile direct de către navigator |
PICT |
.PICT |
Format grafic
obişnuit pentru sistemele Macintosh |
Majoritatea programelor bune de grafică pot face
conversii īntre aceste formate. Īn cazul imaginilor externe mari, este
recomandabilă inserarea īn document (alături de celelalte
informaţii despre fişier) a aceleiaşi imagini (sau porţiune
de imagine) mult reduse, pentru a da o idee vizitatorului despre imaginea pe
care eventual o va lua.
Exemplu:
<A
HREF="imagine_mare.jpg"><IMG
SRC="imagine_micşorată.gif">25K fişier
JPEG</A>
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 Audio |
.mp2, .mp3 |
MPEG este mai mult
cunoscut ca standard video decīt 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
Capitolul
2. Descrierea generală a limbajului
HTML
Capitolul
3. Structura documentelor HTML
Capitolul
4. Elemente de bază ale limbajului
HTML
Capitolul
5. Utilizarea tabelelor īn HTML
Capitolul
6. Utilizarea frame-urilor īn HTML
Capitolul
7. Utilizarea formularelor (forms) īn
HTML
Capitolul
8. Alte elemente ale limbajului HTML