Cuprins

Cuprins                                                                                                            3

Bibliografie                                                                                               6

Cuvīnt īnainte                                                                                            7

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

1. Elementul DOCTYPE                                                                                          32

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

6. Elementul SCRIPT                                                                                              46

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

A. Dimensiunea fontului                                                                                  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

 

 


Cuvīnt īnainte

 

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

 



Capitolul 1.

INTERNET şi World Wide Web

1.1. Introducere

Ce este Internetul?

Internetul a fost descris ca „o colecţie largă de reţele“ sau ca o „reţea de reţele“. Deşi ambele definiţii sīnt corecte, nici una nu surprinde Internetul īn totalitatea sa. Pe līngă instrumentul care este această imensă conexiune, Internetul īnseamnă şi mulţimea comunităţilor celor ce īl folosesc, fiecare īn scopuri diferite:

·               comunitatea academică utilizează Internetul ca pe cel mai mare, complet şi totodată complex instrument de īnvăţare (educaţional);

·               comunitatea ştiinţifică utilizează Internetul ca pe un instrument de cercetare şi colaborare;

·               comunitatea economică utilizează Internetul ca pe un mediu de derulare al afacerilor.

Internetul nu este o organizaţie monolitică, avīnd o conducere şi un grup de control unice; Internetul este o societate de reţele de calculatoare interconectate, independente dar care (din anumite motive) se supun unor protocoale globale.


 


Ce este World Wide Web (WWW, W3)

World Wide Web (WWW sau W3) este o reţea de resurse informaţionale de o extraordinar de mare diversitate īn ceea ce priveşte conţinutul. Este un sistem interactiv hipermedia (adică un sistem ce conţine şi suportă patru categorii importante de tipuri de informaţie: texte, imagini, sunete/audio şi imagini video īn mişcare) construit peste Internet.

Pentru a face aceste resurse disponibile (utilizabile) unei audienţe cīt mai largi, Web-ul se sprijină pe 3 mecanisme fundamentale:

1.           O schemă uniformă de denumire (de stabilire a numelor, naming scheme) pentru a localiza resursele īn Web (de exemplu URI).

2.           Protocoale pentru accesarea resurselor astfel denumite īn Web (de exemplu HTTP)

3.           Hypertextul pentru navigarea comodă de la o resursă la alta (īntre resurse).

 

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ă.


1.2. Resursele World Wide Web

Unul din conceptele de bază - preluat şi acceptat şi īn alte protocoale utilizate īn Internet - este cel de resursă. O resursă poate fi un program, un calculator, un document, o bază de date, un serviciu - nu prea are importanţă, atīt timp cīt poate fi referită īn mod corect şi fără echivoc. Pentru referirea la o resursă din Internet, se foloseşte termenul generic URI (Universal Resource Identifier) care poate specifica fie o locaţie, caz īn care se vorbeşte de un URL (Universal Resource Locator) fie un nume, caz īn care se vorbeşte de un URN (Universal Resource Name).

Unei resurse i se aplică o metodă - iar pentru a specifica ce metodă se doreşte, ce date sau parametrii suplimentari o completează pe aceasta, se face uz de mesaje.

Paradigma pe care se bazează protocolul este cea de cerere/răspuns. Cererea este emisă de un client; acesta stabileşte o conexiune cu un server şi īi trimite acestuia o cerere, sub forma unei metode. Metoda se referă la o anumită resursă, identificată via URI; mai trebuie adăugate versiunea de protocol utilizată şi un mesaj de tip MIME care să conţină parametrii metodei, informaţii relative la client şi un eventual “conţinut” suplimentar. Serverul vă răspunde cu o linie de stare, incluzīnd versiunea de protocol utilizată şi un cod de succes sau eroare, la care se adaugă un mesaj de tip MIME conţinīnd informaţii relative la server şi eventual un “conţinut” suplimentar.

Acest posibil conţinut suplimentar este de regulă o entitate - o reprezentare particulară a unor date necesare īn cerere sau īn răspuns, şi este structurat īntr-un antet (header) conţinīnd metainformaţii relative la date (o descriere a felului īn care trebuie citite datele)  şi datele propriu-zise, care formează corpul entităţii.

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 DEL).

·      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.)

1.5. Protocolul HTTP

1.5.1. Introducere generală

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.

 



Capitolul 2.

Descriere generală a limbajului HTML

2.1. Introducere, istorie, versiuni

Ce este HTML?

Limbajul a fost dezvoltat iniţial de oamenii de ştiinţă ca o unealtă utilizată la partajarea documentelor (rapoarte de cercetare, documentaţii, etc) īn īntreaga comunitate ştiinţifică internaţională care utiliza (şi utilizează) Internetul. Pentru a publica informaţii care să fie distribuite global īn Internet este necesar un limbaj universal de descriere a acestora (o „mamă a tuturor limbajelor de publicare“), limbaj care să  fie potenţial īnţeles de toate computerele din Internet. Limbajul folosit de World Wide Web este HTML.

HTML se aseamănă cu modalităţile de formatare a textelor de la un procesor de texte uzual īn sensul că adaugă textului ce se doreşte a fi publicat (afişat) informaţii de formatare şi permite īnglo-barea şi altor tipuri de informaţii (imagini, sunete, etc). Toate acestea indică modul de afişare (prezentare) pentru programele capabile să īnţeleagă aceste informaţii. Ceea ce īl deosebeşte de toate celelalte formate ale procesoarelor de texte este faptul că un document HTML este un document ce conţine informaţie īn format „text-pur“ (numai caractere ASCII), īn timp ce procesoarele de texte folosesc formate particulare (proprietare). Astfel, un document HTML poate fi afişat (prezentat) de un număr mare de programe (browsere Web) care rulează pe un mare număr de platforme.

Documentele HTML pot fi create cu un editor de texte (document salvat ca „text only with line breaks“) sau cu editoare HTML care permit crearea vizuală (WYSIWYG) a documentelor HTML, rezultīnd īnsă tot documente īn format text pur.

Limbajul HTML dă autorilor posibilitatea:

·        să publice documente cu headere, texte, tabele, liste, fotografii, etc...

·        să regăsească on-line informaţii prin intermediul hiperlink-urilor accesate printr-un simplu click de mouse

·        să proiecteze formulare pentru realizarea tranzacţiilor cu servere aflate la distanţă, pentru căutari de informaţie sau pentru activităţi specifice comerţului

·        să includă foi de calcul tabelar, clipuri video, sunete şi alte aplicaţii direct īn documente

Caracteristicile limbajului HTML.

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.

De ce HTML?

HTML este un limbaj bazat pe SGML (Standard Generalized Markup Language), o aşa-numită aplicaţie a acestuia. SGML este un standard internaţional (ISO-8879) aprobat īn 1986.

SGML oferă o modalitate de a reprezenta structura documentelor şi hyper-documentelor. Este totodată şi o cale de a codifica hyper-documentele astfel ca acesta să poată fi interschimbate asemănător procesului de interschimbare a unor documente īn cazul mai multor autori care colaborează utilizīnd platforme diferite aflate la distanţă.

SGML este un sistem complex de descriere a documentelor. Este utilizat pentru descrierea structurii generale a diferitelor tipuri de documente fără să fie un limbaj de descrierea a paginii (cum este PostScript). Principala preocupare a SGML (şi prin urmare şi a HTML care a fost preferat pentru publicaţiile pe Web fiind mai simplu) se răsfrīnge asupra conţinutului documentului, nu asupra aspectului lui.

Deci, īn virtutea trăsăturilor moştenite de la SGML, HTML este un limbaj pentru descrierea documentelor structurate. Teoria din spatele acestui limbaj se bazează pe faptul că majoritatea documentelor au elemente comune (de pildă: titluri, paragrafe sau liste) şi că dacă defineşti un set de elemente, poţi marca elementele documentului cu tag-urile corespunzătoare.

Majoritatea tag-urilor HTML arată de forma: <NumeTag> Textul afectat de tag </NumeTag> şi indică navigatorului elemente de structura documentului, formatare, hypertext sau alte elemente (imagini, fişiere sonore, etc). Documentele HTML conţin doar textul propriu-zis şi tag-urile HTML iar sursa lor poate fi uşor văzută din orice navigator.

Diferenţa majoră dintre procesoarele de texte şi procesoarele HTML este că acesta din urmă nu se preocupă de cum anume vor apărea pe ecran elementele (marcate ale) documentului. Cu foarte puţine excepţii, HTML nu descrie modul de prezentare al documentului ca un īntreg (layout). HTML oferă (deocamdată) un suport redus īn stabilirea plasamentului sau felului īn care vor fi afişate elementele documentului. Proiectanţii HTML au ales intenţionat această variantă. Motivul este simplu. Deoarece nu cunoaştem posibilităţile platformei pe care va fi văzut documentul (dimensiunea ecranului, fonturile instalate, etc), prin separarea structurii documentului de felul īn care este afişat se oferă o mai mare libertate programului care īnţelege HTML şi afişează documentul. Acesta poate să ia hotărīri privind formatarea documentului pe baza posibilităţilor platformei respective. Este ceea ce fac navigatoarele Web, īn afara funcţiilor de comunicare şi aducere a documentelor de pe Net.

Cīnd navigatorul īncarcă un document HTML, el „citeşte“ documentul īn căutarea tag-urilor HTML, formatează textul şi imaginea şi le afişează pe ecran. Este motivul pentru care acelaşi document HTML apare uşor diferit cīnd este privit cu navigatoare diferite. Deşi īn această fază de dezvoltare posibilităţile de formatare oferite sīnt īncă destul de limitate, oferind un control destul de redus asupra formei documentului, avantajul faptului că documentele pot fi transferate şi văzute oriunde pe Net, independent de platformă şi de navigator, a condus la răspīndirea sa foarte rapidă.

Orice versiune a HTML include elemente cum ar fi: text centrat sau aliniat dreapta, tabele, formule matematice, aliniere imagine şi text. Extensiile, care au apărut īn număr mare īn ultima vreme, sīnt seturi de tag-uri HTML introduse de diverse companii (īn general cele producătoare de navigatoare) care permit autorilor de documente HTML să evite o parte din constrīngerile standardului. Cele mai răspīndite sīnt extensiile Netscape şi Internet Explorer.

Dar de ce a fost preferat HTML pentru publicaţii pe Web, cīnd pentru realizarea publicaţiilor electronice există mai multe tehnologii? Primul motiv este simplitatea. Al doilea este că permite formatarea textului ASCII cu tag-uri īn format ASCII. Rezultă de aici o compresie bună, suport pentru legături hypertext şi uşurinţă īn a scrie navigatoare pentru vizualizarea documentelor.

Istoria HTML.

Născut īn urmă cu aproximativ 30 de ani, īntr-o tentativă de a rezolva unele probleme ivite la transportul documentelor īntre diferite computere, limbajul hypertext a evoluat īncet. HTML din prima generaţie este īnţeles de primele navigatoare (modul text). Nivelul 1 este obligatoriu pentru toate navigatoarele şi īnseamnă posibilitatea de a interpreta (hyper)text plus imagini. Nivelul 2 (HTML 2.0) a adus o contribuţie deosebită la realizarea unei interactivităţi reale prin intermediul formularelor (forms). HTML 3.0 (cunoscut anterior ca HTML+) aduce īn plus tabelele, formatarea paragrafelor (alinieri stīnga, centru şi dreapta), curgerea textului pe līngă imagini, tabele, formule matematice, taburi, note şi o mulţime de alte trăsături īn aparenţă de mai mică importanţă dar care fac munca cu HTML mult mai plăcută. Cele mai importante modificări şi īmbunătaţiri sīnt aduse īnsă de HTML 4.0, versiune care īmbunătăţeşte totodată şi conceptele de accesibilitate şi structuralitate a limbajului de marcare. Informaţii despre dezvoltarea HTML se pot prelua de la adresa: http://www.w3.org

Limbajul HTML a fost dezvoltat iniţial de Tim Berners-Lee la Laboratorul European pentru Fizica Particulelor (CERN) şi popularizat de browser-ul Mosaic dezvoltat la NCSA şi a beneficiat de explozia Web-ului din anii 90. Īn această perioadă HTML-ul s-a dezvoltat īn multiple direcţii, dar era dependent de autorii paginilor HTML şi producătorilor de echipamente care, deşi foloseau aceleaşi convenţii pentru limbaj, aveau implementări incompatibile. De aceea s-a impus ca o necesitate absolută standardizarea HTML-ului īntr-un efort global al īntregii comunităţi a Internetului. Şi acum HTML este un limbaj marcat de un deosebit dinamism, standardizarea diverselor versiuni fiind īnsă deosebit de anevoioasă datorită lipsei consensului.

Organismul care „guverna“ protocolul TCP/IP („fundamentul“ Internetului), standardele arhitecturale ale Internetului, precum şi reţeaua Internet a Statelor Unite era īn acea perioadă IAB – Internet Arhitecture Board, cunoscut la īnceputurile sale ca Internet Activities Board. Acesta delega responsabilităţile de dezvoltare, operare şi management a Internetului şi a protocoalelor şi serviciilor legate de acesta unor subcomitete, grupuri de lucru şi organizaţii de lucru pe care le controla. Īn plus avea contracte cu companii comerciale specializate īn comunicaţii pentru gestionarea infrastructurii Internetului.

Subgrupul care se ocupa (şi se ocupă şi acum) cu dezvoltarea şi implementarea protocoalelor este IETF - Internet Engineering Task Force. Acesta este alcătuit dintr-un comitet director (care raportează la IAB) şi o serie de grupuri de lucru, fiecare dintre acestea responsabile cu un anumit protocol sau serviciu aflat īn dezvoltare sau īntreţinere. Grosul activtăţii de dezvoltare şi standardizare a protocoalelor este astfel realizat de aceste grupuri de lucru din cadrul IETF.

Documentele care specifică aceste protocoale şi servicii sīnt numite Request for Comments, mai cunoscute sub numele de RFC. Acestea primesc coduri numerice prin intermediul cărora sīnt referite ulterior. Chiar dacă numele sugerează o „solicitare de comentarii“ asupra unui subiect (ceea ce constituie, de altfel, şi modalitatea principală de dezvoltare a acestor documente – prin intermediul comentariilor, propunerilor şi discuţiilor membrilor comunităţii Internetului), RFC-urile standard (care se numesc... Recommendation) au putere de lege (decret) īn cadrul comunităţii Internet (TCP/IP). Aceste documente (standardele) reprezintă doar o parte din īntreaga colecţie de RFC-uri, dar practic dictează cum trebuie să se comporte un protocol şi ce funcţii trebuie să realizeze. Īn timpul dezvoltării RFC-urile se numesc RFC Working Drafts.

Dacă un protocol (sau produs) nu se conformează unui RFC standard, atunci cel ce īl dezvoltă riscă să piardă contactul (şi contractele) cu organismele ce aparţin de Departamentul Apărării al SUA, precum şi cu toate celelalte organisme şi organizaţii care le adoptă şi le respectă (ceea ce este echivalent cu excluderea din competiţia economică). Īn orice dispută din cadrul Internetului RFC-urile şi IETF sīnt autorităţile supreme.

RFC-urile se pot obţine de pe site-ul ds.internic.net (organizate după numărul ataşat fiecărui RFC) sau de pe alte site-uri care oferă posibilităţi extinse de căutare/prelucrare, cum ar fi, de exemplu, site-ul de la adresa http://www.cis.ohio-state.edu/hypertext/information/rfc.html.

Organismul care se ocupă (şi) cu standardizarea limbajului HTML (din noiembrie 1995) se numeşte „The World Wide Web Consortium (W3C)“ şi include CERN, universitatea MIT (Cambridge, Massachusetts), precum şi alte organizaţii. Īn afara HTML, W3C are „custodia“ şi a protocolului HTTP, precum şi a altor produse şi standarde ce se referă la Web.

Filozofia W3C se bazează pe promovarea interoperabilităţii īn World Wide Web. Aceasta necesită standarde. Aprobarea şi īn special acceptarea unui standard este īnsă un proces extrem de mare consumator de timp, cu atīt mai mult cu cīt ambiţiile sīnt mai mari (ISO a abandonat modelul celor 7 nivele după ce mulţi ani a īncercat să-l impună). Plecīnd de la păţaniile predecesorilor, pionierii Webului au īmpămīntenit obiceiul de a-şi construi singuri standarde şi nu de a le importa. Esenţa filozofiei W3C este implementată īn grupurile de lucru (Working Group), un comitet mic de specialişti care se īntīlnesc sau discută īn teleconferinţe pīnă la atingerea unui consens. W3C are 18 astfel de grupuri, fiecare cu 18-25 membri provenind de la orice companie ce are interese īn subiectul abordat de respectivul grup. Se ajunge astfel ca rivalii să stea alături şi să coopereze, conducīnd īn cele din urmă la o acceptare mult mai rapidă din partea pieţii. Durata de viaţă a unui astfel de standard (unei specificaţii stabilită īn acest mod) dă de fapt măsura autorităţii organizaţiei W3C.0

 

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...

Ce trebuie să facă un autor de pagini HTML?

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.

Revoluţia HTML 4.0.

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).

II.      Documentele compuse

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.

III.   Internaţionalizarea

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.

IV.    Accesibilitatea

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.

V.       Tabele īmbunătăţite

Ī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.

VI.    Model īmbunătăţit de īmpărţire a unui document īn frame-uri

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.

VII. Imprimare īmbunătăţită a paginilor Web

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.

Validarea documentelor HTML.

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 (META). Pentru cazul de mai sus:

          <META http-equiv="Content-Type" content="text/html; charset=EUC-JP">

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.

 

I. Tag-urile HTML

Toate tag-urile au nume scrise īntre paranteze unghiulare <NumeTag> şi (eventual) cīteva atribute care pot lua anumite valori. Formatul general al „instrucţiunilor“ (tag-urilor) HTML este următorul:

<NumeTag   Atribute>  Textul afectat de acest tag   </NumeTag>

 

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.

 

II. Caractere entităţi

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 &acirc; 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ă &#126; 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). &copy;r&icirc;ndunica

     b). &#169;r&#238;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 entităţilor īn diverse codificări (ISO Latin-1, ISO Latin-2, ş.a)

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: &atilde; &Atilde; &acirc; &Acirc; &icirc; &Icirc; (Latinl). Aici &atilde nu este chiar ă ci un a cu tilda şi lipsesc literele ş şi ţ. Reprezentarea lor prin numerele de cod este: &#227; &#195; &#226; &#194; &#238; &#206; &#186; &#170; &#254; &#222; (Latin2)

 


Caractere speciale

Cīteva dintre caracterele speciale mai des utilizate sīnt:

Entitate

Semnificaţie

&lt;

< (mai mic)

&gt;

> (mai mare)

&amp;

& (ampersand)

&quot;

" (ghilimele)

&emsp;

Inserează un spaţiu dublu celui dintre caracterele monospaţiate (lărgime de un EM, sau un punct)

&nbsp;

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

 

Caractere neafişabile

Un agent utilizator poate să nu fie capabil să afişeze (sau să ofere utilizatorului) corect (sau inteligibil) toate caracterele dintr-un document. Aceasta se poate īntīmpla cīnd, spre exemplu, nu este disponibil un anumit font, un caracter are o valoare ce nu poate fi exprimată de codificarea internă a agentului utilizator, etc...

Deoarece sīnt prea multe cauzele ce pot duce la o astfel de situaţie nu se impune ca fiind obligatoriu nimic, DAR fiecare agent utilizator trebuie:

·          să adopte un mecanism clar de alertare a utilizatorului (de exemplu afişarea unui caracter sugestiv; īn astfel de cazuri Netscape Navigator foloseşte semnul īntrebării)

·          să afişeze reprezentarea numerică a acelui caracter īn cazul īn care īn document acesta apare ca entitate numerică


Capitolul 3.

Structura documentelor HTML

 

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.


1. Elementul DOCTYPE

Un document valid HTML trebuie să declare ce versiune utilizează pentru descrierea sa. Declaraţia tipului documentului (document type declaration) defineşte ce DTD se foloseşte īn documentul respectiv.

De exemplu, HTML 4.0 poate specific 3 DTD, astfel că un autor trebuie să includă una dintre următoarele declaraţii ale tipului de document:

·        HTML 4.0 Strict DTD include toate elementele şi atributele ce nu sīnt „obsolete“ (inutile, depăşite) sau nu apar īn documente definite cu FRAMESET. Pentru astfel de documente se foloseşte următoarea declaraţie de tip:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"

        "http://www.w3.org/TR/REC-html40/strict.dtd">

·        HTML 4.0 Transitional DTD include tot ceea ce este īn declaraţia anterioară la care se adaugă elementele şi atributele depăşite (vechi, redefinite, dar nu eronate!). Pentru astfel de documente se foloseşte următoarea declaraţie de tip:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"

        "http://www.w3.org/TR/REC-html40/loose.dtd">

·        HTML 4.0 Frameset DTD include tot ceea ce este īn declaraţia anterioară la care se adaugă documentele multiple (create frame-uri). Pentru astfel de documente se foloseşte următoarea declaraţie de tip:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"

        "http://www.w3.org/TR/REC-html40/frameset.dtd">

 

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


2. Elementul HTML

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.

3. Elementul HEAD

Sintaxa:

<HEAD>...</HEAD>

Atribute posibile:

·      PROFILE = uri (dicţionar de meta informaţii)

·      atribute de internaţionalizare: LANG, DIR

Conţine:

·        TITLE (exact un element)

·        BASE (optional)

·        ISINDEX (optional)

·        SCRIPT (zero sau mai multe elemente)

·        STYLE (zero sau mai multe elemente)

·        META (zero sau mai multe elemente)

·        LINK (zero sau mai multe elemente)

·        OBJECT (zero sau mai multe elemente)

Conţinut īn:

·      Elementul HTML

Descriere:

Acest element conţine informaţii despre document (cum ar fi titlul său, cuvinte cheie utilizabile de motoarele de căutare, descrierea documentului şi style-sheet-uri asociate/utilizate. HEAD este solicitat īn toate documentele, dar tagurile sale de īnceput/sfīrşit sīnt opţionale. Dacă tagul de sfīrşit lipseşte primul element BODY sau FRAMESET determină sfīrşitul lui. Este urmat de BODY īn documentele Strict şi Transitional şi de FRAMESET īn cele Frameset.

Atributul optional PROFILE oferă locaţia īn care se află un profil de metadate. Un profil este un fişier ce defineşte proprietăţile ce pot fi utilizate de elementele META şi LINK din header, neavīnd un format standard stabilit.

Conţinutul acestui element (cu excepţia lui TITLE care este afişat de browsere) nu este prelucrat īn mod uzual.

 

4. Elementul BODY

Sintaxa:

<BODY>...</BODY>

Atribute posibile:

·        BACKGROUND = URI          (imaginea de background a documentului)

·        BGCOLOR = Color                (culoarea de background a documentului)

·        TEXT = Color              (culoarea textului documentului)

·        LINK = Color                          (culoarea link-urilor documentului)

·        VLINK = Color                       (culoarea link-urilor deja vizitate ale documentului)

·        ALINK = Color                       (culoarea link-urilor active ale documentului)

·        ONLOAD = Script                  (documentul a fost īncărcat de browser/agentul utilizator)

·        ONUNLOAD = Script            (documentul a fost parăsit de browser/agentul utilizator)

·        atribute comune                     (vezi nota de mai jos)

Conţine:

·        Īn HTML 4.0 Strict:

·        elemente de tip bloc (nivel bloc), unul sau mai multe

·        SCRIPT, INS, DEL

·        Īn HTML 4.0 Transitional:

·        elemente de tip bloc (nivel bloc)

·        elemente de tip inline

·        INS, DEL

Conţinut īn:

·      In HTML 4.0 Strict or Transitional: HTML

·      In HTML 4.0 Frameset: NOFRAMES

Descriere:

Acest element conţine de fapt corpul (conţinutul) documentului (paginii) HTML. BODY este cerut de documentele īn care nu apar frame-uri, dar tagurile de īnceput/sfīrşit sīnt opţionale. Īn documentele ce conţin frame-uri, BODY trebuie obligatoriu conţinut īn elementul NOFRAMES, dacă este utilizat.

Conţinutul documentului apare īn cadrul elementelor de tip bloc sau īn corpul elementului SCRIPT, iar īn cazul documentelor HTML 4.0 de tip Transitional sīnt permise şi elemente de tip inline direct īn cadrul elementului BODY.

BODY poate avea atribute care specifică background-ul (fundalul) şi culoarea documentului sau a unor elemente din cadrul său. Această metodă este īnsă considerată depăşită, preferīndu-se utilizarea stilurilor de documente (style-sheet). Dacă unul dintre atributele ce se referă la link-uri este setat, atunci se recomandă folosirea tuturor pentru a se asigura ca diferă culorile diverselor tipuri de legături. Aceste culori pot fi īnsă suprapuse de setările din browsere.

Atributul BACKGROUND sugerează o imagine de fundal care va fi folosită pentru document (prin extindere pe verticală şi/sau orizontală). Dacă acest atribut este setat se recomandă utilizarea şi a atributelor BGCOLOR, TEXT, LINK, VLINK şi ALINK pentru a fi siguri că documentul poate fi citit. BGCOLOR se foloseşte pentru fundalul imaginilor neīncărcate.

Style-sheet-urile (stilurile de documente) permit o mai mare flexibilitate īn specificarea imaginii de background, chiar a poziţiei şi modalităţii de extindere pe īntreaga suprafaţă ocupată de document, sau dacă imaginea să se deplaseze (scroll) sau nu cu documentul, etc...

Īn plus faţă de evenimentele ce pot fi generate de orice element, BODY acceptă următoarele atribute de tip eveniment utilizate īn tehnologia client-scripting:

·        ONLOAD, apare atunci cīnd documentul a fost īncărcat;

·        ONUNLOAD, apare atunci cīnd documentul este părăsit.

 

Atributele comune ce pot apare īn acest element sīnt comune mai multor elemente şi sīnt īmpărţite īn:

·          atribute fundamentale (core): ID, CLASS, STYLE, TYTLE

·          atribute de internaţionalizare: LANG, DIR

·          evenimente scriptabile (ce pot fi tratate cu ajutorul scripturilor): ONCLICK, ONDBLCLICK, ONMOUSEDOWN, ONMOUSEUP, ONMOUSEOVER, ONMOUSEMOVE, ONMOUSEOUT, ONKEYPRESS, ONKEYDOWN, ONKEYUP.

 

Elementele de tip bloc şi cele de tip inline sīnt definite mai departe.


Exemple:

1.    O variantă de pagină HTML care conţine ca şi „body“ (conţinut) textul: „The scariest jungle: Follow the map to see lions and tigers and bears. Oh, my!“ arată astfel:

<HTML>

   <HEAD>

      <TITLE>My Jungle Home Page</TITLE>

   </HEAD>

   <BODY>

      The scariest jungle: Follow the map to see lions and tigers and bears.

      Oh, my!

   </BODY>

</HTML>

 

     Iar ceea ce se va vedea cu un browser (aici Internet Explorer) este prezentat īn figura următoare:

 

 

 

O variant㠄depăşit㓠(fără a fi eronată, dar nerecomandată ca stil) de pagină HTML care ilustrează utilizarea atributelor depăşite este prezentată īn continuare. Culoarea de background se stabileşte ca fiind albă, textul negru, iar legăturile iniţial roşii, active ca fiind de culoare fuchsia, iar cele deja vizitate maron.

 

<!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>

5. Elementul FRAMESET

Sintaxa:

<FRAMESET>...</FRAMESET>

Atribute posibile:

·        ROWS = MultiLengths (lungimile rīndurilor)

·        COLS = MultiLengths (lungimile coloanelor)

·        ONLOAD = Script                  (toate frame-urile au fost īncărcate)

·        ONUNLOAD = Script            (toate frame-urile au fost eliminate/părăsite)

·         atribute comune

Conţine:

·      FRAMESET (unul sau mai multe elemente)

·      FRAME (unul sau mai multe elemente)

·      NOFRAMES (un singur element, opţional)

Conţinut īn:

·      HTML


Descriere:

Elementul FRAMESET este un container de frame-uri folosit pentru a diviza fereastra īn subspaţii dreptunghiulare numite frame-uri. Īntr-un document ce conţine frame-uri, elementul FRAMESET exterior ia locul lui BODY şi urmează imediat lui HEAD. Elementul FRAMESET conţine unul sau mai multe elemente FRAMESET sau FRAME, īmpreună cu elementul opţional NOFRAMES pentru a oferi un conţinut alternativ browser-elor care nu suportă frame-urile (sau le au dezactivate). Se recomandă īnsă să existe īntotdeauna şi să ofere informaţie utilă pentru astfel de cazuri (cel puţin, de exemplu, o legătură către frame-ul principal).

Atributele ROWS şi COLS definesc dimensiunile exacte ale fiecărui frame din set. Fiecare atribut are formatul unei liste de lungimi (cu elemente separate de virgulă) care specifică īn pixeli, ca procent sau ca lungime relativă dimensiunea (lungimea sau lăţimea) fiecărui frame. O dimensiune relativă se exprimă ca i*, unde i este un īntreg. Dacă lipseşte īntregul se consideră egal cu 1. De exemplu, un set de frame-uri definit cu ROWS="3*,*" va avea primul rīnd cu o īnălţime de 3 ori mai mare decīt al doilea rīnd.

Valorile specificate pentru ROWS dau īnălţimea fiecărui rīnd, din partea de sus a ecranului īnspre baza acestuia. Atributul COLS defineşte lăţimea fiecărei coloane, īncepīnd de la stīnga la dreapta.. Dacă ROWS sau COLS lipsesc, valoarea implicită a atributului este 100%. Dacă ambele atribute sīnt specificate, ecranul se „īmparte“ dpdv logic īntr-o matrice care se „umple“ mai īntīi de la stīnga la dreapta şi apoi de sus īn jos.

Cīnd se utilzează dimensiuni īn pixeli, acestea trebuie combinate īntotdeauna cu lungimi relative pentru a acoperi diferitele dimensiuni ale ferestrelor (determinate de diferitele rezoluţii la care se utilizează ecranele). Dimensiunile īn pixeli trebuie folosite doar cīnd frame-urile conţin īn principal imagini sau alte obiecte cu o dimensiune fixă (īn pixeli). Preferată este īnsă exprimarea īn procente şi dimensiuni relative, datorită capacităţii acesteia de adaptare la diferitele dimensiuni de ferestre.

Elementul FRAMESET acceptă atributele ONLOAD şi ONUNLOAD pentru a specifica acţiuni de tip client-side (executate īn agentul utilizator) cīnd toate frame-urile au fost īncărcate sau descărcate (eliminate din browser).

Exemple:

     Exemplul următor determină īmpărţirea ecranului īn 2 rīnduri şi 3 coloane.

<FRAMESET ROWS="70%,30%" COLS="33%,33%,34%">

  <FRAME NAME="Photo1"   SRC="Row1_Column1.html">

  <FRAME NAME="Photo2"   SRC="Row1_Column2.html">

  <FRAME NAME="Photo3"   SRC="Row1_Column3.html">

  <FRAME NAME="Caption1" SRC="Row2_Column1.html">

  <FRAME NAME="Caption2" SRC="Row2_Column2.html">

  <FRAME NAME="Caption3" SRC="Row2_Column3.html">

  <NOFRAMES>

    <BODY>

      <H1>Table of Contents</H1>

        <UL>

          <LI>

            <A HREF="Row1_Column1.html">Photo 1</A>

            (<A HREF="Row2_Column1.html">Caption</A>)

          </LI>

          <LI>

            <A HREF="Row1_Column2.html">Photo 2</A>

            (<A HREF="Row2_Column2.html">Caption</A>)

          </LI>

 

          <LI>

            <A HREF="Row1_Column3.html">Photo 3</A>

            (<A HREF="Row2_Column3.html">Caption</A>)

          </LI>

      </UL>

    </BODY>

  </NOFRAMES>

</FRAMESET>

 

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

·        META          – defineşte un set de „metadate“ (date auxiliare utilizate īn diverse alte scopuri)

·        SCRIPT        – defineşte un script client-side (secvenţă de instrucţiuni ce se execută īn client)

·        ISINDEX     – defineşte textul prompterului utilizat la preluarea datelor de la utilizator

·        OBJECT      – permite includerea unor obiecte externe (sunete, imagini, animaţii, etc)

 

1. Elementul TITLE

Sintaxa:

<TITLE>...</TITLE>

Atribute posibile:

·      atribute de internaţionalizare (vezi mai sus)

Conţine:

·      Text (inclusiv caractere entităţi)

Conţinut īn:

·      HEAD

Descriere:

Acest element dă titlul documentului. Fiecare document trebuie să aibă exact 1 titlu (un singur element TITLE īn HEAD). Conţine text şă/sau caractere entităţi, dar nu poate conţine alte elemente de marcare. Un titlu bun trebuie să fie scurt şi specific conţinutului documentului, astfel īncīt să poată fi utilizat ca bookmark (semn de carte) īn browsere, ca titlu pentru fereastra īn care se afişează şi ca legătură pentru motoarele de căutare. Lungimea limită a unui titlu se recomandă a fi 60 caractere.

Exemplu:

Exemplul următor de pagina HTML setează titlul la „valoarea“ (şirul de caractere) „My Jungle Home Page“ şi va arăta ca īn figură (aici īncărcată īn browserul Internet Explorer).

 

<HTML>

   <HEAD>

      <TITLE>My Jungle Home Page</TITLE>

   </HEAD>

</HTML>

 

 

2. Elementul BASE

Sintaxa:

<BASE>

Atribute posibile:

·      HREF = uri (adresa/url de bază)

·      TARGET = destinaţia frame-ului (unde se īncarcă ceea ce indică legătura)

Conţine:

·      Gol (nu conţine nimic)

Conţinut īn:

·      HEAD

Descriere:

Acest element defineşte adresa de bază (uri, url) a documentului, cea care este folosită la rezolvarea (determinarea) adreselor relative din cadrul documentului. Ea trebuie să fie unică. Dacă este prezent, elementul BASE trebuie să apară īn HEAD īnaintea oricărui alt element ce conţine o referire la o adresă (uri, url).

Atributul HREF specifică adresa propriu-zisă (url).

Cele mai multe pagini de Web nu necesită o astfel de adresă (adresa documentului īnsuşi, de unde a fost īncărcat, este adresa de bază, folosită la cele relative). Cazurile īn care este necesară sīnt: cīnd adresa de bază diferă de adresa documentului sau cīnd acesta nu are o adresă de la care să fi fost īncărcat (de exemplu a fost trimis prin email).

Atributul TARGET este folosit cīnd documentul este īmpărţit īn frame-uri, specificīnd frame-ul īn care se afişeaza implicit porţiunile din document dacă nu sīnt specificate explicit.

3. Elementul STYLE

Sintaxa:

<STYLE>...</STYLE>

Atribute posibile:

·      TYPE = ContentType (tipul conţinutului)

·      MEDIA = MediaDesc (tipul de media căruia i se aplică stilul)

·      TITLE = text (titlul stilului - style sheet)

·      atribute de internaţionalizare (pentru TITLE)

Conţine:

·      An embedded style sheet

Conţinut īn:

·      HEAD

Descriere:

Acest element īnglobează (inserează) īn document un stil (style sheet). Īntr-un HEAD pot fi conţinute oricīte elemente STYLE.

Atributul TYPE se foloseşte pentru a specifica tipul de media (īn standardul Internet). Pentru stilurile definite de metoda Cascading Style Sheets atributul TYPE are valoarea text/css.

Atributul opţional TITLE dă un titlu style-sheet-ului. Fără acesta, style-sheet-ul respectiv este aplicat īntotdeauna cīnd sīnt active stilurile pentru documentul respectiv. Cu acest atribut se pot activa sau dezactiva style-sheet-uri individuale. Īnsă nu toate browser-ele implementează această facilitate.

Atributul MEDIA specifică media pe care acest stil se aplică. Aceasta permite autorilor restricţionarea unui stil la anumite dispozitive de ieşire. Valoarea acestui atribut este o listă de nume de medii separate prin virgulă. HTML 4.0 defineşte următoarele nume de medii (literele mari/mici sīnt diferite):

·        screen (implicit), display-urile uzuale (fără paginare);

·        print, ieşirea pe imprimantă;

·        tty, display-uri ce folosesc caractere de dimensiune fixă (ca cele folosite de Lynx);

·        tv, dispozitive tip televizor (rezoluţie mică şi derulabilitate redusă);

·        projection, pentru proiectoare;

·        handheld, dispozitive handheld (de ţinut īn mīnă), caracterizate de un disply mic, monocrom şi cu bandă limitată;

·        braille, dispozitive tactile braille tactile;

·        aural, pentru sintetizatoare de voce;

·        all, pentru toate dispozitivele.

Browser-ele pre-HTML 3.2 care nu cunoşteau elementul STYLE afişau conţinutul său ca şi cum ar fi făcut parte din corpul documentului (din BODY). Pentru a preīntīmpina aceasta se permite ca definiţia de stil să apară īntr-un comentariu (<!-- comment -->).

Un stil definit īn acest mod este util cīnd stilul respectiv se aplică unui singur document. Dacă acesta trebuie aplicat mai multor documente se foloseşte tehnica stilurilor externe.

Exemplu:

Un exemplu de descriere şi includere a unui stil īntr-un document:

<STYLE TYPE="text/css" MEDIA=screen>

<!--

  BODY  { background: url(foo.gif) red; color: black }

  P EM  { background: yellow; color: black }

  .note { margin-left: 5em; margin-right: 5em }

-->

</STYLE>

Se defineşte ca background pentru corpul documentului (BODY) imaginea aflată īn fişierul „foo.gif“, iar culoarea de background ca fiind negru. Īn cadrul unui paragraf (P) backgroundul este galben iar textul are culoarea neagră. Un stil cu numele „note“ īncepe de la 5 unităţi īn stīnga şi se īntinde pīnă cu 5 unităţi faţă de margine din dreapta.

4. Elementul LINK

Sintaxa:

<LINK>

Atribute posibile:

·      REL = LinkTypes (relaţiile CĂTRE link)

·      REV = LinkTypes (relaţiile DE LA link)

·      HREF = URI (referinţa hypertext)

·      TYPE = ContentType (tipul conţinutului legăturii)

·      TARGET = FrameTarget (frame-ul īn care se īncarcă link-ul)

·      MEDIA = MediaDesc (mediul pentru care e linkul)

·      HREFLANG = LanguageCode (limba īn care e descrisă legătura/linkul)

·      CHARSET = Charset (setul de caractere folosit pentru link)

·      atribute comune

Conţine:

·      Nimic

Conţinut īn:

·      HEAD

Descriere:

Acest element defineşte „relaţiile“ documentului cu alte documente īn ceea ce priveşte localizarea (adresele lor). Īntr-un HEAD pot apare oricīte elemente LINK. Nu toate browser-ele suportă īnsă elementul LINK, astfel īncīt un document nu trebuie să depindă de relaţiile definite de acest element, ci trebuie folosit doar pentru a īmbunătăţi performanţele per ansamblu.

Atributele REL şi REV definesc natura relaţiei dintre document şi resursele legate (specificate) de acestea. REL defineşte o relaţie de la documentul curent la resursa legată, īn timp ce REV defineşte o relaţie īn direcţia opusă. De exemplu:

          <LINK REL=Glossary HREF="foo.html">

indică faptul că fişierul "foo.html" este un glosar pentru documentul curent, īn timp ce

          <LINK REV=Subsection HREF="bar.html">

indică faptul că documentul curent este o subsecţiune a lui "bar.html". Valoarea lui REL şi REV este o listă de linkuri separate prin spaţii.

Relaţiile comune īntre documente includ şi următorul sau precedentul īntr-o secvenţă, pagina de start īntr-o colecţie, un document cu informaţii de copyright şi informaţii despre autor. Un document ar putea defini aceste relaţii astfel:

<LINK REL=Prev           HREF="base.html"                TITLE="BASE - Document Base URI">
<LINK REL=Next           HREF="meta.html"               TITLE="META - Metadata">
<LINK REL=Start           HREF="../"                             TITLE="HTML 4.0 Reference">
<LINK REL=Copyright  HREF="/copyright.html"        TITLE="Copyright Notice">
<LINK REV=Made         HREF="mailto:lp@foo.com" TITLE="Feedback">

Elementul LINK se poate folosi şi pentru a aplica un stil extern. REL=StyleSheet specifică un stil persisitent sau preferat, īn timp ce REL="Alternate StyleSheet" defineşte un stil alternativ.

Un stil persisitent este acela care se aplică īntotdeauna cīnd style sheet-urile sīnt active. Absenţa atributului TITLE indică un astfel de stil.

Un stil preferat este acela care se aplică automat. Combinaţia dintre REL=StyleSheet şi TITLE specifică un stil preferat. Un autor nu poate specifica mai mult de un astfel de stil.

Un stil alternativ este indicat de REL="Alternate StyleSheet". Utilizatorul poate alege să schimbe stilul preferat cu unul dintre cele alternative, dacă broeserul permite acest lucru (nu toate o şi fac, īnsă).

Un stil poate fi specificat prin intermediul mai multor style-sheet-uri (fişiere de descriere a stilurilor), ca īn exemplu următor:

<LINK REL=StyleSheet HREF="basics.css" TITLE="Contemporary" TYPE="text/css">
<LINK REL=StyleSheet HREF="tables.css" TITLE="Contemporary" TYPE="text/css">
<LINK REL=StyleSheet HREF="forms.css" TITLE="Contemporary" TYPE="text/css">

Aici se combină 3 style-sheet-uri pentru a forma stilul "Contemporary", aplicat ca şi stil preferat. Pentru a se combina style-sheet-urile trebuie să folosească acelaşi TITLE.

Atributul MEDIA specifică media pentru care sīnt proiectate resursele legate de acest document. Cu REL=StyleSheet autorii restricţionează un stil la un anumit dispozitiv. Are aceleaşi valori ca la elementul STYLE.

Atributele opţionale HREFLANG şi CHARSET ale lui LINK descriu limba (de exemplu en pentru English, en-US pentru American English şi ja pentru Japoneză) şi schema de codificare a legăturii (de exemplu ISO-8859-1, SHIFT_JIS, and UTF-8).

Relaţia legăturii Alternate defineşte o versiune alternativă a documentului. Traduceri ale unei pagini pot fi identificate folosind REL=Alternate īmpreună cu atributul HREFLANG, iar versiuni ale unei pagini potrivite pentru un mediu specific se pot oferi prin combinarea REL=Alternate cu atributul MEDIA ca īn exemplele următoare:

<LINK REL=Alternate HREF="index.fr.html" HREFLANG=fr LANG=fr TITLE="Version franēaise">
<LINK REL=Alternate HREF="index.ja.html" HREFLANG=ja CHARSET="SHIFT_JIS" TITLE="Japan version">
<LINK REL=Alternate HREF="index.pdf" TYPE="application/pdf" MEDIA=print TITLE="PDF version">

De remarcat că atributele LANG şi DIR se aplică textului atributului TITLE şi NU conţinutului legăturii.

Atributul TARGET se foloseşte īn cazul documentelor definite cu frame-uri.

5. Elementul META

Sintaxa:

<META>

Atribute posibile:

·      NAME = nume (numele proprietăţii)

·      HTTP-EQUIV = nume (numele răspunsului din headerul HTTP)

·      CONTENT = CDATA (datele asociate)

·      SCHEME = CDATA (formatul datelor)

·      atribute de internaţionalizare pentru CONTENT (vezi mai sus)

Conţine:

·      Nimic

Conţinut īn:

·      HEAD

Descriere:

Acest element defineşte metadatele documentului: cuvintele cheie asociate cu acestea, descrierea documentului şi autorul său. Pot apare oricīte elemente META īn cadrul elementului HEAD. Nu există o listă standard de metadate/proprietăţi (fiecare autor poate defini orice metadată īi este necesară).

Atributul NAME defineşte un nume de proprietate, īn timp ce CONTENT dă valoarea corespun-zătoare a acelei proprietăţi. CONTENT poate conţine text şi caractere entitate, dar făra taguri.

Atributul opţional SCHEME defineşte formatul proprietăţii respective. De exemplu, proprietatea dată calendaristică poate cere SCHEME="Month-Day-Year" pentru a o deosebi de formatul definit de SCHEME="Day-Month-Year".

Exemplul următor defineşte autorul unui document:

          <META NAME=author CONTENT="Laurenţiu Pădeanu">

Unele motoare de căutare folosesc cuvinte cheie şi proprietăţi de descriere pe care le asociază cu legătura către documentul respectiv (şi care pot oferi chiar informaţii asemănătoare ponderilor). De exemplu:

<META NAME="description" CONTENT="Pagina clubului de fotbal Universitatea Craiova">
<META NAME="keywords" CONTENT="U Craiova, stiinţa, craiova, soccer, football">

Pentru a evita ca aceste motoare să trunchieze descrierea documentului, aceasta trebuie să fie sumară (să nu depăşească 200 de caractere). Cuvintele cheie sīnt separate prin virgulă şi literele mari sīnt diferite de cele mici. Motoarele de căutare procesează de obicei primele 1000 de caractere, iar dacă un cuvīnt se repetă prea des există pericolul ca documentul să nu fie indexat.

Unele motoare de căutare suportă proprietatea robots pentru a indica dacă un document să fie indexat şi care dintre link-urile sale să fie urmate. Valoarea asociată a lui CONTENT este o listă de directive separate prin virgulă:

·        index – specifică posibilitatea ca această pagină sa fie indexată

·        noindex – indică neindexarea aceastei pagini

·        follow  – indică motoarelor de căutare să urmeze linkurile din pagină

·        nofollow  – indică motoarelor de căutare să NU urmeze linkurile din pagină

·        all  – echivalent cu index, follow (implicit)

·        none  – echivalent cu noindex, nofollow

De exemplu, următorul element META le spune motoarelor de căutare să nu indexeze pagina, dar să urmărească link-urile din pagină:

          <META NAME=robots CONTENT="noindex, follow">

De remarcat, īnsă, că NU toate motoarele de căutare suportă această proprietate.

Atributul HTTP-EQUIV poate fi folosit īn locul lui NAME pentru a indica faptul că acea proprietate este (aparţine) header-ului HTTP (a protocolului de preluare a documentelelor). Această proprietate este transformată şi transmisă de unele servere HTTP (nu toate1), dar clienţii (browser-ele) recunosc această caracteristică (faptul că aparţin headerului HTTP) chiar dacă nu este trimisă īn antetul protocolului. Exemple (a se vedea şi descrierea protocolului HTTP):

1.    setarea datei de expirare a  unui document

          <META HTTP-EQUIV=Expires CONTENT="Sun, 22 Mar 1998 16:18:35 GMT">

2.    setarea limbajului scripturilor inline din document ca fiind javascript

          <META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">

3.    setarea limbii īn care sīnt descrise stilurile inline din document

          <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

4.    setarea codificării unui document (la setul de caractere japonez)

          <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS">

Folosirea acestei metode īn locul specificării īn antetul protocolului HTTP poate avea ca efect reafişarea paginii īncă o dată după ce a fost īncărcată de anumite browsere.

5.      setarea timpului şi adresei de īncărcare a unei alte pagini după ce s-a īncărcat documentul curent:             <META HTTP-EQUIV=Refresh CONTENT="10; URL=http://www.alta.com/">

După 10 secunde de la īncărcarea paginii curente, browserul trebuie să īncarce pagina de la adresa www.alta.com. De remarcat că nu toate browserele suportă această proprietate, astfel că e preferată şi oferirea unei alte modalităţi de a īncărca pagina respectivă. Cel mai uzual motiv de folosire a lui Refresh este mutarea unei pagini la o altă adresă şi păstrarea (cel puţin pentru un timp) şi a vechii adrese, pentru utilizatorii ce şi-au marcat cu bookmark pagina mutată.

6. Elementul SCRIPT

Sintaxa:

<SCRIPT>... </SCRIPT>

Atribute posibile:

·      TYPE = ContentType (tipul conţinutului limbajului scriptului)

·      LANGUAGE=CDATA (numele limbajului din script)

·      SRC=URI (locaţia scriptului extern)

·      CHARSET=Charset (setul de caractere folosit de scriptul extern)

·      DEFER (execuţia scriptului poate aştepta)

Conţine:

·      Īnglobează un script

Conţinut īn:

·      HEAD, inline elements, block-level elements

Descriere:

Acest element include un script de tip client-side īn document. Această tehnică permite o mai mare interactivitate īntr-un document prin acţiunile ce pot fi īntreprinse ca răspunsuri la evenimente utilizator. De exemplu, un script poate fi folosit la verificarea elementelor introduse de utilizator īntr-un formular ĪNAINTE ca acestea să fie transmise, oferindu-se īn acest mod posibilitatea de notoficare imediată a utilizatorului īn caz de eroare.

Nu toate browserele suportă tehnica scripturilor client-side, iar unele dintre cele care o suportă permit dezactivarea ei la solicitarea utilizatorului. Īn acest scop se foloseşte elementul NOSCRIPT care oferă posibilitatea īnglobarii īn document a acţiunilor ce trebuie executate īn acest caz. Mai mult, īn cazul unor validări ale unor elemente ce se transmit unor cgi-uri, acestea trebuie să repete aceste verificări pentru a se acoperi şi cazurile de invalidare/nesuportare a scripturilor client-side.

Mai mult, trebuie reţinut că diversele browsere suportă DIVERSE VARIANTE ale limbajelor utilizate pentru scrierea scripturilor, fiecare cu bug-urile sale. Browser-ele cele mai cunoscute ce suportă scripturile client-side sīnt Netscape Navigator versiunea 2.0 şi superioară, Microsoft Internet Explorer versiunea 3.0 şi superioară, şi Opera versiunea 3.0 şi superioară.

Atributul TYPE specifică tipul mediului ce conţine limbajul de scriptare, adică text/javascript. Majoritatea browser-elor suportă īnsă numai atributul depăşit LANGUAGE, cel care specifică numele limbajului folosit. Exemple ale valorilor suportate de LANGUAGE includ JavaScript, JavaScript1.1, and VBScript. Browser-ele vor ignora scripturile cu valori ale acestui atribut pe care nu le suportă. De exemplu, Netscape Navigator 3.0 va executa scripturile cu LANGUAGE = "JavaScript" sau LANGUAGE="JavaScript1.1" dar va ignora scripturile cu LANGUAGE = "JavaScript1.2" sau LANGUAGE="VBScript". Implicit se presupune ca este JavaScript 1.0.

Un script embedded (īnglobat) este dat ca şi conţinut al elementului SCRIPT. Atributul SRC permite autorilor să refolosească codul prin specificarea unui script extern. Atributul opţional CHARSET oferă metoda de codificare (setul de caractere) al scriptului extern (tipic ISO-8859-1). Dacă browser-ul nu poate īncărca scriptul extern va executa scriptul embeded, īn caz contrar ignorīndu-l pe acesta.

Exemplu:

<SCRIPT TYPE="text/javascript" SRC="foo.js" CHARSET="ISO-8859-1">

<!—

         // script embedded, executat NUMAI DACĂ  foo.js este nedisponibil

// -->

</SCRIPT>

Netscape Navigator cere ca scripturile externe să-i fie oferite printr-un tip al conţinutului (cīmpul Content-Type al headerului HTTP) cu o valoare application/x-javascript.

Atributul DEFER indică posibilitatea ca browserul să poată aştepta parcurgerea scriptului pīnă cīnd şi restul documentului a fost prelucrat (afişat, de exemplu). Scripturile ce utilizează acest atribut nu trebuie să genereze nici un conţinut al documentului şi nu trebuie să răspundă la evenimente utilizator ce pot apare īn timp ce documentul se īncarcă (de exemplu transmiterea unui formular). Acesta poate fi util īn cazul īntīrzierii scripturilor ce preīncarcă imagini, chiar dacă browserele nu īl suportă, īn general.

Elementul SCRIPT poate apare de un număr oarecare de ori īn headerul sau corpul unui document (HEAD sau BODY). Īn mod tipic este amplasat īn HEAD, dacă nu generează conţinut pentru corpul documentului.

Browserele dinaintea lui HTML 3.2 nu recunosc elementul SCRIPT şi īi tratează conţinutul ca şi cum ar fi HTML normal. Pentru a evita aceste cazuri, se permite plasarea comentariilor īn jurul conţinutului scriptului embedded. De exemplu:

<SCRIPT TYPE="text/javascript">

<!-- comment to end of line

                 document.write("foo");

// comment to end of line -->

</SCRIPT>

Atenţie la faptul că "-->" este conţinut īntr-un comentariu pe o singură linie a limbajului JavaScript (īnceput cu două caractere slash „/“). Din punct de vedere practic, prima apariţie a lui "</" urmat de orice literă este considerat tag de sfīrşit pentru elementul SCRIPT. Autorii trebuie să evite utilizarea şirurilor de tipul "</P>" īn scripturile embedded. JavaScript permite folosirea caracterului \ (backslash) pentru a evita terminarea prematură a elementului SCRIPT, ca īn exemplul acesta: document.write("<\/P>").

 


7. Elementul ISINDEX

Sintaxa:

<ISINDEX>

Atribute posibile:

·      PROMPT = text (mesajul promptului)

·      atribute fundamentale (core atributes, vezi mai sus)

·      atribute de internaţionalizare (vezi mai sus)

Conţine:

·      Nimic

Conţinut īn:

·      APPLET, BLOCKQUOTE, BODY, CENTER, DD, DEL, DIV, FIELDSET, FORM, HEAD, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH

Descriere:

Acest element defineşte o linie singulară de introducere a datelor. Eticheta cīmpului de intrare este specificată folosind atributul PROMPT. ISINDEX este depăşit īn HTML 4.0 de către elementul INPUT. Este echivalent cu FORM cu un singur element de intrare de tip text, o metodă get şi o acţiune indicīnd la adresa (uri) documentului ce conţine elementul ISINDEX.

8. Elementul OBJECT

Sintaxa:

<OBJECT>...</OBJECT>

Atribute posibile:

·        DATA=URI (datele obiectului)

·        CLASSID=URI (adresa de implementare)

·        ARCHIVE=CDATA (fişierele arhivă)

·        CODEBASE=URI (adresa de bază/URI pentru CLASSID, DATA, ARCHIVE)

·        WIDTH=Length (lăţimea obiectului)

·        HEIGHT=Height (inălţimea obiectului)

·        NAME=CDATA (numele pentru transmiterea formularelor)

·        USEMAP=URI (imaginea senzitivă/image map de tip client-side)

·        TYPE=ContentType (tipul conţinutului obiectului)

·        CODETYPE=ContentType (tipul conţinutului codului)

·        STANDBY=Text (mesajul ce se va afişa īn timp ce se īncarcă)

·        TABINDEX=NUMBER (poziţia īn ordinea de parcurgere)

·        DECLARE (nu se instanţiază obiectul)

·        ALIGN=[ top | middle | bottom | left | right ] (modul de aliniere a obiectului)

·        BORDER=Length (lăţimea/grosimea marginii linkului)

·        HSPACE=Pixels (spaţiu lăsat orizontal)

·        VSPACE=Pixels (spaţiu lăsat vertical)

·        atribute comune

Conţine:

·      Elemente PARAM urmate de elemente de tip bloc şi/sau inline

Conţinut īn:

·      HEAD, elemente de tip inline, elemente de tip bloc cu excepţia lui PRE

Descriere:

Acest element este folosit pentru a include „obiecte“ ca imagini, secvenţe video, applet-uri Java sau elemente VRML īn documentele HTML. Este utilizat pentru a īnlocui elementele mai specifice IMG şi APPLET definite īn versiunile anterioare, precum şi extensiile proprietare (ale diferiţilor producători de browsere), cum ar fi EMBED şi BGSOUND. Utilizarea acestui element asigură atīt o portabilitate superioară, cīt şi o compatibilitate īntre browsere şi versiuni.

Atributul DATA specifică adresa obiectului īnglobat īn document. Adresele relative sīnt interpretate īn concordanţă cu atributul CODEBASE.

Atributele WIDTH şi HEIGHT definesc dimensiunile obiectului. Valorile pot fi īn pixeli sau īn procente relative la dimensiunea părintelui. Majoritatea browsere-lor cer obligatoriu aceste atribute.

CLASSID poate fi folositor pentru a specifica implementarea obiectului. Applet-urile Java, Python şi controalele ActiveX oferă implementări pentru obiectul īnglobat, fiind astfel specificate cu atributul CLASSID, ca īn exemplul următor:

<OBJECT    CLASSID="yahtzee.py" CODETYPE="application/x-python"

                      STANDBY="Ready to play Yahtzee?" TITLE="My Yahtzee Game">
<OBJECT CLASSID="java:Yahtzee.class" CODETYPE="application/java"

                      WIDTH=400 HEIGHT=250 STANDBY="Ready to play Yahtzee?" TITLE="My Yahtzee Game">
<OBJECT DATA="yahtzee.gif" TYPE="image/gif"

                      TITLE="A Yahtzee animation" WIDTH=200 HEIGHT=100>
Yahtzee is my <EM>favorite</EM> game!
</OBJECT>
</OBJECT>
</OBJECT>

Acest exemplu demonstrează şi metoda de utilizare a conţinutului alternativ pentru browserele care nu pot afişa obiectele īnglobate. Īn acest exemplu, se foloseşte īntīi „varianta“ scrisă īn Python a jocului Yahtzee, dacă browserul īl suportă. Pentru browserele care nu suportă appleturile Python se oferă o alternativă cu versiunea Java. Mai mult, dacă nici acest tip de applet nu e recunoscut (şi executat) se oferă o imagine (un gif). La limită este oferit şi un text, ca alternativă extremă. De remarcat că acest exemplu este compatibil şi cu versiunile anterioare care ignoră tagul OBJECT, afişind conţinutul elementului din interior (aici un text!).

Tot īn acest exemplu este prezentată şi modalitatea de utilizare a atributelor TYPE şi CODETYPE pentru a permite browserelor evitarea solicitării explicite şi suplimentare a unui fişier pe care nu īl pot prelucra (afişa). Atributul TYPE specifică tipul suportului referit de resursa referită de DATA, iar CODETYPE specifică tipul suportului cerut de datele specificate de CLASSID. Exemplul utilizează şi atributul STANDBY care afişează un text (scurt) īn timpul īncărcării obiectului respectiv.

Atributul ARCHIVE poate specifica o listă (cu elemente separate prin blancuri, elemente ce sīnt adrese absolute sau relative la CODEBASE), permiţīnd browserului să īncarce mai multe fişiere cu o singură conexiune, ceea ce conduce la scăderea timpului total de īncărcare a unui document compus. Formatul standard de arhivă pentru Java este JAR. Aceste arhive se pot crea cu utilitarul jar oferit de kitul de dezvoltare jdk.

Atributul DECLARE face ca obiectul să fie doar o declaraţie ce NU este instanţiată imediat. Aceasta permite instanţierea obiectelor prin intermediul unei legături, unui buton sau unui obiect mai tīrziu īn acelaşi document. Atributul ID trebuie să fie utilizat cu obiectele estfel declarate pentru ca mai tīrziu acestea să se poată instanţia prin intermediul identificatorului atribuit aici.

Exemplu:

<OBJECT DECLARE ID=yahtzee CLASSID="java:Yahtzee.class" CODETYPE="application/java"

                      WIDTH=400 HEIGHT=250 TITLE="My Yahtzee Game">
<IMG SRC="yahtzee.gif" ALT="You get the dice!" TITLE="Yahtzee animation">
</OBJECT>
...
<P>Ready to <A HREF="#yahtzee">play Yahtzee</A>?</P>

Elementul OBJECT poate conţine şi elemente PARAM, īnaintea oricărui alt conţinut, pentru a oferi datele de iniţializare la execuţie. Exemplul următor include o secvenţă video şi un clip audio ca alternativă. Se folosesc parametri recunoscuţi īn mod normal de orice plug-in pentru audio/video, plasaţi īnainte de specificarea conţinutului alternativ:

<OBJECT DATA="mlk.mov" TYPE="video/quicktime"

                      TITLE="Martin Luther King's &quot;I Have a Dream&quot; 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 &quot;I Have a Dream&quot; speech">
<PARAM NAME=autostart VALUE=true>
<PARAM NAME=hidden VALUE=true>
<A HREF="mlk.html">Full text of Martin Luther King's "I Have a Dream" speech</A>
</OBJECT>
</OBJECT>

Atributul USEMAP poate fi folosit cu OBJECT pentru a include o imagine „clicabil㓠– o imagine care este echivalentă cu o serie de legături activate cu un click de mouse (spre adrese diferite īn funcţie de zona de imagine pe care se face clic). Acestea se mai pot realiza şi cu elementul IMG (fiind mai bine suportate de browsere), dar cele definite cu OBJECT permit o alternativă textuală completă pentru browserele ce nu īncarcă imaginile. Atributul USEMAP indică spre un element MAP al cărui conţinut defineşte legăturile īn funcţie de coordonatele zonei īn care se face clic. Elementul MAP poate fi inclus īn OBJECT, caz īn care conţinutul său nu este afişat (ci interpretat aşa cum e descris anterior), sau īn afara lui OBJECT şi atunci conţinutul său este afişat.

Exemplul următor prezintă un document cu două imagini (cea de a doua ca alternativă la prima, dacă aceasta nu este suportată). Ambele partajează o definiţie de „hart㓠(zonele de pe imagine) care este inclusă īn elementul OBJECT. Elementul MAP conţine un meniu de legături care sīnt afişate de browserele care nu īncarcă imaginile:

<OBJECT DATA="sitemap.png" USEMAP="#map" TYPE="image/png"

                      TITLE="Site map" WIDTH=300 HEIGHT=200>

<OBJECT DATA="sitemap.gif" USEMAP="#map" TYPE="image/gif"

                   TITLE="Site map" WIDTH=300 HEIGHT=200>

         <MAP NAME=map>

                <UL>

<LI><A HREF="/reference/" COORDS="5,5,95,195">HTML and CSS Reference</A></LI>
<LI><A HREF="/design/" COORDS="105,5,195,195">Design Guide</A></LI>
<LI><A HREF="/tools/index.html" COORDS="205,5,295,195">Tools</A></LI>

             </UL>

         </MAP>
</OBJECT>
</OBJECT>

 

Atributul TABINDEX specifică (prin intermediul unui număr īntreg īntre 0 şi 32767) ordinea de parcurgere a elementului dacă se foloseşte tasta TAB. Un element cu TABINDEX’0 sau fără TABINDEX va fi vizitat după toate elementele care au un TABINDEX pozitiv. Dintre elementele care au un TABINDEX pozitiv, cele care au o valoare mai mică vor primi focusul (vor fi vizitate) mai īntīi. Dacă au aceeaşi valoare se vizitează īntīi cele care apar īntīi īn document.

Atributul ALIGN, depăşit īn HTML 4.0, specifică modul de aliniere a unui obiect. Valorile top, middle şi  bottom specifică poziţia obiectului faţă de conţinutul documentului ce-l īnconjoară la stīnga şi dreapta. ALIGN=middle aliniază centrul obiectului cu linia de bază a textului (baseline). Pentru a centra un obiect orizontal īn pagină se plasează īntr-un bloc centrat, ca īn exemplul următor:

<P ALIGN=center><OBJECT DATA="foo.mov" TYPE="video/quicktime"></OBJECT></P>

Celelalte valori (left şi right) specifică un obiect flotant (ca poziţie): el este plasat la marginea din stīnga sau din dreapta şi restul conţinutului curge pe līngă el. Pentru a se plasa restul conţinutului sub obiect se foloseşte <BR CLEAR=left|right|all> (cel care se impune īn situaţia respectivă). Metodele moderne de aliniere sīnt oferite de proprietăţile vertical-align and float ale stilurilor cascadate (Cascading Style Sheets).

Atributul BORDER (este şi el depăşit īn HTML 4.0) specifică grosimea marginii obiectului. Valoarea 0 are ca efect marginea din jurul unei legături (link) şi trebuie folosită cu precauţie. Exemplu:

<A HREF="reference/">

         <OBJECT DATA="icon/reference.gif" WIDTH=90 HEIGHT=90 BORDER=0></OBJECT>

         Web Authoring Reference

</A>

Atributele HSPACE şi VSPACE (şi ele depăşite īn HTML 4.0) permit sugerarea unor spaţii goale verticale şi orizontale īn jurul obiectelor a căror dimensiune este dată īn pixeli, egală pentru ambele margini. Metoda modernă este prin intermediul style-sheet-urilor.

Obiectul OBJECT este cel mai utilizat ca un element BODY şi poate fi conţinut atīt īn elemente inline cīt şi īn elemente de nivel bloc. Conţinutul lui OBJECT trebuie să fie alcătuit din elementele care pot fi conţinute īn părintele lui OBJECT. De exemplu un element A conţinīnd un OBJECT nu poate avea nici un element de nivel bloc ca şi conţinut al elementului OBJECT.

 

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.

I. Elementele de tip bloc (block level 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

·      COL              - definirea unei coloane a unui tabel (atributele comune)

·      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

II. Elementele de tip inline (inline level elements)

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

 

III. Elementele de tip nedefinit (pot fi atīt inline cīt şi block)

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

·   DEL                   - Text şters

·   INS                    - Text inserat

·   OBJECT            - Includerea unui obiect

·   SCRIPT             - Includerea unui script client-side

·   IFRAME            - Definirea unei frame inline (īn punctul īn care apare elementul)

 


Capitolul 4.

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).

 

1. Terminarea rīndului (elementul BR)

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?

2. Titluri (elementul Hi)

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>

 

3. Containere de text (stiluri ale unui bloc)

A. Paragrafe (elementul P)

Sintaxa:

<P> Paragraful conţinut </P>

Atribute posibile:

·      ALIGN=[ left | center | right | justify ] (aliniere orizontală)

·      atribute comune

Conţine:

·      elemente inline

Conţinut īn:

·          ADDRESS, APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD

Descriere:

Prima versiune HTML specifică tag-ul <P> ca tag vid (fără un corespondent </P>. Cele mai multe navigatoare presupun că paragrafele sīnt formatate de această manieră. Cīnd īntīlnesc un tag <P>, īncep un nou rīnd, lăsīnd cīteva spaţii verticale (rīnduri) libere īntre paragraful care tocmai s-a terminat şi cel care tocmai īncepe. Īn HTML 2.0 şi HTML 3.0, tag-ul paragraf este nevid <P>...</P>, tag-ul </P> fiind īnsă opţional, dar se recomandă folosirea lui cīnd se folosesc style-sheet-uri.

Chiar dacă HTMLnu specifică un mod special de prezentare pentru acest tag, autorii o pot face, sugerīnd, de exemplu, identarea paragrafului sau spaţierea prin intermediul style-sheet-urilor. De exemplu:

     P { margin-top: 0; text-indent: 5% }

B. Containerul logic de tip bloc (elementul DIV)

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ă)

C. Containerul logic de tip text/inline (elementul SPAN)

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>

D. Textul centrat (elementul CENTER)

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>Canada</TD>

      </TR>

</TABLE>

</CENTER>

E. Textul preformatat (elementul PRE)

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ă.

F. Adrese (elementul ADDRESS)

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 &lt;<A HREF="mailto:lp@lp.ro"> lp@lp.com</A>&gt;

      </ADDRESS>

     īn browser va apare:

             Most recent update: 28/01/99

             For more information contact <lp@lp.com>

 

G. Citate lungi (elementul BLOCKQUOTE)

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."

H. Citate scurte (elementul Q)

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 Gloucester Road."


4. Stilurile caracterelor

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:

 

5. Elemente de modificare a fontului caracterelor

A. Dimensiunea fontului

Sintaxa:

              <FONT> Text cu font schimbat</FONT>

Atribute posibile:

·      SIZE = Dimensiune (dimensiunea fontului)

·      COLOR = Culoarea (culoarea fontului)

·      FACE = Felul fontului (felul fontului/font face)

·      atribute core

·      atribute de internaţionalizare

Conţine:

·      elemente inline

Conţinut īn:

·      inline elements, block-level elements, cu excepţia lui PRE

Descriere:

Tag-urile <FONT> ... < / FONT>, īmpreună cu atributul SIZE permit modificarea dimensiunii fontului de bază, a cărui valoare implicită este 3 (specificată printr-o altă extensie, şi anume <BASEFONT>, font de bază care are de asemenea atributul SIZE). Valorile atributului SIZE sīnt īntre 1 şi 7. Dimensiunea fontului poate fi specificată şi relativ la fontul de bază, situaţie īn care valorile lui SIZE sīnt īntre -3 şi +4.

Acest tag, total depăşit īn HTML 4.0, este folosit pentru modificări rudimentare ale caracteristicilor fontului cu care e afişat textul. Folosirea acestuia introduce numeroase probleme legate de accesibilitatea pe diverse platforme (care pot să nu aibă instalat un anumit font, de exemplu), probleme ce se pot evita prin utilizarea stilurilor (style-sheet).

Exemplu: Dimensiunile fonturilor (văzute īn browsere) sīnt:

FONT SIZE=1

FONT SIZE=2

FONT SIZE=3

FONT SIZE=4

FONT SIZE=5

FONT SIZE=6

FONT SIZE=7

Exemplu: Dimensiunile fonturilor (văzute īn browsere) specificate relativ arată astfel:


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>


B. Stabilirea fontului de bază

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.

 

1. Definirea listelor ordonate (cu elemente numerotate)

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>

 

2. Definirea listelor neordonate (nenumerotate)

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>

 

 

3. Definirea elementelor unei liste (tagul LI)

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, ...)

 

4. Definirea listelor de definiţii (glosar)

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>St.</ABBR> Ploieştului numărul 1

</DD>

</DL>

 

5. Definirea termenilor unei liste de definiţii (tagul DT)

Sintaxa:

          <DT> Element al listei... </DT>

Atribute posibile:

·      atribute comune

Conţine:

·      elemente inline

Conţinut īn:

·        DL

Descriere:

DT defineşte un termen īntr-o listă de definiţii. Tagul de sfīrşit este opţional dar se recomandă a fi folosit pentru a preveni anumite erori cīnd se folosesc stilurile (style-sheets). DT nu poate conţine elemente de tip bloc (ca de exemplu P sau Hn). Īn general tagul este urmat de un element DD pentru denirea termenului respectiv. Un termen poate avea mai multe definiţii asociate cu el, după cum şi o singură definiţie poate avea mai mulţi termeni.

 


6. Definirea definiţiei unui termen al unei liste de definiţii (tagul DD)

Sintaxa:

          <DD> Element al listei... </DD>

Atribute posibile:

·      atribute comune

Conţine:

·      elemente inline şi elemente de tip bloc (bloc level)

Conţinut īn:

·        DL

Descriere:

Elementul DD oferă definiţia unui termen dintr-o listă de definiţii. Tagul de sfirşit este opţional dar se recomandă a fi folosit pentru a preveni anumite erori cīnd se folosesc stilurile (style-sheets). DT poate conţine elemente de tip bloc (ca de exemplu P, Hn, TABLE sau chiar DL). Astfel listele de definiţii pot fi īmbricate.

 

7. Definirea listelor de tip meniu şi director

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!

 


8. Imbricarea listelor

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>

 

9. Formatarea listelor

Pentru liste, navigatorul este acela care hotărăşte forma bulinelor sau schema de numerotare. Netscape a introdus cīteva atribute prin care se oferă un mai mare control asupra tipurilor de buline utilizate pentru marcarea elementelor din listele neordonate.

Atributul TYPE determină forma  „bulinei“:

TYPE=DISC,         pentru o bulină circulară, compactă (implicită)

TYPE=CIRCLE,    pentru un contur circular

TYPE=SQUARE,   pentru un contur de forma unui pătrat

Exemplu:

<UL>

<LI TYPE=DISC >Disc

<LI TYPE=CIRCLE>Cerc

     <LI TYPE=SQUARE>Patrat

</UL>

Pentru listele ordonate, atributul TYPE are un alt set de valori care indică schema de numărare:

TYPE=1,  implicit, ordonează elementele listei prin numere arabe (1, 2, 3,...)

TYPE=A, ordonează elementele listei prin litere mari (A, B, C, ...)

TYPE=a,  ordonează elementele listei prin litere mici (a, b, c, ...)

TYPE=I,   ordonează elementele listei prin numere romane mari (I, II, III, ...)

TYPE=i, ordonează elementele listei prin numere romane mici (i, ii, iii, ...)

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 MIDI)</A>

·         <A HREF="section2.html" TARGET="content" TITLE="Elements of the HEAD" REL=next>Section 2</A>

·         <A HREF="mailto:lp@lp.com" TITLE="Feedback on Document">lp@lp.com</A>

·         <A HREF="http://www.lp.com/" TARGET="_top">Web Design</A>

·         <A HREF="http://babel.alis.com:8080/langues/iso639.zh.htm" CHARSET="big5" HREFLANG=zh>ISO 639</A>

 

Legăturile se pot face la documente locale (care rezidă pe acelaşi server (dar nu neapărat īn acelaşi director), la documente aflate pe alte servere (legături īndepărtate) sau intern (īn interiorul unui  document; acelaşi īn cazul īn care documentul este mare şi se doreşte un salt pīnă la o secţiune a sa, sau o secţiune a unui alt document, atunci cīnd se doreşte o indicare mai rafinată a părţii din resursa-document ce se referă).

 


1. Legături locale

Legăturile locale se fac utilizīnd căi (referinţe) relative sau absolute.

A. Referinţe absolute

Cea mai simplă legătură se realizează precizīnd calea relativă a documentului. Selectarea unei legături fără specificarea nici unui alt element suplimentar de localizare, determină serverul să caute documentul solicitat īn acelaşi folder ca şi documentul īn care a īnceput legătura.

Căile relative pot include directoare sau pot indica o cale pe care trebuie să o urmăm pentru a naviga la documentul ţintă, pornind de la documentul pointer (de start). O cale poate include şi direcţii, cum ar fi, de exemplu, coboară două directoare spre rădăcină şi apoi mergi īn sus două directoare pentru a găsi documentul.

Specificarea căilor relative īn legături se face ca īn Unix, indiferent de sistemul pe care este găzduită pagina/paginile HTML. Asta īnseamnă că numele de directoare sau foldere sīnt separate de slash-uri (/) şi referirea la directorul părinte se face cu două puncte (..).

Iată un tabel cu referirea relativă a documentelor:

Cale

Semnificaţie

HREF="doc.html"

doc.html se găseşte īn directorul curent

HREF="dir/doc.html"

doc.html este localizat īn folderul (directorul) dir

HREF="dir/subdir/doc.html"

doc.html se află īn directorul dir, subdirectorul  subdir

HREF="../doc.html"

doc.html se găseşte īntr-un director aflat cu un nivel mai sus decīt directorul curent

HREF="../../subdir/doc. 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.

 

B. Referinţe absolute

Referinţele relative localizează un document ţintă specificīnd poziţia acestuia (calea relativă) īn raport cu documentul pointer (de la care porneşte legătura). Referinţele absolute localizează documentele specificīnd directorul de cel mai īnalt nivel şi toată calea pīnă la document. Referinţele absolute īncep īntotdeauna cu un slash (/) urmat de succesiunea directoarelor pīnă la documentul la care faceţi referinţă.

Iată un tabel cu referirea absolută a documentelor:

Cale

Semnificaţie

HREF="/home/pub/doc.html"

doc.html se găseşte īn directorul /home/pub

HREF="/c|/pub/doc.html"

doc.html este localizat pe discul c: īn directorul /pub

HREF="/Server/Site/doc.html"

doc.html se află pe discul Server, īn folderul Site (Macintosh)

Ori de cīte ori este posibil trebuie folosite referinţele relative deoarece cele absolute nu sīnt portabile. Specificarea relativă a localizării documentelor permite menţinerea uşoară şi mutarea documentelor HTML de pe un sistem pe altul (sau dintr-un loc īn altul chiar pe acelaşi sistem) fără modificări majore īn surse.

2. Legături īndepărtate

Marcarea documentelor HTML pentru legături īndepărtate se face asemănător cu marcarea īn cazul referinţelor la documente locale. Tag-ul de īnceput este <A> şi cel de sfīrşit </A>. Textul dintre tag-uri va fi afişat diferit faţă de restul documentului pentru a arăta că este selectabil. Referinţa hypertext (HREF) va conţine īnsă URL-ul documentului, de forma:

          <A HREF="http://www.w3.org/">The World Wide Web Consortium</A>

3. Legături interne (către secţiunile unui document/resursă)

Ideea este de a realiza o legătură nu numai īntre un anumit punct al unui document şi un alt document ci una ceva mai exactă, īntre un anumit punct al unui document şi un alt anumit punct al aceluiaşi document sau al altuia. Acest lucru se realizează prin crearea unei ancore īn locul din document unde dorim să ne conducă legătura şi apoi īn realizarea unei legături care va indica atīt documentul referit cīt şi paragraful (sau secţiunea de document) la care facem referire.

Crearea unei ancore se face īn aproape acelaşi fel ca şi crearea unei legături, utilizīnd tag-ul <A> numai că de această dată īi este asociat un alt atribut: NAME. Atributul va avea ca valoare un anumit cuvīnt (sau grup de cuvinte) care vor fi folosite pentru a face referinţă la această anumită secţiune.

Exemplu:        <A NAME="cuvīnt_cheie">Paragraf ţintă</A>

Atunci cīnd se va face referinţă la această ancoră, documentul ţintă va fi derulat de către navigator pīnă cīnd textul dintre <A> şi </A> va ajunge īn partea de sus a ecranului. Spre deosebire de legături, ancorele nu sīnt afişate diferit faţă de restul documentului īn documentul ţintă.

Referirea la o ancoră īn documentul pointer (documentul de la care porneşte legătura) se face īn acelaşi fel ca şi cīnd ar fi referit un document īntreg (cu URL-ul documentului ca valoare a atributului HREF) şi prin includerea numelui ancorei, precedat de semnul #.

Exemplu:

          <A HREF="/cale/doc.html#cuvint cheie">Salt la paragraful ţintă</A>

Legătura cere navigatorului să īncarce documentul doc.html a cărui cale este precizată īn HREF şi să deruleze doc.html pīnă cīnd „Paragraf_ţint㓠ajunge īn partea de sus a ecranului.

Ancorele pot fi create chiar īn acelaşi document īn care se găsesc şi legăturile īn ideea de a uşura navigarea printr-un document mai mare. Īn acest caz, valoarea atributului HREF este chiar cuvīntul cheie. De pildă īn cazul unui singur document organizat pe secţiuni, cuprinsul poate fi prezentat la īnceputul documentului şi poate avea legături care punctează spre diferitele secţiuni. Tot ce avem de făcut este să dăm nume ancorelor şi apoi să le referim īn legături.

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:

           Web Authoring Reference

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.

 


4.5. Imagini senzitive

Imaginile senzitive permit specificarea unor regiuni ale unei imagini (sau obiect, mai general) cărora să li se asocieze o acţiune specifică (de exemplu īncărcarea unei resurse, lansarea unui program, etc). Cīnd regiunea este activată de utilizator se execută acţiunea respectivă. O imagine senzitivă este creată prin asocierea unui obiect cu o specificaţie a zonelor suprafeţei obiectului respectiv. Există două tipuri de imagini senzitive:

·        Client-side. Cīnd utilizatorul activează o regiune a unei imagini senzitive de acest tip cu mouse-ul coordonatele punctului respectiv (īn pixeli) sīnt interpretate de către agentul utilizatorului (browserul acestuia). Navigatorul selectează o legătură ce a fost specificată pentru regiunea activată şi o urmează.

·        Server-side. Cīnd utilizatorul activează o regiune a unei imagini senzitive de acest tip cu mouse-ul coordonatele punctului respectiv (īn pixeli) sīnt trimise agentului serverului (programului de pe server) şi care e specificat de atributul HREF al elementului A. Programul de pe server este cel care interpretează aceste coordonate şi realizează o anumită acţiune.

De obicei sīnt preferate imaginile senzitive client īn faţa celor de tip server-side din două motive: sīnt accesibile şi celor ce folosesc browsere fără facilităţi grafice şi oferă un feed-back imediat, indiferent dacă se pointează īntr-o zonă activă sau nu.

1. Imagini senzitive client-side

Acest tip de imagini senzitive realizează senzitivitatea imaginii prin legături īn textul care īnsoţeşte figura şi care desemnează zonele active din figură. Această metodă nu numai că este mult mai rapidă decīt cea care implică programe care rulează pe server, dar permite şi ceva ce varianta cu imagini senzitive de tip sever-side nu putea realiza: utilizarea figurilor senzitive şi īn navigatoarele care lucrează īn mod text deoarece textul care descrie figura este cel care defineşte maparea figurii.

Imaginea senzitivă de tip client-side poate fi definită cu unul dintre elementele IMG, OBJECT sau INPUT. Cu aceasta se asociază o hartă de legături ce se defineşte cu elementul MAP. Legătura dintre cele două componenete se realizează prin intermediul atributului USEMAP al elementului cu care se defineşte imaginea senzitivă.

Prezenţa atributului USEMAP la definirea unui obiect (cu OBJECT) impune ca obiectul respectiv (ce este inclus) să fie o imagine. Mai mult, cīnd acesta are o hartă asociată cu el, browserele trebuie să implementeze acţiunea cu obiectul respectiv exclusiv īn termenii imaginii senzitive, putīnd fi chiar omisă īncărcarea sau procesarea conţinutului propriu-zis al acestuia (dacă nu poate fi făcută de browserul respectiv). Fiecare element MAP poate conţine cel puţin unul dintre următoarele elemente:

1.      Unul sau mai multe elemente AREA. Acestea nu au conţinut dar specifică regiunile geometrice ale hărţii asociate cu imaginea şi legăturile asociate cu fiecare regiune īn parte. De notat că atunci cīnd această metodă este folosită elementul MAP nu afişează nimic. Autorii trebuie să ofere un text alternativ pentru fiecare porţiune definită cu AREA, utilizīnd atributul ALT.

2.      Conţinut de tip bloc (block-level). Acesta va include elemente A ce specifică regiunile geometrice ale hărţii şi legăturile asociate cu fiecare regiune īn parte. De notat că atunci cīnd se foloseşte această metodă elementul MAP poate fi afişat de browser, rezultīnd o metodă de creare a unor documente mai accesibile decīt cea descrisă anterior.

Dacă două sau mai multe regiuni se suprapun, elementul definit īn regiunea ce apar mai devreme īn document este cel luat īn consideraţie.


A. Elementul MAP

Sintaxa:

          <MAP>...</MAP>

Atribute posibile:

·      NAME=CDATA (numele hărţii)

·      atribute comune

Conţine:

·      Unul sau mai multe elemente AREA, sau unul sau mai multe elemente de tip bloc

Conţinut īn:

·      elemente de tip inline, elemente de tip bloc (block-level)

Descriere:

Acest element defineşte o imagine senzitivă de tip client-side pentru a fi utilizată cu un element IMG sau OBJECT. Atributul NAME este folosit ca ancoră pentru atributul USEMAP al elementelor IMG sau OBJECT. Īn timp ce MAP poate defini imagini senzitive incluse īn alte fişiere, browserele suportă de obicei numai imagini care au definită harta de legături cu MAP doar īn acelaşi fişier cu imaginea. Iniţial MAP a fost definit să aibă asociat unul sau mai multe elemente AREA care să specifice coordonatele unei regiuni active (clicabile).

HTML 4.0 extinde acest element astfel īncīt să poată avea ca atribute unul sau mai multe elemente de tip bloc ca o alternativă la utilizarea elementelor de tip AREA. Combinate cu OBJECT acestea permit o alternativă cu conţinut mai bogat la imagini. Dar nu toate browserele suportă acestea variantă (cu OBJECT), astfel că varianta cu IMG este mult mai sigură. Cīnd MAP se foloseşte cu OBJECT, conţinutul acesteia nu este afişat de browser.

 

B. Elementul AREA

Sintaxa:

          <AREA>

Atribute posibile:

·        SHAPE = [ rect | circle | poly | default ] (forma regiunii)

·        COORDS=Coords (coordonatele regiunii)

·        HREF=URI (resursa indicată de legătură)

·        TARGET=FrameTarget (frame-ul īn care se īncarcă legătura)

·        NOHREF (regiune inactivă)

·        ALT=Text (text alternativ)

·        TABINDEX=Number (poziţia īn ordinea de parcurgere cu TAB-ul)

·        ONFOCUS=Script (regiunea a primit focusul)

·        ONBLUR=Script (regiunea a pierdut focusul)

·      atribute comune

Conţine:

·      nimic

Conţinut īn:

·      elementul MAP

Descriere:

Acest element defineşte o regiune īntr-o imagine senzitivă. Fiecare regiune este o bucată de imagine care are asociată a altă acţiune cīnd se face clic cu mouse-ul pe ea.

Atributele SHAPE şi COORDS specifică partea din imagine ce este inclusă īn acea regiune. Valoarea implicită este „rect“ care defineşte un dreptunghi folosind COORDS="left, top, right, bottom". Alte valori ale lzui SHAPE:

·        default, specifică toată imaginea;

·        circle, specifică o regiune circulară folosind COORDS="center-x, center-y, radius";

·        poly, specifică o regiune poligonală folosind COORDS="x1, y1, x2, y2, ..., xN, yN".

Valorile coordonatelor sīnt relative la colţul stīnga-sus şi sīnt exprimate īn pixeli sau procente.

Atributul HREF specifică o legătură la o altă resursă (ca de exemplu un document HTML sau o imagine JPEG). TITLE poate fi folosit pentru a descrie pe scurt conţinutul legăturii şi se foloseşte ca „tool-tip“. Atributul boolean NOHREF indică faptul că regiunea respectivă nu are legătură asociată.

Atributul ALT oferă text alternativ pentru cazul īn care nu se īncarcă imaginea. Se recomandă ca acesta să descrie funcţia şi nu regiunea.

Atributul TARGET este folosit cu frame-uri pentru a indica īn ce frame se īncarcă resursa indicată de legătură. Dacă numele indicat nu există se va folosi o fereastră nouă. Numele speciale de frame-uri īncep cu underscore (liniuţa de subliniere):

·        _blank, indică fereastră nouă

·        _self, indică frame-ul curent

·        _parent, indică frame-ul parinte al celui curent

·        _top, indică o fereastră nouă, fără frame-uri

Atributul ACCESSKEY specifică un caracter unic UNICODE folosit ca tastă de activare (shortcut) pentru urmărirea legăturii. TABINDEX specifică un număr īntre 0 şi 32767 care indică ordinea de parcurgere cu tasta TAB. O regiune cu TABINDEX=0 sau fără TABINDEX va fi vizitată după toate elementele cu o valoare pozitivă a acestui atribut. Cu cīt valoarea pozitivă este mai mică cu atīt regiunea va fi vizitată mai devreme. Īn caz de ambiguitate elementul ce apare mai īntīi īn document are prioritate.

AREA acdeptă īn plus faţă de evenimentele uzuale (core) acceptate de majoritatea elementelor şi atribute folosite de scripturile client:

·        ONFOCUS, ce apare cīnd regiunea primeşte focusul;

·        ONBLUR, ce apare cīnd regiunea pierde focusul.


Exemplu:

Acest exemplu defineşte o hartă numit㠄mymap“ ale cărei zone active (3) sīnt dreptunghiuri care indică spre trei adrese diferite, fiecare avīnd şi alternative pentru cazul cīnd imaginea nu este īncărcată:

      <MAP NAME=mymap>

<AREA HREF="/reference/" ALT="HTML and CSS Reference" COORDS="5,5,95,195">
<AREA HREF="/design/"     ALT="Design Guide"          COORDS="105,5,195,195">
<AREA HREF="/tools/"       ALT="Tools"                         COORDS="205,5,295,195">

             </MAP>

 

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

1. Comentariile īn documentele HTML

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.

2. Linii orizontale de demarcare (elementul HR)

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:

 

3. Fundalul unui document

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.


4. Culoarea textului şi a legăturilor

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.

 


Capitolul 5.

Utilizarea tabelelor īn limbajul HTML

 

Din elementele noi introduse de HTML 3.0, tabelele reprezintă primul care a ajuns pe Web. Ele sīnt suportate de Netscape Navigator, īncepīnd cu versiunea 1.1, iar de către Microsoft Internet Explorer, īncepīnd cu versiunea 2.0.

Utilizarea fundamentală a tabelelor este aceeaşi cu a celorlalte forme de comunicare: tabelele se folosesc pentru a afişa informaţii īn două dimensiuni şi nu liniar, adică informaţia este mai sugestivă dacă este prezentată sub forma unei matrici cu rīnduri şi coloane.

Īn afara acestei utilizări, pīnă la apariţia style-sheet-urilor, tabelele se utilizau (īn unele cazuri) şi pentru a produce efecte speciale, cum ar fi: poziţionări īn pagină ale textului sau al imaginilor grafice, poziţionări pe rīnd ale imaginilor, poziţionări ale elementelor grafice īn interiorul textului, etc. Avīnd īn vedere că pot apare probleme īn aceste cazuri (la browserele non-vizuale sau cīnd paginile sīnt proiectate pentru displayuri mai mari decīt cel pe care este afişat ori cīnd fontul utilizat la vizualizare diferă ca mărime de cel presupus la proiectare), pentru a le minimiza, se recomandă īn HTML 4.0 folosirea style-sheet-urilor pentru controlul aranjării īn pagină (controlul layout-ului)

Elementele luate īn consideraţie de HTML 4.0 pentru codarea tabelelor sīnt:

·        Explicaţia (elementul CAPTION), care oferă o scurtă descriere a conţinutul tabelului. Se poate oferi şi o descriere mai largă (prin intermediul atributului SUMMARY) pentru cazul cīnd browserul este utilizat de persoane care folosesc alfabetul Braille sau este un browser ce sintetizează voce

·        Rīndurile tabelului care pot fi grupate īn secţiuni de antet/head, explicaţii/footer şi corp/body (prin intermediul elementelor THEAD, TFOOT şi respectiv TBODY). Grupurile de rīnduri oferă informaţie structurală suplimentară şi pot fi utilizate de browsere astfel īncīt să sugereze mai bine structura tabelului, de exemplu permiţīnd deplasarea (scroll) individuală a acestor secţiuni sau repetīnd informaţia cuprinsă īn header şi/sau footer pe fiecare pagină (eventual tipărită) a unor tabele mai lungi.

·        Grupuri de coloane (care oferă informaţie structurală suplimentară) pot fi definite la īnceputul definiţiei unui tabel (prin intermediul elementelor COLGRUP şi COL), dīnd posibilitatea browserelor să afişeze tabelele incremental, fără a mai fi nevoite să aştepte tot conţinutul tabelului pentru a-l afişa.

·        Capul de tabel (elementul TH), atīt īn cazul că este aşezat pe rīnd cīt şi īn cazul aşezării pe coloană, va fi scos īn evidenţă faţă de restul tabelului.

·        Celulele tabelului (elementul TD), adică dreptunghiurile individuale. Acestea se pot īntinde pe mai multe rīnduri şi/sau coloane. HTML 4.0 permite ataşarea unei etichete fiecărei celule astfel īncīt browserele non-vizuale să poată comunica mai uşor informaţia din celulă.

·        Datele din tabel, adică valorile īnscrise īn celulele tabelului. Specificaţiile HTML 4.0 permit ca īn celulele tabelelor să fie introdus orice element HTML: text simplu, text (pre)formatat, imagini, legături, formulare, alte tabele, etc.

 


1.    Descrierea tabelelor (elementul TABLE)

Descrierea unui tabel se face cu elementul TABLE. Acesta conţine toate elementele ce specifică titlul, rīndurile, conţinutul şi formatul acestora.

Tabelele sīnt specificate īn HTML rīnd cu rīnd, fiecare rīnd conţinīnd definiţii pentru fiecare din celulele care īl formează. Prin urmare, pentru a defini un tabel se īncepe prin a defini rīndul din partea de sus, celulă cu celulă, apoi se defineşte al doilea rīnd, celulă cu celulă ş.a.m.d. Coloanele sīnt calculate automat pe baza numărului de celule care sīnt īn fiecare rīnd. Perechea <TR>...</TR> defineşte īnceputul, respectiv sfīrşitul rīndului, perechea <TH>...</TH> defineşte o celulă cap de tabel pe acest rīnd, iar perechea <TD>...</TD> defineşte o celulă de date din rīnd.

Exemplu:

<TABLE>

<TR>

<TH>Cap de tabel</TH>

<TD>Celula 1-1</TD>

<TD>Celula 1-2</TD>

<TD>Celula 1-3</TD>

</TR>

</TABLE>

De remarcat că forma de scriere a codului HTML de mai sus are īn vedere doar uşurarea īnţelegerii codului de la o primă privire. Marea majoritate a navigatoarelor ignoră spaţiile libere şi caracterul <CR>. O excepţie totuşi: atunci cīnd inseraţi o imagine īntr-una din celulele tabelului, pentru a obţine plasarea corectă a imaginii īn toate browserele, se recomandă punerea tag-urile īn acelaşi rīnd.

Exemplu:

              <TD><IMG SRC="A.GIF"></TD>

La afişarea unui tabel, un browser trebuie să realizeze următoarele operaţii:

·        să facă disponibil sumarul (definit cu summary) utilizatorului

·        să afişeze titlul (explicaţia) tabelului

·        să afişeze antetul/headerul tabelului, apoi footerul, dacă sīnt specificate. Locul īn care apar sīnt bine definite (de exemplu la īnceputul/sfīrşitul fiecărei pagini listate)

·        să calculeze numărul de coloane din tabel. Numărul de rīnduri se stabileşte simplu: numărul de elemente TR conţinute de TABLE.

·        să grupeze coloanele īn conformitate cu specificaţiile de grupare a coloanelor

·        să afişeze celulele rīnd după rīnd, grupate īn coloanele corespunzătoare, īntre header şi footer. Browserele vizuale formatează tabelul utulizīnd atributele şi specificaţiile de stil (style-sheet).

 

Īn acest fel, modelul de tabel din HTML 4.0 este proiectat astfel īncīt afişarea acestora să se facă incremental, pe măsură ce rīndurile tabelului sosesc, fără a aştepta īncărcarea completă.

Elementul TABLE

Sintaxa:

          <TABLE> ...</TABLE>

Atribute posibile:

·        SUMMARY=Text (descrierea pe larg a conţinutului şi structurii tabelului)

·        WIDTH=Length (lăţimea tabelului)

·        BORDER=Pixels (lăţimea marginii tabelului)

·        FRAME=[ void | above | below | hsides | lhs | rhs | vsides | box | border ] (margini externe)

·        RULES=[ none | groups | rows | cols | all ] (margini interne)

·        CELLSPACING=Length (spaţierea īntre celule)

·        CELLPADDING=Length (spaţierea īn interiorul celulelor)

·        ALIGN=[ left | center | right ] (alinierea tabelului)

·        BGCOLOR=Color (culoarea de background a tabelului)

·        atribute comune

Conţine:

·        Un element opţional CAPTION, urmat de zero sau mai multe elemente COL şi COLGROUP, urmat de un element opţional THEAD, un element opţional TFOOT, şi apoi un element sau mai 7multe elemente opţionale TBODY.

Conţinut īn:

·        APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH

Descriere:

Orice tabel īncepe cu tag-ul: <TABLE> şi se termină cu </TABLE>, īntre ele fiind conţinutul tabelului propriu-zis care poate conţine o explicaţie cu <CAPTION> şi, īn esenţă, un număr oarecare de rīnduri definite īn principal cu <TR>.

CAPTION poate fi urmat, opţional, de elemente COL şi COLGROUP care specifică lăţimea coloanelor şi modul de grupare al acestora. Apoi urmează THEAD, TFOOT şi TBODY care definesc grupurile de rīnduri. Un grup de rīnduri conţine elemente TR ce definesc rīndurile individual, care, la rīndul lor, conţin elemente TH sau TD pentru celulele header sau de date.

Īntr-un tabel definit cu TABLE este necesar cel puţin un element TBODY, dar ambele taguri de definire a acestui element sīnt opţionale dacă nu există decīt un element TBODY şi nu există nici un THEAD sau TFOOT.

Atributul tag-ului <TABLE> WIDTH indică lăţimea tabelului īn pagină dată ca număr de pixeli sau ca procent din spaţiul orizontal disponibil. Laţimile date īn pixeli (īn special cele peste 500) ar trebui evitate īntrucīt, uneori, cauzează scroll inutil orizontal.

Un număr de atribute specifice tabelelor permit un control mai bun asupra poziţiei tabelelor īn pagină şi asupra textului care (eventual) curge pe līngă tabel:


Atribut=Valoare

Semnificaţie

ALIGN=LEFT

Aliniază tabelul cu marginea din stīnga a textului; textul va curge pe marginea din dreapta a tabelului

ALIGN=CENTER

Aliniază tabelul īn mijlocul paginii; textul nu va curge prin nici una din părţile tabelului

ALIGN=RIGHT

Aliniază tabelul cu marginea din dreapta a textului; textul va curge pe marginea din stīnga a tabelului

Browser-ele tratează īn general tabelele ca fiind „flotante“, conţinutul care urmează lui TABEL curgīnd pe līngă el (dacă se poate). Pentru a preveni această manifestare se poate folosi elementul „break“ <BR CLEAR=all> la sfirşitul lui TABLE.

<TABLE> mai poate fi folosit īmpreună cu atributele UNITS şi COLSPEC. UNITS poate avea ca valori PIXELS, EN (implicit) sau procente (RELATIVE) din dimensiunea totală a tabelului.

Atributul tag-ului <TABLE> FRAME, puţin suportat acum de browsere, specifică marginile exterioare vizibile ale tabelului. Valorile posibile sīnt:

·     void – nici o margine vizibilă

·     above – marginea de sus

·     below– marginea de jos

·     hsides – marginile din stīnga şi dreapta

·     vsides – marginile de sus şi jos

·     lhs – numai marginea din stīnga

·     rhs – numai marginea din dreapta

·     box (border) – toate marginile

Valoarea implicită este void, dacă nu este specificat atributul BORDER cu o valoare pozitivă, caz īn care valoarea implicită este box. <TABLE BORDER> este o abreviere foarte bine suportată pentru <TABLE FRAME=border>.

Atributul RULES, şi el destul de puţin suportat de browsere, specifică marginile interioare vizibile (īntre celulele tabelului). Valorile posibile sīnt:

·     none – nici o margine interioară vizibilă

·     groups – numai marginile īntre grupurile de rīnduri şi coloane

·     rows – numai marginile īntre rīnduri

·     cols – numai marginile īntre coloane

·     all – toate marginile interioare

Valoarea implicită este none dacă BORDER=0 (sau se foloseşte atributul no BORDER). Orice altă folosire a lui BORDER are ca efect trecerea lui all ca valoare implicită.

Atributul BGCOLOR sugerează o culoare de background pentru tabel. Poate fi folosită īn combinaţie cu <FONT COLOR=...>, dar efectele pot fi imprevizibile dacă se ia īn considerare posibilitatea de suprascriere a acestor atribute de către browsere. Metoda recomandată este cea a style-sheet-urilor.


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.


Elementul CAPTION

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>

 


A. Elementul THEAD

Sintaxa:

          <THEAD>...</THEAD>

Atribute posibile:

·        ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)

·        VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din grup)

·        CHAR=Character (caracterul după care se face alinierea)

·        CHAROFF=Length (offsetul caracterului după care se face alinierea)

·        atribute comune

Conţine:

·        unul sau mai multe elemente TR

Conţinut īn:

·        TABLE

Descriere:

Elementul THEAD defineşte un grup de rīnduri de tip header (antet) īntr-un tabel. Un tabel definit cu TABLE poate avea un singur THEAD, care poate apare după CAPTION, COL sau COLGROUP, şi poate preceda elementele TFOOT (opţional) şi TBODY (obligatoriu).

Prin gruparea explicită a rīndurilor de antet cu THEAD, autorii oferă browserelor posibilitatea de a include acele rīnduri pe fiecare pagină tipărită a unui tabel mare, precum şi posibilitatea de prezenta tabele care permit scroll doar rīndurilor de date, cele de antet rămīnīnd fixe pe ecran.

Nu toate browserele suportă acest element, dar folosirea lui nu conduce la nici o problemă la acestea.

THEAD permite specificarea unor atribute de prezentare pentru alinierea celulelor de date ale tabelului. Īntrucīt nu toate browserele īl suportă, aceste atribute se pot specifica şi direct celulelor (definite cu TR, TH, TD).

Atributul ALIGN specifică alinierea orizontală pentru fiecare celulă din grupul de rīnduri. ALIGN=char aliniază conţinutul după un anumit caracter dat de atributul CHAR, a cărui valoare implicită este punctul zecimal. CHAROFF specifică offsetul primei apariţii a caracterului de aliniere. Valoarea lui este un număr de pixeli sau un procent din lăţimea celulei. CHAROFF="50%" aliniază caracterul de aliniere īn centru celulei.

Atributul VALIGN specifică poziţia verticală a conţinutului celulelor şi poate lua valorile:

·        top, care poziţionează datele la marginea de sus a celulei;

·        middle, valoarea implicită, care poziţionează datele īn centrul celulei;

·        bottom, care poziţionează datele la marginea de jos a celulei;

·        baseline, care specifică alinierea primei linii a celulei (indiferent ce conţine) la o linie de bază a fontului (baseline) comună.

 

B. Elementul TFOOT

Sintaxa:

          <TFOOT>...</TFOOT>

Atribute posibile:

·        ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)

·        VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din grup)

·        CHAR=Character (caracterul după care se face alinierea)

·        CHAROFF=Length (offsetul caracterului după care se face alinierea)

·        atribute comune

Conţine:

·        unul sau mai multe elemente TR

Conţinut īn:

·        TABLE

Descriere:

Elementul TFOOT defineşte un grup de rīnduri de tip footer  īntr-un tabel. Un tabel definit cu TABLE poate avea un singur TFOOT, care poate apare după THEAD (opţional) şi poate preceda elementul TBODY (obligatoriu).

Prin gruparea explicită a rīndurilor de footer cu TFOOT, autorii oferă browserelor posibilitatea de a include acele rīnduri pe fiecare pagină tipărită a unui tabel mare, precum şi posibilitatea de prezenta tabele care permit scroll doar rīndurilor de date, cele de footer rămīnīnd fixe pe ecran.

Nu toate browserele suportă acest element, iar cerinţa de a fi plasat īnainte de TBODY īl face nerecomandat pentru acestea.

Atributele (şi semnificaţiile lor) sīnt aceleaşi cu cele de la THEAD.

Un footer poate oferi un rīnd special, de tip sumar sau de tip „notă de pagină/picior“, ce se aplică unui tabel īntreg sau numai unei porţiuni din el.

Exemplu:

     Următorul exemplu foloseşte TFOOT pentru a defini „note de pagină/picior“ pentru tot tabelul:

<TABLE SUMMARY="This table lists...">

  <CAPTION>Programs Available</CAPTION>

  <THEAD>

    <TR>

        ...

    </TR>

  </THEAD>

  <TFOOT CLASS=footnote>

    <TR>

      <TD COLSPAN=5>

          Many disciplines are also available as Minors and Joint

          Honors programs.

      </TD>

    </TR>

    <TR>

      <TD COLSPAN=5>

        * Preprofessional programs ...

      </TD>

    </TR>

  </TFOOT>

  <TBODY>...

  </TBODY>

</TABLE>

 

C. Elementul TBODY

Sintaxa:

          <TBODY>...</TBODY>

Atribute posibile:

·        ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)

·        VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din grup)

·        CHAR=Character (caracterul după care se face alinierea)

·        CHAROFF=Length (offsetul caracterului după care se face alinierea)

·        atribute comune

Conţine:

·        unul sau mai multe elemente TR

Conţinut īn:

·        TABLE

Descriere:

Elementul TBODY defineşte un grup de rīnduri de date  īntr-un tabel. Un tabel definit cu TABLE poate avea unul sau mai multe elemente TBODY, care pot apărea după elementul TFOOT (opţional). Tagul de sfīrşit este īntotdeauna opţional. Tagul de īnceput este opţional cīnd tabelul conţine doar un TBODY şi nu conţine nici un THEAD sau TFOOT. Aceasta permite ca structura simplă a tabelelelor din HTML 3.2 să rămīnă validă:

<TABLE>

  <TR>

    <TH>Abbreviation</TH>

    <TH>Long Form</TH>

  </TR>

  <TR>

    <TD>AFAIK</TD>

    <TD>As Far As I Know</TD>

  </TR>

</TABLE>

Prin gruparea explicită a rīndurilor de date cu TBODY, autorii oferă browserelor posibilitatea de a prezenta tabele care permit scroll doar rīndurilor de date, cele de header şi footer rămīnīnd fixe pe ecran. Īn plus, gruparea rīndurilor de date īn mai multe TBODY permite sugerarea unor prezentări diverse pentru diferitele grupuri, prin intermediul style-sheet-urilor.

Nu toate browserele suportă acest element, dar folosirea lui nu conduce la nici o problemă la acestea. Atributele au aceeaşi semnificaţia ca la THEAD şi TFOOT.

4. Definirea rīndurilor (elementul TR)

Un tabel este alcătuit, īn esenţă din rīnduri care conţin celulele īn care se introduc elementele ce fac parte din tabel (datele). Un rīnd de date este descris prin intermediul elementului TR. Atributele acestui element permit descrierea unor caracteristici comune tuturor celulelor din acel rīnd, chiar dacă acestea pot fi specificate ulterior şi individual, pentru fiecare celulă īn parte. Aceste caracteristici sīnt:

·        Alinierea orizontală a textului (ALIGN [=right, left, center])

·        Alinierea verticală a textului (VALIGN [=top, middle, bottom])

·        Culoarea de background (BGCOLOR [=valoarea culorii īn hexa])

·        Culoarea marginilor [a se vedea atributele lui TABLE]

 

Elementul TR

Sintaxa:

          <TR>...</TR>

Atribute posibile:

·        ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)

·        VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din grup)

·        CHAR=Character (caracterul după care se face alinierea)

·        CHAROFF=Length (offsetul caracterului după care se face alinierea)

·        BGCOLOR=Color (culoarea de background a rīndului)

·        atribute comune

Conţine:

·        unul sau mai multe elemente TH sau TD

Conţinut īn:

·        TABLE, TFOOT, TBODY

Descriere:

Elementul TR defineşte un rīnd īntr-un tabel. Elementele TR pot fi grupate cu ajutorul lui THEAD, TFOOT sau TBODY. Īntrucīt tagurile de īnceput şi de sfīrşit ale lui TBODY sīnt opţionale, structura simplă a tabelului din HTML 3.2 rămīne validă.

TR conţine elemente TH sau TD, care la rīndul lor conţin datele propriu-zise din tabel. Īn plus faţă de atributele comune prezente la cele mai multe elemente, TR poate avea şi atribute de prezentare pentru alinierea celulelor īn rīnd şi specificarea culorii de background. Semnificaţia acestora este aceeaşi cu cea de la elementele anterioare.

 


5. Definirea celulelor unui tabel (elementele TH şi TD)

Celule unui tabel pot conţine două tipuri de informaţie: informaţie antet (header, cap de tabel) şi date. Această distincţie permite browserelor să prezinte diferit cele două feluri de celule, chiar şi īn absenţa style-sheet-urilor. De exemplu browserele vizuale pot prezenta headerele cu un font bold, iar cele care sintetizează vocea cu o inflexiune specială a vocii.

Informaţia de tip header se descrie cu elementul TH. Există două tipuri de astfel de informaţie: cea descrisă cu TH şi valoarea atributului ABBR. Un browser trebuie să prezinte sau una sau alte dintre cele două tipuri, ABBR fiind preferată atunci cīnd nu există suficient spaţiu pentru a prezenta īn īntregime informaţia din TH.

Datele propriu-zise ale tabelului se inserează īn celule descrise cu elementul TD.

Celulele unui tabel pot fi goale (fără nici un conţinut). Īn acest caz pot apare probleme la afişarea marginilor celulei respective (unele browsere nu desenează marginile celulelor goale, acestea trebuind să conţină un element invizibil, de exemplu un blanc, pentru ca marginea rīndului să nu fie īntreruptă).

De exemplu, următorul tabel conţine (descrie) 2 rīnduri cu cīte 4 coloane (celule) pe fiecare rīnd, fiecare coloană avīnd un header (cap de coloană) care o descrie:

<TABLE summary="  Tabel care indică nr. de ceşti de cafea băute la o reuniune,

                  felul cafelei (normă/decofeinizată) şi dacă este cu/fără

                  zahăr. ">

<CAPTION>Cups of coffee consumed by each</CAPTION>

<TR>

   <TH>Name</TH>

   <TH>Cups</TH>

   <TH>Type of Coffee</TH>

   <TH>Sugar?</TH>

<TR>

   <TD>T. Sexton</TD>

   <TD>10</TD>

   <TD>Espresso</TD>

   <TD>No</TD>

<TR>

   <TD>J. Dinnen</TD>

   <TD>5</TD>

   <TD>Decaf</TD>

   <TD>Yes</TD>

</TABLE>

 

Acest tabel poate arăta astfel:

 

Name         Cups       Type of Coffee   Sugar?

T. Sexton    10         Espresso         No

J. Dinnen    5          Decaf            Yes

 


A. Elementul TH

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.

 

B. Elementul TD

Sintaxa:

          <TD>...</TD>

Atribute posibile:

·        ROWSPAN=Number (rīnduri suprapuse/depăşite de celulă)

·        COLSPAN=Number (coloane suprapuse/depăşite de celulă)

·        HEADERS=IDREFS (lista celulelor header pentru celula curentă)

·        ABBR=Text (abrevierea celulei header)

·        SCOPE=[ row | col | rowgroup | colgroup ] (celulele acoperite de celula header)

·        AXIS=CDATA (categoria celulei header)

·        ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)

·        VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din grup)

·        CHAR=Character (caracterul după care se face alinierea)

·        CHAROFF=Length (offsetul caracterului după care se face alinierea)

·        BGCOLOR=Color (culoarea de background a rīndului)

·        WIDTH=Pixels (lăţimea celulei)

·        HEIGHT=Pixels (īnălţimea celulei)

·        NOWRAP (suprimă continuarea conţinutului pe un alt rīnd/word wrap)

·        atribute comune

Conţine:

·        elemente inline, elemente tip bloc

Conţinut īn:

·        TR

Descriere:

Elementul TD defineşte o celulă de date. Elementele TD sīnt conţinute īn TR, care poate să conţină şi elemente TH. Dacă o celulă este şi antet şi dată trebuie folosit TD.

Semnificaţia atributele este aceeaşi cu cea de la TH.

 


6. Definirea celulelor extinse (atributele COLSPAN şi ROWSPAN)

Sintaxa:

          <TH COLSPAN=nr. coloane></TH> sau  <TH ROWSPAN=nr. rīnduri></TH>

Descriere:

Pentru nevoi de organizare a datelor din tabel sau pentru obţinerea de efecte, celulele pot fi extinse atīt orizontal (pe mai multe coloane) cīt şi vertical (pe mai multe rīnduri). Extinderea se obţine cu ajutorul atributelor COLSPAN şi ROWSPAN utilizate cu tag-urile <TH> sau <TD>. Celulele se extind īntotdeauna īn jos şi/sau spre dreapta; deci, pentru a crea o celulă care se extinde peste cīteva coloane se utilizează atributul COLSPAN īn conjuncţie cu tag-ul de īnceput a celei mai din stīnga celule din rīnd, iar pentru a obţine extinderea unei celule peste mai multe rīnduri se utilizează atributul ROWSPAN īn conjuncţie cu tag-ul de īnceput a celei mai de sus celule de pe coloană. Valorile atributelor reprezintă numărul de coloane, respectiv rīnduri peste care se doreşte să fie extinsă celula.

Trebuie avut īn vedere că īn cazul unor descrieri eronate (cu celule care se „suprapun“) browserele reacţionează diferit, efectele putīnd fi uneori imprevizibile.

Exemplu greşit (cu celule extinse/suprapuse):

Īn acest tabel celula "5" este extinsă peste două rīnduri şi celula "7" este extinsă peste două coloane, rezultīnd o suprapunere īntre celulele "7" şi "9":

<TABLE border="1">

  <TR><TD>1 <TD>2 <TD>3

  <TR><TD>4 <TD rowspan="2">5 <TD>6

  <TR><TD colspan="2">7 <TD>9

</TABLE>

Exemplu:

     Un tabel cu celule extinse descris corect ar putea fi următorul:

<TABLE BORDER>

<TR>

<TH COLSPAN=2></TH>

<TH>Celula din stīnga este<BR>extinsă pe două coloane<BR>Rīndul 1</TH>

</TR>

<TR ALIGN=CENTER>

<TH ROWSPAN=2>Celulă extinsă<BR>pe două rīnduri</TH>

<TH>Capul rīndului 2</TH>

<TD>Rīndul 2</TD>

</TR>

<TR ALIGN=CENTER>

<TH>Capul rīndului 3</TH>

<TD>Rīndul 3</TD>

</TR>

</TABLE>

 

Exemplu:

Acest exemplu ilustrează cum afectează definirea unei celule extinse vecinii săi (aici celula de sub):

<TABLE border="1">

  <TR><TD>1 <TD rowspan="2">2 <TD>3

  <TR><TD>4 <TD>6

  <TR><TD>7 <TD>8 <TD>9

</TABLE>

     Īntrucīt celula "2" se extinde pe primul şi al doilea rīnd, definirea celui de al doilea rīnd o va lua īn considerare. Astfel, īn  rīndul doi, al doile TD defineşte de fapt celula a treia de pe rīnd, rezultīnd un tabel ca īn figura următoare:


Exemplu:

     Acelaşi tabel, cu o extindere pe rīnd, poate fi descris astfel:

<TABLE border="1">

  <TR><TD>1 <TD>2 <TD>3

  <TR><TD colspan="2">4 <TD>6

  <TR><TD>7 <TD>8 <TD>9

</TABLE>


     aici celula "4" se extinde pe două coloane şi, astfel, al doilea TD din rīnd defineşte a treia celulă ("6"):

 

 

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>

 

Elementul COLGROUP

Sintaxa:

<COLGROUP>... </COLGROUP>

Atribute posibile:

·        SPAN=Number (numărul de coloane īn grup)

·        WIDTH=MultiLength (lăţimea fiecărei coloane)

·        ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)

·        VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din grup)

·        CHAR=Character (caracterul după care se face alinierea)

·        CHAROFF=Length (offsetul caracterului după care se face alinierea)

·        atribute comune

Conţine:

·      Zero sau mai nmulte elemente COL

Conţinut īn:

·      TABLE

Descriere:

Acest element defineşte un grup de coloane īntr-un tabel. Dacă e folosit, COLGROUP trebuie să apară după elementul (opţional) CAPTION şi īnaintea elementului (tot opţional) THEAD. Diviziunea structurală definită de COLGROUP permite sugerarea unei prezentări comune pentru tot grupul de coloane prin intermediul style-sheet-urilor.

Atributul SPAN defineşte numărul de coloane din grup; valoarea implicită este 1. Celelalte atribute permise cu acest element sīnt comune coloanelor din tabel. Poate conţine, de asemenea, elemente COL care definesc atributele pentru celulele din coloane īn mod individual, suprapunīndu-se īn acest fel atributele definite pentru grup. Atributul SPAN nu trebuie utilizat dacă COLGROUP conţine COL.

COLGROUP poate avea şi un număr de atribute de prezentare, multe dintre ele neputīnd fi īnsă īnlocuite complet de style-sheet-uri. Īntrucīt nu toate browserele suportă COLGROUP, se pot specifica aceste atribute şi celulelor individuale (elementelor TH şi TD).

Atributul WIDTH specifică lăţimea fiecarei coloane din grup. Valoarea trebuie să fie un număr de pixeli, procent din lăţimea tabelului sau o lăţime relativă exprimată ca i*, cu i intreg. O coloană care are WIDTH="3*" va avea lăţimea de 3 ori cīt una care are WIDTH="1*". Valoarea WIDTH="0*" este echivalentul minimului necesar pentru afişarea conţinutului coloanei.

Atributele celelalte au aceeaşi semnificaţie ca la elementele anterioare.

Exemplu:

Acest exemplu oferă o perspectivă asupra divizării structurale a unui tabel īn 3 părţi. Prima parte este alcătuită dintr-o singură coloană care dă descrierea unui caracter. O doua, de 3 coloane, dă diverse moduri de a reprezenta caracterul respectiv īn HTML. A treia parte, tot de 3 coloane, arată cum va apare caracterul respectiv īn diverse browsere.

<TABLE SUMMARY="This table gives the character entity reference,

                decimal character reference, and hexadecimal character

                reference for 8-bit Latin-1 characters, as well as the

                rendering of each in your browser.">

  <COLGROUP>

  <COLGROUP SPAN=3>

  <COLGROUP SPAN=3>

  <THEAD>

    <TR>

      <TH SCOPE=col ROWSPAN=2>Character</TH>

      <TH SCOPE=col ROWSPAN=2>Entity</TH>

      <TH SCOPE=col ROWSPAN=2>Decimal</TH>

      <TH SCOPE=col ROWSPAN=2>Hex</TH>

      <TH SCOPE=colgroup COLSPAN=3>Rendering in Your Browser</TH>

    </TR>

    <TR>

      <TH SCOPE=col>Entity</TH>

      <TH SCOPE=col>Decimal</TH>

      <TH SCOPE=col>Hex</TH>

    </TR>

  </THEAD>

  <TBODY>

    <TR>

      <TD SCOPE=row>non-breaking space</TD>

      <TD>&amp;nbsp;</TD>

      <TD>&amp;#160;</TD>

      <TD>&amp;#xA0;</TD>

      <TD>&nbsp;</TD>

      <TD>&#160;</TD>

      <TD>&#xA0;</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).

 

Elementul COL

Sintaxa:

<COL>

Atribute posibile:

·        SPAN=Number (numărul de coloane īn grup)

·        WIDTH=MultiLength (lăţimea fiecărei coloane)

·        ALIGN=[ top | bottom | left | right ] (alinierea orizontală a celulelor din grup)

·        VALIGN=[ top | middle | bottom | baseline ] (alinierea verticală a celulelor din grup)

·        CHAR=Character (caracterul după care se face alinierea)

·        CHAROFF=Length (offsetul caracterului după care se face alinierea)

·        atribute comune

Conţine:

·      vid (nu conţine nimic)

Conţinut īn:

·      TABLE, COLGROUP

Descriere:

Acest element defineşte doar atributele comune unei coloane a unui tabel şi, spre deosebire de COLGROUP, nu grupează structural coloanele tabelului. Dacă e folosit, COL trebuie să apară după elementul (opţional) CAPTION şi īnaintea elementului (tot opţional) THEAD.

Atributul SPAN defineşte numărul de coloane care partajează aceleaşi atribute; valoarea impli-cită este 1. COL poate fi conţinut direct īn TABLE sau poate apare īn COLGROUP, caz īn care suprascrie atributele definite de acesta. Celelalte atribute au aceeaşi semnificaţie ca la elementul COLGROUP.

Exemplu:

Acest exemplu foloseşte COL īn cadrul lui COLGROUP pentru a atribui diferite „clase“ (atributul class) coloanelor unui tabel:

 

<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>&amp;nbsp;</TD>

      <TD>&amp;#160;</TD>

      <TD>&amp;#xA0;</TD>

      <TD>&nbsp;</TD>

      <TD>&#160;</TD>

      <TD>&#xA0;</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>&nbsp;<BR> Left&nbsp; <BR>&nbsp;</TD>

      <TD ALIGN=Center>&nbsp;<BR>&nbsp;Center&nbsp;<BR>&nbsp;</TD>

      <TD ALIGN=RIGHT> &nbsp;<BR>&nbsp; Right <BR>&nbsp;</TD>

</TR>

</TABLE>

     2.

<TABLE BORDER>

<CAPTION>Aliniere verticală</CAPTION>

<TR ALIGN=CENTER>

      <TD VALIGN=TOP>Top<BR> &nbsp;<BR>&nbsp;</TD>

      <TD VALIGN=MIDDLE>Center</TD>

      <TD VALIGN=BOTTOM>&nbsp;<BR><BR>&nbsp;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:




Capitolul 6.

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.

 

Elementul FRAMESET

Sintaxa:

<FRAMESET>... </FRAMESET>

Atribute posibile:

·        ROWS=MultiLengths (lungimile rīndurilor)

·        COLS=MultiLengths (lungimile coloanelor)

·        ONLOAD=Script (toate frame-urile au fost īncărcate)

·        ONUNLOAD=Script (toate frame-urile au fost eliminate)

·        atribute core

Conţine:

·      Unul sau mai multe elemente FRAMESET şi FRAME şi, opţional, un element NOFRAMES

Conţinut īn:

·      HTML

Descriere:

Acest element este un container de frame-uri, utilizat pentru a īmpărţi o fereastră īn subspaţii dreptunghiulare numite frame-uri. Documentul care include acest element (document cu frame-uri sau frameset document) elementul FRAMESET cel mai din exterior ia locul lui BODY şi urmează imediat elementul HEAD.

Atributele ROWS şi COLS definesc dimensiunea fiecarui frame din set. Fiecare atribut ia ca valoare o listă de lungimi specificate īn pixeli, ca procent sau ca lungime relativă. O lungime relativă este exprimată ca i*, unde i este un īntreg. De exemplu un set de frame-uri definit cu ROWS="3*,*" (* este echivalent cu 1*) va avea primul rīnd de trei ori mai īnalt decīt al doilea.

Valorile specificate pentru ROWS dau īnălţimea fiecărui rīnd, de sus īn jos, iar cele date pentru COLS dau lăţimea fiecărei coloane, de la stīnga la dreapta. Dacă ROWS sau COLS sīnt omise, valoare implicită pentru fiecare dintre aceste atribute este 100%. Dacă sīnt specificate ambele, se defineşte un grid („caroiaj“) care se umple de la stīnga la dreapta şi de sus īn jos.

Cīnd se folosesc dimensiuni īn pixeli acestea trebuie combinate cu lungimi relative pentru a acoperi diversele dimensiuni ale ferestrelor. Dimensiunile fixe īn pixeli se folosesc doar īn frame-urile care conţin imagini sau alte obiecte de dimensiune fixă şi cunoscută. Īn general, īnsă, se preferă procentele datorită capacităţii de adaptare la diversele dimensiuni ale ferestrelor.

Elementul FRAMESET acceptă, de asemenea, şi atributele ONLOAD şi ONUNLOAD pentru a specifica acţiuni client-side executate de scripturi cīnd frame-urile sīnt īncărcate, respectiv eliminate.

Exemplu:

Acest exemplu descrie un document (grid) cu 2 rīnduri şi 3 coloane. De remarcat īncercarea de a formata documentul şi īn cazul īn care browserul nu suportă frame-uri asemănător cu originalul.

<FRAMESET ROWS="70%,30%" COLS="33%,33%,34%">

  <FRAME NAME="Photo1" SRC="Row1_Column1.html">

  <FRAME NAME="Photo2" SRC="Row1_Column2.html">

  <FRAME NAME="Photo3" SRC="Row1_Column3.html">

  <FRAME NAME="Caption1" SRC="Row2_Column1.html">

  <FRAME NAME="Caption2" SRC="Row2_Column2.html">

  <FRAME NAME="Caption3" SRC="Row2_Column3.html">

  <NOFRAMES>

    <BODY>

      <H1>Table of Contents</H1>

        <UL>

          <LI>

            <A HREF="Row1_Column1.html">Photo 1</A>

            (<A HREF="Row2_Column1.html">Caption</A>)

          </LI>

          <LI>

            <A HREF="Row1_Column2.html">Photo 2</A>

            (<A HREF="Row2_Column2.html">Caption</A>)

          </LI>

          <LI>

            <A HREF="Row1_Column3.html">Photo 3</A>

            (<A HREF="Row2_Column3.html">Caption</A>)

          </LI>

      </UL>

    </BODY>

  </NOFRAMES>

</FRAMESET>

Iar exemplul următor foloseşte elemente FRAMESET īmbricate pentru a defini 2 frame-uri īn primul rīnd şi un frame īn rīndul al doilea:

<FRAMESET ROWS="*,100">

  <FRAMESET COLS="40%,*">

    <FRAME NAME="Menu" SRC="nav.html" TITLE="Menu">

    <FRAME NAME="Content" SRC="main.html" TITLE="Content">

  </FRAMESET>

  <FRAME NAME="Ad" SRC="ad.html" TITLE="Advertisement">

  <NOFRAMES>

    <BODY> ...

    </BODY>

  </NOFRAMES>

</FRAMESET>

2.    Seturi de frame-uri īmbricate

Frame-urile descrise de un document pot fi īmbricate oricīt de mult prin includerea unui element FRAMESET īn alt element FRAMESET.

Īn exemplul următor primul element FRAMESET (cel din „exterior“) divide tot spaţiul disponibil īn 3 coloane egale. Al doilea FRAMESET, din interiorul primului, divide a doua zonă īn rīnduri de īnălţime inegală.

<FRAMESET cols="33%, 33%, 34%">

     ...conţinutul primului frame ...

     <FRAMESET rows="40%, 50%">

        ... conţinutul celui de al doilea frame, primul rīnd ...

        ... conţinutul celui de al doilea frame, al doilea rīnd ...

     </FRAMESET>

     ... conţinutul celui de al treilea frame ...

</FRAMESET>

 

 

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ă.

 

Elementul FRAME

Sintaxa:

<FRAME>

Atribute posibile:

·        NAME=CDATA (numele frame-ului)

·        SRC=URI (conţinutul frame-ului)

·        LONGDESC=URI (descriere lungă a frame-ului)

·        FRAMEBORDER=[ 1 | 0 ] (marginea frame-ului)

·        MARGINWIDTH=Pixels (lăţimea marginii)

·        MARGINHEIGHT=Pixels (īnălţimea marginii)

·        NORESIZE (dezactivează posibilitatea de redimensionare a frame-ului)

·        SCROLLING=[ yes | no | auto ] (posibilitatea de scroll)

·        atribute core

Conţine:

·      vid (nu conţine nimic)

Conţinut īn:

·      FRAMESET

Descriere:

Acest element defineşte un frame – un subspaţiu dreptunghiluar dintr-un document cu frame-uri (dintr-un set de frame-uri). Fiecare element FRAME trebuie să apară īntr-un element FRAMESET care īi defineşte dimensiunea.

Atributul SRC oferă adresa (URI) de unde se va īnărca conţinutul frame-ului, care este, īn mod tipic, un document HTML. Dacă este īnsă o imagine, o secvenţă video sau un alt obiect similar şi acesta nu poate fi descris īn mod adecvat cu atributul TITLE al lui FRAME, atunci autorul paginii respective va trebui să folosescă atributul LONGDESC pentru a oferi a adresă (URI) a descrierii HTML a obiectului respectiv. Nu se recomandă īnsă această metodă, pentru a se permite o indexare eficientă de către motoarele de căutare, precum şi o utilizare accesibilă īn cazule browsere-lor nevizuale.

Atributul NAME dă un nume frame-ului respectiv pentru a putea fi utilizat cu atributul TARGET al elementelor A, BASE, FORM şi LINK. Valoarea acestui atribut trebuie să īnceapă cu un caracter din domeniul A-Z sau a-z. Aceasta trebuie să fie „citibil㓠şi să se bazeze pe conţinutul frame-ului respectiv. De exemplu NAME=left este nerecomandat, īntrucīt nu spune nimic despre ce se găseşte īn frame-ul respectiv, īn timp ce NAME=nav este şi aceasta nerecomandată, nefiind suficient de clară (nu este „citibilă“). Mult mai sugestivă este o atrbuire de genul NAME=Content sau NAME=Navigation. Şi atributul TITLE poate fi, de asemenea, folosit pentru a oferi un titlu mai lung pentru frame, dar acesta nu este suportat de toate browserele.

Atributele prezentaţionale acceptate pot fi īnlocuite de style-sheet-uri (şi e recomandabil să fie aşa), dar sīnt, īncă, mai mult suportate de browsere.

Atributul FRAMEBORDER specifică dacă un frame are (valoarea 1) sau nu (valoarea 0) margine vizibilă. Valoarea implicită este 1. Acest atribut poate fi suprapus de cel al frame-urilor adiacente. Un frame care nu are margine nu poate fi nici redimensionat.

Atributele MARGINWIDTH şi MARGINHEIGHT definesc numărul de pixeli folosiţi ca margini stīnga/dreapta şi, respectiv, sus/jos. Valorile trenuie să fie mai mari ca 1 pixel, iar atributul boolean NORESIZE īmpiedică utilizatorul să redimensioneze frame-ul.

Atributul SCROLLING specifică dacă se vor oferi scroll-bar-uri pentru frame-uri. Valoarea implicită (auto) le generează atunci cīnd este cazul. Valoarea yes le afisează tot timpul, iar valoarea no le suprimă, chiar cīnd sīnt necesare.

Exemplu:

        Fie următorul document cu frame-uri:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"

          "http://www.w3.org/TR/REC-html40/frameset.dtd">

<HTML>

<HEAD>

<TITLE>A frameset document</TITLE>

</HEAD>

<FRAMESET cols="33%,33%,33%">

  <FRAMESET rows="*,200">

      <FRAME src="contents_of_frame1.html" scrolling="no">

      <FRAME src="contents_of_frame2.gif"

             marginwidth="10" marginheight="15" noresize>

  </FRAMESET>

  <FRAME src="contents_of_frame3.html" frameborder="0">

  <FRAME src="contents_of_frame4.html" frameborder="0">

</FRAMESET>

</HTML>

 

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>

 

Elementul NOFRAMES

Sintaxa:

<NOFRAMES>... </ NOFRAMES >

Atribute posibile:

·      atribute comune

Conţine:

·        Īn HTML 4.0 Transitional: elemente inline, elemente tip block level

·        Īn HTML 4.0 Frameset: un element BODY care trebuie să nu conţină nici un NOFRAMES

Conţinut īn:

·        APPLET, BLOCKQUOTE, BODY, BUTTON, CENTER, DD, DEL, DIV, FIELDSET, FORM, FRAMESET, IFRAME, INS, LI, MAP, NOSCRIPT, OBJECT, TD, TH

Descriere:

Acest element descrie conţinutul unui document ce trebuie afişat cīnd frame-urile nu sīnt afişate. NOFRAMES este folosit īn mod tipic īntr-un document cu frame-uri (ce defineşte un frameset) pentru a oferi informaţia care trebuie afişată de browser-ele care nu suportă frame-uri.

Cīnd este folosit īntr-un FRAMESET, NOFRAMES trebuie să conţină un element BODY. Īn acest caz nu mai trebuie să apară īnsă nici un element NOFRAMES īn elementul BODY.

Este recomandabil să se ofere un element NOFRAMES care are semnificaţie, şi care, la limită, să conţină cel puţin un link spre o variantă de document fără frame-uri.

 

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.

 

Elementul IFRAME

Sintaxa:

<IFRAME>... </ IFRAME >

Atribute posibile:

·        SRC=URI (adresa URI a conţinutului frame-ului)

·        NAME=CDATA (numele frame-ului)

·        LONGDESC=URI (link către descrierea lungă)

·        WIDTH=Length (lăţimea frame-ului)

·        HEIGHT=Length (lăţimea frame-ului)

·        ALIGN=[ top | middle | bottom | left | right ] (alinierea frame-ului)

·        FRAMEBORDER=[ 1 | 0 ] (marginea frame-ului)

·        MARGINWIDTH=Pixels (lăţimea marginii)

·        MARGINHEIGHT=Pixels (īnălţimea marginii)

·        SCROLLING=[ yes | no | auto ] (posibilitatea de scroll)

·        atribute core

Conţine:

·      inline elements, block-level elements

Conţinut īn:

·      inline elements, block-level elements

Descriere:

Acest element defineşte un frame inline pentru a include obiecte externe (incluzănd alte documente HTML). IFRAME oferă un subset de funcţii ale lui OBJECT, singurul avantaj fiin acela că poate fi specificată ca TARGET de către alte legături. OBJECT este mai bine suportat decīt IFRAME.

Atributul SRC oferă adresa de unde se va īncărca conţinutul frame-ului – īn mod tipic un document HTML. Atributul opţional NAME specifică numele frame-ului permiţīnd astfel legături care să specifice acest frame ca ţintă īn care să se īncarce.

Conţinutul elementului IFRAME (ce este īntre tagul de īnceput şi cel de sfīrşit) este alternativă pentru browser-ele care nu suportă frame-uri. Pot apare aici elemente inline sau bloc: orice element de tip bloc este permis īn interiorul elementului ce-l conţine pe IFRAME. De exemplu un IFRAME īntr-un H1 nu poate conţine un H2, dar un IFRAME īntr-un DIV poate conţine orice element de tip bloc.

LONGDESC dă adresa unei resurse care descrie pe larg conţinutul frame-ului. Similar cu atributul elementului FRAME.

Atributele WIDTH şi HEIGHT specifică dimensiunile frame-ului īn pixeli sau procente din spaţiul disponibil, iar FRAMEBORDER stabileşte dacă se deseneză sau nu marginea. ALIGN specifică modul de aliniere faţă de conţinutul adiacent a frame-ului inclus. ALIGN=middle aliniază frame-ul faţă de linia de bază (baseline), iar pentru a centra īn document (pagină) frame-ul se recomandă includerea īntr-un bloc centrat: <P ALIGN=center><IFRAME SRC="foo.html" WIDTH=300 HEIGHT=100></IFRAME></P>. Celelalte valori (left şi right) indică un frame flotant, care poate fi plasat la marginea din stīnga sau dreapta, iar conţinutul să curgă pe līngă. MARGINWIDTH şi MARGINHEIGHT definesc un număr de pixeli ce se folosesc ca margine stīnga/dreapta, respectiv sus/jos, iar SCROLLING dacă sīnt permise barele scroll.

O mai mare flexibilitate īn prezentarea frame-urilor este dată de style-sheet-uri.

 

Exemplu:

Acest exemplu include documentul reteta.html şi oferă şi un conţinut alternativ:

<IFRAME SRC="reteta.html" TITLE="Reteta lui Petrisor">
<!-- Conţinut alternativ pentru browser-ele care nu suportă IFRAME -->

<H2>Reţeta lui Petrişor</H2>
<H3>Ingrediente</H3>
          ...

              </IFRAME>

 


Capitolul 7.

Utilizarea formulalelor interactive (forms)

 

Īn marea majoritate a documentelor (mai ales cele mai vechi), singura interactivitate dintre aplicaţie (browser) şi cel ce o foloseşte (utilizatorul) constă īn faptul că acesta decide ce legătură hypertext din respectivul document să urmărească.

Specificaţiile HTML includ īnsă şi o altă metodă (de asemenea simplă, primitivă) de creştere a gradului de interactivitate a unui document HTML: formularele (forms) care permit integrarea īn document a unor elemente preluate din interfaţa aplicaţiilor de tip Windows sau  X Windows – cīmpurile text statice şi editabile, butoanele radio, căsuţele de selecţie, listele de selecţie şi cīmpurile de editare. Interactivitatea se bazează pe faptul că acestea pot fi utilizate pentru introducerea unor date / strīngerea de informaţie necesară unei alte aplicaţii aflată īn "spatele" documentului, aplicaţie care va utiliza aceste date (introduse de utilizatorul browser-ului şi a documentului HTML) şi care hotărăşte ce anume şi cum anume va fi oferit clientului, ca rezultat al acestor informaţii noi, introduse cu ajutorul formularului. Modul de introducere a datelor īn formulare este similară cu modul de a introduce date īntr-o aplicaţie Windows.

Ca exemple tipice de acţiuni realizate cu ajutorul (prin intermediul formularelor) pot fi date:

·             o selecţie dintr-o bază de date (starea vremii dintr-o anumită regiune, de pildă)

·             un rezultat al unui sondaj (la care a participat cel ce a introdus datele tocmai a participat)

·             vizualizarea la un document cu acces restrīns

·             sau orice altceva care īndeplineşte criteriile de selecţie prezentate īn formular

Īn procesul de proiectare a unui document care utilizează un formular HTML există trei etape:

1.      designul şi implementarea (īn HTML) a formularului de intrare, care va fi vizualizat, explorat şi completat de utilizator

2.      scrierea unei aplicaţii care să interpreteze datele cu care utilizatorul completează formularul (aplicaţie care primeşte datele şi care este executată de un alt calculator decīt cel al utilizatorului, cel care rulează browser-ul – un server, de obicei cel care gazduieşte serverul HTTP şi care a oferit pagina cu formularul respectiv)

3.      designul şi implementarea documentului generat de aplicaţia de la punctul 2, ca răspuns la cererea utilizatorului. De regulă acest document este scris īn HTML, dar această restricţie nu este obligatorie.

Un formular HTML este o secţiune de document care conţine text, elemente HTML uzuale, dar şi elemente speciale numite controale (similare celor din interfaţa aplicaţiilor Windows – căsuţe de selecţie, butoane radio, etc), precum şi etichete ale acestor controale. Utilizatorii vor „completa“ formularul prin modificarea controalelor (sau conţinutului acestora prin introducerea unui text, selectarea unui element dintr-o listă, etc) īnainte ca acesta să fie trimis unui agent (program) pentru a fi prelucrat (de exemplu unui server Web, unui server de mail, etc).

Fiecare control are un nume dat de atributul NAME al acelui control, nume ce este definit (utilizabil, domeniul de definiţie) īn cadrul elementului FORM īn care acesta apare. Īn plus, fiecare control are o valoare iniţială şi o valoare curentă, fiecare fiind şiruri de caractere (valorile posibile şi restricţiile ce se aplică asupra acestora diferă de la un control la altul).

Īn general, valoarea iniţială poate fi specificată prin intermediul valorii atributului VALUE, dar la un element de tip TEXTAREA valoarea iniţială este dată de conţinutul acestuia, pe cīnd valoarea iniţială a unui element OBJECT este determinată de implementarea acestuia.

Valoarea curentă a unui control este iniţial setată la valoarea iniţială, apoi ea poate fi modificată de utilizator prin intermediul acţiunilor ce sīnt permise asupra controlului sau de scripturi.

Valoarea iniţială a unui control nu se modifică şi de aceea atunci cīnd un formular este resetat valorile curente ale fiecărui control sīnt readuse la valorile iniţiale. Dacă un control nu are specificată valoarea iniţială, efectul acestei operaţii este nedefinit (poate fi imprevizibil).

Cīnd un formular este transmis pentru a fi prelucrat, unele controale au numele legat de valoarea curentă, astfel că se va transmite agentului (programului) care-l prelucrează un set de dublete alcătuite din numele coontrolului şi valoarea sa curentă. Astfel de controale sīnt numite controale de succes (successful controls).

Limbajul HTML 4.0 defineşte următoarele tipuri de controale:

butoane

Autorii paginilor HTML pot crea 3 tipuri de butoane:

·        butoane submit: Cīnd este activat (apăsat), un astfel de buton trimite un formular unui agent (program) de prelucrare. Un formular poate conţine mai mult de un buton submit.

·        butoane reset: Cīnd este activat (apăsat), un astfel de buton resetează toate controalele la valorile lor inţiale.

·        butoane push: Aceste butoane nu au o acţiune implicită atunci cind sīnt activate (apăsate). Fiecare astfel de buton poate avea asociat un script de tip client-side şi generează evenimente care determină execuţia unor astfel de scripturi (de exemplu cīnd se apasă un astfel de buton se poate apela un script specific).

Autorii crează butoane cu unul din elementele BUTON sau INPUT, prima variantă fiin mai bogată īn opţiuni.

checkbox (căsuţe de marcare)

Checkbox-urile (căsuţele de marcare), ca şi butoanele radio, sīnt elemente cu 2 stări on/off (selectat/deselectat) care pot fi trecute dintr-o stare īn alte de către utilizitator. Un astfel de element (switch) este "on" (selectat) cīnd atributul selected al lui este setat. Cīnd un formular este trimis unui agent de prelucrare numai controalele checkbox  ce au valoarea "on" devin controale de succes. Īntr-un formular mai multe checkbox-uri pot avea acelaşi nume.

Pentru crearea unui checkbox se foloseşte elementul INPUT.

butoane radio

Butoanele radio sīnt exact ca checkbox-urile, cu excepţia faptului că atunci cīnd apar mai multe īntr-un formular sīnt mutual exclusive: cīnd un astfel de buton este "on" (selectat), toate celelalte care au acelaţi nume sīnt trecute automat pe "off".

Pentru crearea unui buton radio se foloseşte elementul INPUT.


meniuri

Menurile oferă utilizatorilor posibilitatea de a alege dintre mai multe opţiuni.

Pentru crearea unui control de tip meniu se foloseşte elementul SELECT īn combinaţie cu elementele OPTGROUP şi OPTION.

text input

Autorii pot crea două tipuri de controale pentru a permite utilizatorilor introducerea unui text. Elementul INPUT crează un control care are doar o singură linie disponibilă pentru introducerea textului, iar elementul TEXTAREA crează un control cu mai multe linii īn care se poate introduce text. Īn ambele cazuri textul ce se introduce devine valoarea curentă a controlului.

file select (selecţie de fişiere)

Acest control permite utilizatorilor să selecteze fişiere astfel īncīt conţinutul acestora să fie transmis odată cu formularul.

Pentru crearea unui control tip file select se foloseşte elementul INPUT.

controale ascunse (hidden controls)

Se pot crea controale care să nu fie afişate de către browsere, dar a căror valori să fie transmise odată cu formularul. Acest tip de control este util pentru a păstra informaţie īntre schimburile client/server ce altfel s-ar pierde, datorită naturii „fără stare“ (stateless) a protocolului HTTP.

Pentru crearea unui control ascuns se foloseşte elementul INPUT.

controale tip obiect (object controls)

Autorii pot insera obiecte generice astfel ca valorile asociate acestora să fie transmise īmpreună cu celelalte controale.

Pentru crearea unui control ascuns se foloseşte elementul OBJECT.

 

Elementele utilizate pentru crearea controalelor apar, īn general, īntr-un element FORM, dar pot apare şi īn afara declaraţiei acestui element cīnd sīnt utilizate pentru a crea interfeţe, caz īn care nu pot fi controale de succes.

 

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>

 

 

Elementul FORM

Sintaxa:

<FORM>... </FORM>

Atribute posibile:

·        ACTION=URI (handler-ul formularului / programul care īl va prelucra)

·        METHOD=[ get | post ] (metoda HTTP folosită la trimiterea formularului)

·        ENCTYPE=ContentType (tipul conţinutului / content type utilizat pentru trimitere)

·        ACCEPT-CHARSET=Charsets (codificarea suportată a setului caractere)

·        TARGET=FrameTarget (frame-ul īn care se afişează rezultatele)

·        ONSUBMIT=Script (scriptul care se execută după trimiterea formularului)

·        ONRESET=Script (scriptul care se execută după resetarea formularului)

·        atribute comune

Conţine:

·        Īn HTML 4.0 Strict, unul sau mai multe elemente SCRIPT sau elemente de tip bloc (block-level elements) cu excepţia lui FORM

·        In HTML 4.0 Transitional, elemente de tip inline sau elemente tip block-level, exceptīnd FORM

Conţinut īn:

·        APPLET, BLOCKQUOTE, BODY, CENTER, DD, DEL, DIV, FIELDSET, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH

Descriere:

Orice formular interactiv īncepe cu tagul <FORM> şi se termină cu </FORM>, iar undeva īn interiorul formularului se găsesc tag-urile (elementele) care definesc controalele (INPUT, SELECT, TEXTAREA şi BUTON) prin intermediul cărora utilizatorul interacţionează cu acesta, precum şi butoanele „speciale“ SUBMIT şi, opţional, RESET care acţionează asupra formularului ca entitate.

Cele mai importante atribute ale tag-ului sīnt ACTION (acţiune) şi METHOD (metodă), astfel īncīt tag-ul de īnceput apare de forma:

          <FORM ACTION="acţiune" METHOD="metodă">

Valorile lui ACTION specifică natura acţiunii, care va avea loc printr-un program care va fi executat de serverul care este gazdă pentru document. Acest program va trebui să preia datele din formular şi să le prelucreze. Astfel:

· ACTION="URL" specifică URL-ul programului care va fi executat, de obicei un program CGI sau un servlet Java.

· ACTION="mailto: adresă@domeniu" specifică un program de expediere a conţinutului formularului. Această acţiune nu este īnsă suportată de toate browserele (de exemplu Microsoft Internet Explorer 3.x) care, īn acest caz, īn mod tipic, vor deschide o fereastră de compoziţie a unui mesaj email. Īn afara acestor neajunsuri, lipsa unui feed-back imediat face această metodă de acţiune nu foarte recomandată pentru a fi utilizată.

Atributele METHOD şi ENCTYPE specifică metoda utilizată pentru a trimite datele formularului serverului care gazduieşte programul specificat īn ACTION.

Cīnd metoda este get (implicită), datele formularului sīnt transmise ca o cerere HTTP GET cu ?form_data adăugat la adresa URI specificată de atributul ACTION. Utilizarea metodei get permite ca transmiterea (datelor) formularului să fie conţinută complet īn URL. Avantajul este ca se pot crea bookmark-uri („semne de carte“) pe astfel de adrese, dar are şi dezavantajul că nu poate conţine caractere non-ASCII ca "é" and "©". Cea mai importantă limitare este dată de cantitatea de date care se pot transmite şi care depinde de lungimea maximă a adresei URL permisă de browser şi server. De aceea, pentru siguranţă, orice formular care conţine caractere non-ASCII sau mai mult de 100 caractere trebuie să utilizeze METHOD=post.

Cīnd metoda este post, datele formularului sīnt transmise ca o cerere HTTP POST cu datele formularului īn corpul cererii. Majoritatea browserelor sīnt incapabile să creeze un bookmark pe o astfel de cerere, dar posibilitatea transmiteri de caractere non-ASCII şi posibilitatea de transmite date oricīt de mari sīnt avantajele faţă de GET.

Atributul ENCTYPE specifică tipul conţinutului (content type) folosit īn transmiterea formularului şi are ca valoare implicită application/x-www-form-urlencoded. Acesta are ca rezultat perechi nume/valoare trimise serverului sub forma name1=value1&name2=value2..., cu caracterul spaţiu īnlocuit de "+" şi cu caracterele speciale (ca, de exemplu, "#") īnlocuite de "%HH", unde HH este codul hexa al caracterului respectiv. Sfīrşitul de linie (line break) este codificat ca "%0D%0A" –  un carriage return urmat de un line feed.

Dacă formularul conţine un element INPUT cu atributul TYPE=file, atunci este preferabil să se folosească un ENCTYPE de tipul multipart/form-data iar METHOD să fie post.

Pentru preluarea datelor din formularele transmise la server autorii nu trebuie să cunoască exact formatul īn care sīnt codificate datele, īntrucīt există biblioteci publice, free (ca de exemplu CGI.pm) care oferă rutine ce preiau transparent ceea ce se trimite cu get sau post (ca application/x-www-form-urlencoded sau multipart/form-data). Se poate şi simula o astfel de transmitere cu unelte ca cg-eye care permit vizualizarea imediat, „īn oglind㓠a datelor ce s-ar trimite.

Atributul ACCEPT-CHARSET specifică lista de codificări acceptate de handlerul formularului (programul care-l primeşte şi prelucrează). Valoarea acestui atribut este o listă de seturi de caractere ("charsets") separate cu virgulă sau blanc. Valoarea implicită este UNKNOWN şi este considerată, de obicei, codificarea folosită pentru transmiterea documentului ce conţine formularul.

Atributul TARGET este folosit īn cazul frame-urilor pentru a specifica īn care frame se afişează răspunsul. Dacă nu e specificat nici un frame (sau numele nu există), valoarea implicită este o fereastră nouă. Se pot folosi şi numele speciale de frame-uri:

·        _blank        – ferastră nouă, fără nume

·        _self           – răspunsul se afişează īn frame-ul curent (util pentru suprascrierea atributului

                           BASE al elementului TARGET)

·        _parent       – răspunsul se afişează īn părintele imediat din FRAMESET

·        _top           – răspunsul se afişează īn fereastra īntreagă, fără frame-uri

FORM mai are şi atribute pentru a specifica acţiuni de tip „client-side scripting“ īn cazul anumitor evenimente (ONSUBMIT şi ONRESET).

 

 

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>

Elementul INPUT

Sintaxa:

          <INPUT>

Atribute posibile:

·        TYPE=[ text | password | checkbox | radio | submit | reset | file | hidden | image | button ]

·        NAME=CDATA (numele care se va asocia elementului)

·        VALUE=CDATA (valoarea introdusă)

·        CHECKED (buton radio sau checkbox setat/apăsat)

·        SIZE=CDATA (număr sugerat de caractere pentru introducerea unui text)

·        MAXLENGTH=Number (număr maxim de caractere pentru introducerea unui text)

·        SRC=URI (sursa imaginii)

·        ALT=CDATA (text alternativ pentru o imagine)

·        USEMAP=URI (hartă senzitivă de tip client-side image map)

·        ALIGN=[ top | middle | bottom | left | right ] (alinierea imaginii)

·        DISABLED (element inactiv/dezactivat)

·        READONLY (previne modificări asupra elementului)

·        ACCEPT=ContentTypes (tipul de media folosit la transmiterea fişierelor)

·        ACCESSKEY=Character (shortcut key)

·        TABINDEX=Number (poziţia īn ordinea de parcurgere cu TAB)

·        ONFOCUS=Script (elementul a primit focusul)

·        ONBLUR=Script (elementul a pierdut focusul)

·        ONSELECT=Script (elementul de tip text a fost selectat)

·        ONCHANGE=Script (valoarea elementului a fost modificată)

·        atribute comune

Conţine:

·      Nimic

Conţinut īn:

·      block-level elements, inline elements, cu excepţia lui BUTTON

Descriere:

Acest element defineşte un control al unui formular (form control) pentru a permite unui utilizator să introducă date. El este utilizat de obicei īn cadrul lui FORM, dar HTML 4.0 permite şi folosirea lui īn orice element block-level sau inline (cu excepţia lui BUTTON). De remarcat, totuşi că Netscape Navigator NU va afişa nici un element INPUT īn afara unui FORM.

Cīnd formularul este transmis valoarea curentă a fiecărui element INPUT din FORM este trimisă sub forma unei perechi name/value. Atributul NAME oferă numele ce va fi folosit pentru identificarea controlului respectiv. Tipul valorii depinde de tipul elementului INPUT.

Un formular care include un element INPUT trebuie să specifice īn tagul elementului FORM METHOD=post şi ENCTYPE="multipart/form-data". Nu toate browserele permit trimiterea, odată cu formularul şi a conţinutului unui fişier. Īn acest caz trebuie utilizate alte metode:

Exemplu:

Īn exemplul următor se trimite un document HTML pemtru a fi validat. Numele lui se cere de la utilizator prin intermediul unui formular:

<FORM METHOD=post ACTION="/cgi-bin/validate.cgi" ENCTYPE="multipart/form-data">

<P>

Selectaţi un document HTML pentru a fi trimis spre validare. Dacă browser-ul Dvs. nu suportă această metodă folosiţi <A HREF="methods.html">metodele alternative de validare</A>.</P>

<P><INPUT TYPE=file NAME="html_file" ACCEPT="text/html"></P>

<P><INPUT TYPE=submit VALUE="Validate it!"></P>

</FORM>

Elementul INPUT poate avea mai mulţi parametri, cel mai important fiind TYPE, fiecare element TYPE avīnd proprii lui parametri pentru definirea īn continuare a elementului. Parametrul TYPE specifică ce fel de INPUT se aşteaptă de la utilizator şi poate primi următoarele valori:

Valoare

Descriere

Text

Permite utilizatorului să introducă un singur rīnd de text

Password

La fel ca şi Text, dar caracterele tastate de utilizator au ca ecou asteriscul „*“ sau un alt semn echivalent menit să "ascundă" textul introdus

Check box

Implementează un buton care poate fi setat activ/inactiv (īnchis/deschis)

Radio button

Permite implementarea unui grup de butoane īn care, la un moment dat, numai unul poate fi activ (setat/deschis)

Button

Determină apariţia unui buton care poate fi apăsat

Reset

Determină apariţia unui buton care, cīnd este selectat, resetează toate celelalte elemente ale formularului la valorile lor implicite

Submit

Afişează un buton care, dacă este apăsat, transmite formularul URL-ului specificat īn ACTION

Image

Afişează un buton Submit grafic (cu o imagine)

File

Permite selecţia unui fişier

Hidden

Invizibil īn browser

Exemplu:

              <INPUT TYPE="CHECKBOX" NAME="TEST">

Dacă nu este specificat TYPE īn elementul INPUT, valoarea implicită atribuită este TYPE=TEXT.

Atributul NAME este un parametru cerut de toate elementele INPUT, cu excepţia elementelor SUBMIT şi RESET. Parametrul NAME crează un nume generic care va fi asociat cu răspunsul utilizatorului şi permite serverului să interpreteze formularul pentru a determina corelaţia dintre fiecare răspuns al utilizatorului şi elementele formularului. NAME poate avea orice valoare.

Exemplu:

          NAME="cīini"                 –  īntr-o selecţie de rase de cīini

          NAME="profesii"           –  īntr-o selecţie de profesii

          NAME="adresă"            –  pentru un cīmp text

 

     Elementul tip text (TYPE=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>

     Butoane Radio (TYPE=RADIO)

     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>

Elemente tip push-buton (TYPE=BUTTON)

     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ă.

 

     Butonul RESET (TYPE=RESET)

     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.

 

     Butonul SUBMIT (TYPE=SUBMIT)

     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.

 

     Butonul grafic SUBMIT (TYPE=IMAGE)

     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ă.

 

     Selecţia unui fişier (TYPE=FILE)

     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.

 

     Elemente ascunse (TYPE=HIDDEN)

     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">

     Atribute comune tuturor tipurilor de INPUT

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

 

Elementul BUTTON

Sintaxa:

          <BUTTON> ... </BUTTON>

Atribute posibile:

·        NAME=CDATA (numele care se va asocia elementului)

·        VALUE=CDATA (valoarea introdusă)

·        TYPE=[ submit | reset | button ] (tipul butonului)

·        DISABLED (element inactiv/dezactivat)

·        ACCESSKEY=Character (shortcut key)

·        TABINDEX=Number (poziţia īn ordinea de parcurgere cu TAB)

·        ONFOCUS=Script (elementul a primit focusul)

·        ONBLUR=Script (elementul a pierdut focusul)

·        atribute comune

Conţine:

·      Elemente inline exceptīnd A, INPUT, SELECT, TEXTAREA, LABEL, BUTTON, IFRAME

·      Elemente block-level exceptīnd FORM, ISINDEX, FIELDSET

Conţinut īn:

·      Elemente block-level, elemente inline, cu excepţia lui BUTTON

Descriere:

Acest element crează butoane īntr-un mod similar cu INPUT, dar oferă mai multe posibilităţi de afişare (mai multe etichete, asocierea cu imagini, conţinut). Mai mult, toate browser-ele sugerează pentru aceste butoane apăsarea, spre deosebire de cele definite cu INPUT care pot fi „plate“. Totuşi elementul este nou īn HTML 4.0 şi există browsere care īncă nu-l suportă!

Butoanele care pot fi definite cu acest element sīnt submit button (implicit), reset button şi push button şi sīnt stabilite de valoarea lui TYPE. Atributele NAME şi VALUE determină perechea name/value trimisă la server, oferind posibilitatea de avea mai multe butoane submit īntr-un formular.

Exemple de tipuri de butoane:

·         <BUTTON NAME=submit VALUE=modify ACCESSKEY=M>Modificare </BUTTON>
<BUTTON NAME=submit VALUE=continue ACCESSKEY=C>Continuare </BUTTON>

·         <BUTTON ACCESSKEY=S>Submit <IMG SRC="checkmark.gif" ALT="&#10004;"></BUTTON>
<BUTTON TYPE=reset ACCESSKEY=R>Reset <IMG SRC="x.gif" ALT="&#10008;"></BUTTON>

·        <BUTTON TYPE=button ID=toggler ONCLICK="toggle()" ACCESSKEY=H>Hide </BUTTON>

 

Atributul DISABLE face butonul inaccesibil: nu se mai poate apăsa, nu mai primeşte focusul şi este sărit cīnd se navighează cu TAB.

Atributele ACCESSKEY, TABINDEX şi cele care specifică acţiuni de scriptare (ONFOCUS şi ONBLUR) se folosesc la fel ca şi la INPUT.

 

Exemplu:

Acest exemplu īl extinde pe cel de la INPUT, dar crează butoanele Submit şi Reset cu BUTON īn locul lui INPUT. Butoanele pot conţine imagini (inserate cu elementul IMG) şi se recomandă folosirea atributului ALT al acestora pentru cazul īn care nu sīnt afişate.

<FORM action="http://somesite.com/prog/adduser" method="post">

    <P>

    First name: <INPUT type="text" name="firstname"><BR>

    Last name: <INPUT type="text" name="lastname"><BR>

    email: <INPUT type="text" name="email"><BR>

    <INPUT type="radio" name="sex" value="Male"> Male<BR>

    <INPUT type="radio" name="sex" value="Female"> Female<BR>

    <BUTTON name="submit" value="submit" type="submit">

          Send<IMG src="/icons/wow.gif" alt="wow">

    </BUTTON>

    <BUTTON name="reset" type="reset">

          Reset<IMG src="/icons/oops.gif" alt="oops">

    </BUTTON>

    </P>

 </FORM>

 


Exemplu ilegal:

De remarcat că este ilegal să se asocieze o hartă senzitivă cu un IMG care apare ca şi conţinut al unui element BUTTON. De aceea exemplul următor este ILEGAL!

<BUTTON>

  <IMG src="foo.gif" usemap="...">

</BUTTON>

 

Elementul TEXTAREA

Sintaxa:

          <TEXTAREA> ... </TEXTAREA>

Atribute posibile:

·        NAME=CDATA (numele care se va asocia elementului)

·        ROWS=Number (număr de rīnduri)

·        COLS=Number (număr de coloane)

·        DISABLED (element inactiv/dezactivat)

·        READONLY (previne modificări asupra elementului)

·        ACCESSKEY=Character (shortcut key)

·        TABINDEX=Number (poziţia īn ordinea de parcurgere cu TAB)

·        ONFOCUS=Script (elementul a primit focusul)

·        ONBLUR=Script (elementul a pierdut focusul)

·        ONSELECT=Script (elementul de tip text a fost selectat)

·        ONCHANGE=Script (valoarea elementului a fost modificată)

·        atribute comune

Conţine:

·      Text (incluzīnd entităţi)

Conţinut īn:

·      Elemente block-level, elemente inline, cu excepţia lui BUTTON

Descriere:

TEXTAREA crează un control pentru introducerea unui text multi-linie, valoarea iniţială fiind afişată de browser la īnceput īn interiorul controlului (nu trebuie să conţină taguri HTML). El este utilizat de obicei īn cadrul lui FORM, dar HTML 4.0 permite şi folosirea lui īn orice element block-level sau inline (cu excepţia lui BUTTON). De remarcat, totuşi că Netscape Navigator NU va afişa nici un element TEXTAREA īn afara unui formular definit cu FORM.

Acest element oferă posibilitatea de a accepta de la utilizator un bloc de text, astfel că acesta īşi poate "lipi" un document īntreg īntr-o pagină HTML. Elementul TEXTAREA nu este o comandă de tip INPUT ci una de cu totul alt tip. Ca şi elementele INPUT, regiunile text au un nume care permite identificarea acestui cīmp de către server, care va primi informaţia de formă nume=conţinut.

Elementul TEXTAREA are parametrii (obligatorii) ROWS şi COLS care specifică dimensiunile ferestrei afişate utilizatorului, exprimate īn număr de caractere pe orizontală, respectiv verticală. Aceasta nu īnseamnă o limitare a utilizatorului īn privinţa volumului de informaţie care poate fi tastat deoarece umplerea ferestrei determină apariţia unor bare de derulare. Se limitează totuşi cantitatea totală de text ce se poate introduce (īn practică) la 32 ... 64 KB. Limitarea finală este făcută de scriptul CGI sau de servletul Java care primeşte formularul.

Elementul TEXTAREA nu este vid, ceea ce īnseamnă că trebuie un terminator </TEXTAREA>. Ceea ce se află īntre cele două etichete va apare ca text implicit īn cīmpul definit.

Atributul READONLY, nou īn HTML 4.0 şi destul de puţin suportat, determină afişarea unui text nemodificabil. Diferenţa faţă de textul simplu este ca acesta este trimis serverului odată cu formularul.

     Atributul DISABLED se comportă ca şi la INPUT, transformīnd textul īn read-only.

Atributele ACCESSKEY, TABINDEX şi cele care specifică acţiuni de scriptare (ONFOCUS, ONBLUR, ONSELECT şi ONCHANGE) se folosesc la fel ca şi la INPUT.

Exemplu:

Acest exemplu crează un control TEXTAREA de 20 de rīnduri şi 80 de coloane, avīnd iniţial 2 linii de text. Acest control este urmat de două butoane: Submit şi Reset.

<FORM action="http://somesite.com/prog/text-read" method="post">

   <P>

   <TEXTAREA name="thetext" rows="20" cols="80">

          Prima linie a textului iniţial.

          A doua linie a textului iniţial.

   </TEXTAREA>

   <INPUT type="submit" value="Send">

   <INPUT type="reset">

   </P>

</FORM>

 

 

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:

 

Elementul SELECT

Sintaxa:

          <SELECT> ... </SELECT>

Atribute posibile:

·        NAME=CDATA (numele care se va asocia elementului)

·        MULTIPLE (permite selecţii multiple)

·        SIZE=Number (numărul de opţiuni vizibile)

·        DISABLED (element inactiv/dezactivat)

·        TABINDEX=Number (poziţia īn ordinea de parcurgere cu TAB)

·        ONFOCUS=Script (elementul a primit focusul)

·        ONBLUR=Script (elementul a pierdut focusul)

·        ONCHANGE=Script (valoarea elementului a fost modificată)

·        atribute comune

Conţine:

·      Unul sau mai multe elemente OPTGROUP sau OPTION

Conţinut īn:

·      elemente de tip block-level, elemente inline, cu excepţia lui BUTTON

Descriere:

Acest element defineşte un control pentru selecţia dintr-o listă de opţiuni. El este utilizat de obicei īn cadrul lui FORM, dar HTML 4.0 permite şi folosirea lui īn orice element block-level sau inline (cu excepţia lui BUTTON). De remarcat, totuşi că Netscape Navigator NU va afişa nici un element SELECT īn afara unui formular definit cu FORM.

Elementul SELECT conţine unul sau mai multe elemente OPTGROUP sau OPTION pentru a oferi un meniu de posibilităţi de alegere pentru utilizator. Fiecare opţiune este conţinută īntr-un element OPTION, iar acestea pot fi grupate logic cu OPTGROUP. Valoarea atributului NAME va fi trimisă serverului ca identificator al controlului (īmpreună cu opţiunea selectată).

Elementul SELECT are un parametru opţional, SIZE. Dacă acest parametru lipseşte, valoarea lui implicită este l, lista va fi de tip drop-down şi din listă poate fi selectat doar un singur element. Utilizarea este pentru situaţii similare celor rezolvate de butoanele radio. Dacă parametrul este mai mare decīt 1, lista este prezentată īntr-o fereastră inserată, valoarea lui SIZE indicīnd cīte elemente pot fi văzute simultan. Dacă lista este mai lungă, celelalte elemente pot fi văzute cu ajutorul barei de derulare (scroll) care apare īn dreapta listei.

Un alt parametru opţional pentru <SELECT> este MULTIPLE. Parametrul nu are o valoare numerică asociată, iar prezenţa lui asigură doar posibilitatea selecţiei mai multor elemente ale listei simultan (cu ajutorul tastei CTRL) care vor fi trimise la Submit, ca īn exemplul următor.

<P>Selectaţi una sau mai multe secţiuni īn care doriţi să căutaţi:

<SELECT NAME=sections MULTIPLE>

<OPTION>Web Authoring Reference</OPTION>
<OPTION>FAQ Archives</OPTION>
<OPTION>Design Elements</OPTION>
<OPTION>Tools</OPTION>
<OPTION>Feature Article</OPTION>

</SELECT>

Atributele DISABLED şi TABINDEX, precum şi cele legate de acţiunile de scriptare pe anumite evenimente sīnt similare cu cele de la INPUT.

Exemplu:

Exemplul următor crează un meniu de 5 opţiuni (5 elemente OPTION), afişat īntr-o fereastră īn care sīnt vizibile simultan 3 opţiuni (SIZE=3), prima fiind selectată implicit (OPTION SELECTED>Roşu), cu posibilitatea de a selecta mai multe opţiuni (MULTIPLE).

<FORM>

Selectaţi culorile favorite din următoare listă:

<SELECT NAME="culori" SIZE=3 MULTIPLE>

<OPTION SELECTED>Roşu

<OPTION>Verde

<OPTION>Albastru

<OPTION>Turcoaz

<OPTION>Magenta

</SELECT>

</FORM>

 

 

Elementul OPTGROUP

Sintaxa:

          <OPTGROUP> ... </OPTGROUP>

Atribute posibile:

·        LABEL=Text (eticheta grupului de opţiuni)

·        DISABLED (grupul de opţiuni este dezactivat)

·        atribute comune

Conţine:

·      Unul sau mai multe elemente OPTION

Conţinut īn:

·      elementul SELECT

Descriere:

Acest element defineşte un grup de opţiuni īntr-un meniu definit cu SELECT şi trebuie să conţină cel puţin un element OPTION. Atributul LABEL este obligatoriu, identifică grupul de opţiuni, fiind afişat de browser şi pentru utilizator. El trebuie să descrie grupul de opţiuni grupate dpdv logic īmpreună cu atributele LABEL ale fiecărei opţiuni īn parte.

OPTGROUP nu este foarte bine suportat de toate browserele, dar cele care nu īl recunosc nu crează nici o problemă. Cele care īl suportă permit o afişare mai compactă prin intermediul meniurilor cascadate (submeniuri). Cascadarea este īnsă īn HTML 4.0 doar pe un singur nivel (nu sīnt permise OPTGROUP īn OPTGROUP)!

Atributul DISABLED face īntregul grup de opţiuni inactive (le dezactivează), acestea neputīnd fi selectate şi nici trimise la server odată cu formularul.

Exemplu:

Exemplul următor se poate folosi pentru a cere utilizatorului informaţii despre browser-ul pe care īl utilizează mai frecvent. Se utilizează OPTGROUP pentru a grupa informaţiile legate de acelaşi tip de browser (Netscape Navigator, Microsoft Internet Explorer, Opera sau altul).

 

<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>

 

 

Elementul OPTION

Sintaxa:

          <OPTION > ... </OPTION >

Atribute posibile:

·        VALUE=CDATA (valoarea opţiunii)

·        SELECTED (opţiune iniţial selectată)

·        DISABLED (dezactivată/inactivă)

·        LABEL=Text (eticheta opţiunii)

·        atribute comune

Conţine:

·      Text (inclusiv entităţi)

Conţinut īn:

·      elementul SELECT sau OPTGROUP

Descriere:

Acest element defineşte o opţiune (un elemnt de meniu) īntr-un meniu (listă de opţiuni). Valoarea acestei opţiuni este cea care va fi trimisă la Submit şi este specificată cu atributul VALUE. Dacă lipseşte, se consideră valoare a acestui element conţinutul lui OPTION.

Atributul boolean SELECTED defineşte o opţiune ce este iniţial selectat㠖 preselectată (a se vedea paragraful anterior relativ la elemente preselectate). Există posibilitatea de a stabili ca opţiune preselectată o valoare fără semnificaţie (dummy) pentru a fi siguri că utilizatorul selectează o opţiune şi nu trece doar peste meniu. De exemplu, starea civilă se poate cere astfel:

<SELECT NAME="marital_status">

  <OPTION SELECTED VALUE="">Select...</OPTION>

  <OPTION>Single</OPTION>

  <OPTION>Married</OPTION>

  <OPTION>Separated</OPTION>

  <OPTION>Divorced</OPTION>

  <OPTION>Widowed</OPTION>

</SELECT>

Atributul DISABLED, deşi nu este suportat global, determină transformarea unei opţiuni īn opţiune inactivă (nu poate fi selectată, nu este trimisă odată cu formularul).

Atributul LABEL specifică eticheta unei opţiuni, care altfel (implicit) este conţinutul elementului. Se recomandă folosirea ei pentru că permite utilizarea mult mai uşoară a grupării cu OPTGROUP, fără a sacrifica compatibilitatea cu browser-ele care nu suportă acest element.

Exemplu:

<P>Which Web browser do you use most often?

  <SELECT NAME=browser>

    <OPTGROUP LABEL="Netscape Navigator">

      <OPTION LABEL="4.x or higher">Netscape Navigator 4.x</OPTION>

      <OPTION LABEL="3.x">Netscape Navigator 3.x</OPTION>

      <OPTION LABEL="2.x">Netscape Navigator 2.x</OPTION>

      <OPTION LABEL="1.x">Netscape Navigator 1.x</OPTION>

    </OPTGROUP>

    <OPTGROUP LABEL="Microsoft Internet Explorer">

      <OPTION LABEL="4.x or higher">Microsoft Internet Explorer 4.x</OPTION>

      <OPTION LABEL="3.x">Microsoft Internet Explorer 3.x</OPTION>

      <OPTION LABEL="2.x">Microsoft Internet Explorer 2.x</OPTION>

      <OPTION LABEL="1.x">Microsoft Internet Explorer 1.x</OPTION>

    </OPTGROUP>

    <OPTGROUP LABEL="Opera">

      <OPTION LABEL="3.x or higher">Opera 3.x or higher</OPTION>

      <OPTION LABEL="2.x">Opera 2.x</OPTION>

    </OPTGROUP>

    <OPTION>Other</OPTION>

  </SELECT>

</P>

 

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>

 

Elementul LABEL

Sintaxa:

          <LABEL> ... </LABEL>

Atribute posibile:

·        FOR=IDREF (cīmpul formularului asociat)

·        ACCESSKEY=Character (shortcut key)

·        ONFOCUS=Script (elementul a primit focusul)

·        ONBLUR=Script (elementul a pierdut focusul)

·        atribute comune

Conţine:

·      elemente inline cu excepţia lui LABEL

Conţinut īn:

·      elemente de tip block-level, elemente inline, cu excepţia lui BUTTON

Descriere:

Acest element asociază o etichetă (label) cu un control al unui formular. Prin această asociere autorii paginilor Web oferă sugestii importante utilizatorilor de browsere auditive, iar celor care folosesc browsere vizuale li se permite duplicarea unor caracteristici ale interfeţei utilizator (GUI), cum ar fi, de exemplu, posibilitatea de a apăsa o etichetă (text) pentru a selecta un buton radio sau o căsuţă de marcare.

Fiecare element LABEL este asociat cu exact un control. Conţinutul elementului este eticheta controlului şi poate include elemente inline, ca de exemplu IMG sau STRONG.

Atributul FOR specifică īn mod explicit controlul care se asociază cu LABEL. Valoarea lui FOR trebuie să se potrivească cu valoarea atributului ID al controlului asociat. Īn absenţa lui FOR, elementul LABEL trebuie să conţină controlul asociat! Această metodă (de asociere implicită) funcţionează īn majoritatea cazurilor, dar devine inutulizabilă cīnd eticheta şi controlul asociat sīnt īn celule diferite de tabel, īn paragrafe sau diviziuni diferite .

Atributul ACCESSKEY, precum şi cele legate de acţiunile de scriptare pe anumite evenimente sīnt similare cu cele de la INPUT.

Exemplu:

Acest exemplu ilustrează ambele metode de asociere a unei etichete cu un control: asocierea explicită (cu FOR) şi asocierea implicită (control conţinut de LABEL):

<TABLE>

  <TR>


    <TD>

      <LABEL FOR=user ACCESSKEY=U>User</LABEL>

    </TD>

    <TD>

      <SELECT NAME=user ID=user>

        <OPTION>Jean</OPTION>

        <OPTION>Kim</OPTION>

        <OPTION>Brian</OPTION>

      </SELECT>

    </TD>

  </TR>

  <TR>

    <TD><LABEL FOR=passwd ACCESSKEY=P>Password</LABEL></TD>

    <TD><INPUT TYPE=password NAME=password ID=passwd></TD>

  </TR>

</TABLE>

<P>

  <LABEL ACCESSKEY=S>

    <INPUT TYPE=checkbox NAME=save VALUE=yes>

    Save user name and password in a cookie

  </LABEL>

</P>

<P>

  <LABEL ACCESSKEY=C>

    Comments to post:

    <TEXTAREA NAME=comments ROWS=8 COLS=50></TEXTAREA>

  </LABEL>

</P>

 

 

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.

 

 

Elementul FIELDSET

Sintaxa:

          <FIELDSET> ... </ FIELDSET >

Atribute posibile:

·        atribute comune

Conţine:

·      Un element LEGEND urmat de zero sau mai multe elemente de tip bloc sau in-line.

Conţinut īn:

·        APPLET, BLOCKQUOTE, BODY, CENTER, DD, DEL, DIV, FIELDSET, FORM, IFRAME, INS, LI, MAP, NOFRAMES, NOSCRIPT, OBJECT, TD, TH

Descriere:

Acest element defineşte un grup de controale īntr-un formular. Prin această operaţie de grupare, formularele se divid īn părţi mai mici, mai uşor de īntreţinut, utilizatorul putīndu-se orienta mai uşor, īmbunătăţind modul de utilizare atīt pentru browserele vizuale cīt şi pentru cele auditive.

Chiar dacă FIELDSET nu este suportat de toate browser-ele, el poate fi utilizat īn deplină siguranţă prin includerea lui īntre tagurile <P> şi </P>, sau prin inserarea unui tag P īnainte de FIELDSET, īn acest fel browser-ele care nu-l recunosc vor include conţinutul lui īntr-un element de tip bloc, separat de restul formularului.

Conţinutul lui trebuie să īnceapă cu un element LEGEND care să ofere un titlu (o explicaţie) pentru grupul de controale, apoi pot să apară oricīte elemente inline sau de tip bloc, inclusiv un alt element FIELDSET.

Exemplu:

Acest exemplu defineşte un formular pentru comanda unor informaţii (manuale): ghid HTML 3.2, ghid HTML 4.0 sau manual de referinţă CSS. Se cer datele clientului (numele, adresa de e-mail, adresa postală), se cer informaţii despre ceea ce se doreşte a se cumpăra şi apoi despre modalitatea de plată. Fiecare grup de informaţii se află īntr-un FIELDSET separat, fiecare avīnd un element LEGEND asociat. La sfīrşit se introduc cele 2 butoane obligatorii īntr-un formular (Submit şi Reset), trimiterea formularului făcīndu-se către un program CGI (order.cgi) aflat īn folderul /cgi.

 

<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>

 

Elementul LEGEND

Sintaxa:

          <LEGEND> ... </LEGEND>

Atribute posibile:

·        ACCESSKEY=Character (shortcut key)

·        ALIGN=[ top | bottom | left | right ] (alinierea relativă la FIELDSET)

·        atribute comune

Conţine:

·      elemente inline

Conţinut īn:

·        FIELDSET

Descriere:

Acest element defineşte un titlu (explicaţie) pentru un grup de controale definite cu FIELDSET. Elementul LEGEND trebuie să apară la īnceputul lui FIELDSET, īnainte de orice alt element. Chair dacă nu este suportat de toate browserele, poate fi utilizat īn siguranţă dacă este urmat imediat de un element de tip bloc. Pentru astfel de browsere se pot folosi elemente ca STRONG, B sau BIG pentru a sugera faptul că acela este titlul unui grup de controale.

Atributul ACCESSKEY se foloseşte la fel ca la INPUT, iar atributul (depăşit) ALIGN sugerează poziţia relativă faţă de FIELDSET. Valorile posibile sīnt: top, bottom, left, right. Chair dacă e depăşit, este interesant de remarcat că īn tehnica style-sheet-urilor nu există alternativă!

<FIELDSET>

  <LEGEND ACCESSKEY=C>Credit Card Information</LEGEND>

  <P>

    <LABEL ACCESSKEY=V>

      <INPUT TYPE=radio NAME=card VALUE=visa> Visa

    </LABEL>

    <LABEL ACCESSKEY=M>

      <INPUT TYPE=radio NAME=card VALUE=mc> MasterCard

    </LABEL>

    <BR>

    <LABEL ACCESSKEY=N>

      Number: <INPUT TYPE=text NAME=number>

    </LABEL>

    <BR>

    <LABEL ACCESSKEY=E>

      Expiry: <INPUT TYPE=text NAME=expiry>

    </LABEL>

  </P>

</FIELDSET>

 

 

6.    Procesarea datelor din formulare

 

1. Metode de transmitere a formularului

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".

 

2. Controalele de succes (successful controls) ale unui formular

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".

3. Procesarea datelor unui formular

Cīnd utilizatorul trimite un formular (prin activarea butonului Submit), browserul său realizează următorii paşi (următoarele acţiuni):

Pasul 1: Identificarea controalelor de succes (successful controls)

Pasul 2: Crearea unui set de date asociat formularului

Un set de date asociat unui formular este o secvenţă de perechi nume-control/valoare-curentă construită din controale de succes.

Pasul 3: Codificarea setului de date

Setul de date creat la pasul anterior este codificat īn conformitate cu tipul conţinutului (content type) specificat de atributul ENCTYPE al elementului FORM.

Pasul 4: Transmiterea setului de date codificat

Īn final setul de date astfel codificat este trimis de browserul client agentului de prelucrare (programului) desemnat de atributul ACTION, folosind protocolul specificat de atributul METHOD.

Această specificare nu acoperă toate metodele valide de trimitere sau tipurile de conţinut ce pot fi folosite cu formularele. Totuşi, browserele compatibile HTML 4.0 trebuie să suporte convenţiile stabilite īn următoarele cazuri:

·        Dacă metoda este "get" şi acţiunea (atributul ACTION) este o adresă (URI) HTTP, browserul ia valoarea atributului ACTION, adaugă un  „?“ la ea, iar apoi adaugă setul de date asociat cu formularul, stabilind tipul conţinutului (content type) la "application/x-www-form-urlencoded". Browserul urmează apoi noua legătura astfel creată. Īn acest scenariu, datele formularului sīnt restricţionate la codurile ASCII.

·        Dacă metoda este "post" şi acţiunea (atributul ACTION) este o adresă (URI) HTTP, browserul va genera o tranzacţie HTTP "post" folosind valoarea atributului ACTION şi un mesaj creat īn conformitate cu tipul conţinutului (content type) specificat de atributul ENCTYPE.

Pentru orice altă valoare a atributelor ACTION şi METHOD comportamentul este nespecificat. Browserele trebuie să afişeze răspunsul generat de tranzacţiile HTTP "get" şi "post".

 

4. Tipurile posibile de conţinut (content-type) pentru un formular

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—

 


Capitolul 8.

Alte elemente ale limbajului HTML

8.1. Formule matematice

Una din cele mai ambiţioase caracteristici aduse de specificaţiile HTML 3.0 este posibilitatea de a afişa formule matematice. Toate ecuaţiile matematice īncep cu <MATH> şi se termină cu </MATH> care suportă atributele ID (pentru ancore) şi CLASS (pentru subclasele ecuaţiilor; de  exemplu CHEM, pentru chimie). Īntre aceste tag-uri se pot introduce mici ecuaţii matematice (pe un singur rīnd). Posibilităţile de aliniere sīnt reduse şi recomandarea este să se utilizeze tabele pentru alinierea seturilor multiple de ecuaţii. Entităţile matematice (caractere greceşti, simboluri, săgeţi, etc) le găsiţi listate la adresa http://www.hpl.hp.co.uk/people/dsr/html/maths.html

     şi sīnt de forma:

  &alpha;                      alfa

  &beta;                       beta

  &gamma;                   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>

         &sum;<sup>&inf;</sup><sub>n=1</sub>

</math>

     Simbolurile anumitor operaţii matematice sīnt introduse de forma:

              <tag operaţie>expresie afectată</ tag operaţie>

     ca īn cazul următor, pentru radical de ordinul doi:

              <SQRT>x+y</SQRT>

     Matricile (arrays) se introduc de o manieră asemănătoare cu tabelele, rīnd cu rīnd, element cu element:

<math>

<array>

<row><item>a<item>b

<row><item>c<item>d

</array>

</math>


8.2. Documente dinamice

Felul īn care este prezentat un document pe Web este, din punctul de vedere al tehnoredactării, cu mult īn urma publicaţiilor tradiţionale, pe hīrtie. Limbajul HTML se dezvoltă anevoios. A īnceput prin a imita stīngaci publicaţiile tipărite dar a continuat prin a-şi identifica trăsături aparte, inaccesibile publicaţiilor clasice, de la cele care ţin de tehnologia īn sine şi pīnă la cele care ţin de noile posibilităţi estetice. Documentele dinamice reprezintă un pas īnainte făcut de tehnologia Web īn a-şi găsi propria identitate.

1. Client pull

              <META HTTP-EQUIV="Refresh" CONTENT="interval_de_timp [;URL]">

Client-pull este capacitatea navigatorului (a clientului) de a cere singur documente noi fără vreo intervenţie a utilizatorului. Browserele realizează acest lucru folosindu-se de header-ul HTTP numit Refresh. Refresh este trimis de la server la navigator şi-i spune navigatorului să ceară un nou document după un anumit număr de secunde (sau imediat).  Modalitatea de a lipi headere HTTP īn documente HTML este dată de tag-ul <META>.

Exemplu: Inserarea īn prima pagină HTML a codului:

             <META HTTP-EQUIV="Refresh" CONTENT="1; URL=http://www.xxx.ro/pagina2.htm1">

va determina navigatorul care a cerut-o să aducă după o secundă şi cea de-a doua pagină. O idee bună (pentru a nu bloca vreun vizitator al cărui navigator nu īnţelege codul) este introducerea īn paginile cu client-pull a unor legături care să-i permită vizitatorului să "evadeze" fără a īnchide complet aplicaţia.

2. Server push

O altă modalitate de a realiza documente dinamice este server push. Spre deosebire de client pull, unde navigatorul iniţia conectări multiple cu serverul, īn acest caz serverul este cel care menţine legătura deschisă şi pompează date către client. Această facilitate poate fi folosită fie pentru a trimite mai multe pagini ale documentului către client (rezultat similar cu client pull) fie pentru a trimite clientului imagini care se īnlocuiesc succesiv īn acelaşi loc dīnd impresia de animaţie īn documentul HTML.

Server push se bazează pe un tip de document MIME special, numit multipart/mixed. Acest tip MIME este utilizat pentru mesaje de poştă care conţin diferite tipuri de fişiere de date. Server push utilizează o variantă a tipului multipart MIME numit multipart/x-mixed-replace īn care un eşantion de date īnlocuieşte integral un eşantion precedent.

Rezultatul este că server-push poate coda şi trimite mai multe tipuri de informaţie (GIF, text HTML, text ASCII, etc) īntr-unul şi acelaşi document. Headerul dă instrucţiuni navigatorului să īnlocuiască fiecare segment de document cu noul element ce a fost īncărcat, trimis automat de către server.

Imaginile animate constituie una din cele mai utilizate aplicaţii ale acestei tehnologii; animarea este realizată prin trimiterea unui document multipart ce constă īntr-o secvenţă liniară de imagini GIF, fiecare dintre aceste imagini reprezentānd un cadru de animaţie. Browserul afişează aceste imagini serial, una după alta, producānd astfel efectul de mişcare.

Implementarea tehnologiei server-push este mai complicată decāt cea de client-pull, deoarece nu există un tag specific şi necesită aplicaţii CGI specifice.

 


8.3. Utilizarea mediilor externe: imagini, sunete şi video

Mediile externe sīnt fişiere care nu pot fi afişate direct de navigatorul Web. Fişiere externe pot fi orice fişiere pe care le puteţi crea (video MPEG, fişiere PostScript, fişiere arhivate, etc). Legătura dintr-un document HTML la un astfel de fişier se face utilizīnd tag-ul <A>.

Cīnd serverul trimite un anumit fişier navigatorului, el include informaţii despre tipul fişierului utilizīnd un mesaj special trimis odată cu fişierul. Dacă navigatorul nu poate afişa acel tip de fişier, el īncearcă să identifice (dintr-o listă cunoscută) o aplicaţie ajutătoare (numită uneori helper sau viewer), căreia să-i treacă fişierul. Dacă tipul fişierului este recunoscut şi aplicaţia ajutătoare corespunzătoare este definită, navigatorul startează aplicaţia şi īi trece fişierul. Aplicaţia, la rīndul ei, va prelucra fişierul care constituie mediul extern, care nu a putut fi interpretat de navigator.

Dacă navigatorul nu identifică tipul fişierului atunci īl salvează pe disc după ce īn prealabil (de regulă) cere permisiunea utilizatorului. Navigatorul utilizează aplicaţiile ajutătoare şi īn cazul īn care fişierele sīnt īncărcate de pe discul local, cu deosebirea că īn aceste cazuri utilizează extensiile fişierelor pentru a identifica tipul de fişier. Acesta este de fapt şi motivul pentru care trebuie utilizate extensiile .html sau .gif pentru documentele HTML şi imagini GIF; īn cazul că lucrăm local, navigatorul poate identifica tipurile de fişiere.

Acest mod de lucru face ca dimensiunile navigatoarelor să rămīnă īn continuare mici. De altfel, nu există nici un motiv puternic ca acestea să includă viewere pentru tipuri de fişiere mai rar īntīlnite. Fiecare navigator are o listă care mapează extensiile fişierelor şi tipurile corespunzătoare de aplicaţii.

Specificarea mediilor externe īn HTML se face cu ajutorul tag-ului <A> şi a atributului HREF, ca īn cazul legăturilor la toate celelalte documente HTML:

<A HREF="fişier extern">Textul care descrie fişierul pentru vizitator</A>

Se obişnuieşte inserarea unor informaţii suplimentare despre fişier: formatul fişierului, dimensiune sau orice alte informaţii care l-ar ajuta pe cel ajuns aici să decidă dacă să ia fişierul sau nu.

 

1. Imagini externe

Formatul cel mai des utilizat īn documentele HTML este GIF, afişabil de majoritatea navigatoarelor grafice. Utilizarea imaginilor externe conferă īnsă o mai mare flexibilitate.

Cīteva din cele mai īntīlnite formate sīnt următoarele:

 

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