Continguts:

SCRIPTS
Sintaxi reservada per a futures macros de scripts
L'especificació de l'HTML 4.0 reserva una sintaxi per al futur suport de les macros de scripts en els atributs CDATA de l'HTML. La intenció és permetre que els atributs s'inicialitzin depenent de les propietats dels objectes que apareixen abans en la pàgina. La sintaxi és:
	atribut = "... &{ cos de la macro }; ... "
Pràctiques comunes per a les macros de scripts
El cos de la macro està fet d'una o més declaracions en el llenguatge de script per defecte (com passa pels atributs d'events intrínsecs). Sempre es necessita un punt i coma seguint la clau de tancament ja que, d'altra manera, el caràcter de clau de tancament "}" es tracta com si fos part del cos de la macro. També val la pena tenir en compte que els signes de cometes sempre es necessiten per què els atributs continguin macros de scripts.

El processament dels atributs CDATA procedeix tal com segueix:



El processament de macros té lloc quan el document és carregat (o recarregat) però no té lloc una altra vegada quan el document és redimensionat, redibuixat, etc.

EXEMPLE MENYSPREUAT:
Aquests són alguns exemples que utilitzen JavaScript. El primer fa que el color de fons del document sigui aleatori:
	<BODY bgcolor='&{randomrgb};'>
Potser es vol reduir la intensitat del fons per a veure-ho de nit:
	<BODY bgcolor='&{if(Date.getHours > 18)...};'>

El següent exemple utilitza JavaScript per a fixar les coordenades d'un mapa d'imatge client-side:
	<MAP NAME=foo>
	   <AREA shape="rect" 
               coords="&{lamevarecta(uriimatge)};" 
	       href="&{lamevauri};" alt="">
	</MAP>

Aquest exemple fixa la mida d'una imatge basant-se en les propietats del document:
	<IMG src="bar.gif" 
            width='&{document.banner.width/2};' 
            height='50%' alt="banner">

Es pot fixar la URI per a un link o una imatge mitjançant l'script:
	<SCRIPT type="text/javascript">
	   function manufacturer(widget) {
	      ...
	   }
	   function location(manufacturer) {
	      ...
	   }
	   function logo(manufacturer) {
	      ...
	   }
	</SCRIPT>
	<A href='&{location(manufacturer("widget"))};'>widget</A>
	<IMG src='&{logo(manufacturer("widget"))};' alt="logo">

Aquest últim exemple mostra com els atributs CDATA de l'SGML es poden posar entre cometes utilitzant els signes de cometes simples o bé dobles. Si s'utilitzen les cometes simples al voltant de la cadena de l'atribut aleshores es poden incloure signes de cometes dobles com a part de la cadena de l'atribut. Una altra aproximació és utilitzar &quot; per a les marques de cometes dobles:
	<IMG src="&{logo(manufacturer("widget"))};" alt="logo">
TAULES
Disseny racional
El model de taula de l'HTML ha evolucionat des dels estudis dels models de taula existents de l'SGML, el tractament de les taules en paquets de processament de paraules comunes, i un ampli rang de tècniques de disposició tabular en revistes, llibres i altres documents impresos. El model es va escollir per a permetre que les taules simples s'expressessin simplement amb una complexitat extra disponible quan es necessités. Això fa que sigui pràctic crear el codi per a les taules HTML amb editors de text d'ús corrent i redueix la corva d'aprenentatge per a ser-ne un iniciat. Aquesta característica ha esta molt important per l'èxit de l'HTML fins avui en dia.

Cada vegada més la gent crea taules mitjançant la conversió des d'altres formats de document o bé creant-les directament amb editors WYSIWYG. És important que el model de taula de l'HTML encaixi bé amb aquestes eines de desenvolupament. Això afecta a com es representen les cel·les que ocupen múltiples files o columnes, i com estan associades l'alineació i altres propietas de presentació amb els grups de cel·les.

Reformatat dinàmic

Una major consideració per al model de taula de l'HTML és que l'autor no controla com un usuari canviarà la mida d'una taula, quines fonts utilitzarà, etc. Això fa que sigui arriscat refiar-se de les amplades de les columnes, però els agents d'usuari haurien d'assegurar que les columnes siguin suficientment amples per a presentar l'amplada de l'element més gran del contingut d'una cel·la. Si l'especificació de l'autor ha de ser anulada, les amplades relatives de les columnes individuals no s'haurien de canviar dràsticament.

Visualització incremental

Per a taules grans o connexions de xarxa lentes, la visualització incremental d'una taula és important per a la satisfacció de l'usuari. Els agents d'usuari haurien de ser capaços de començar a visualitzar una taula abans que s'hagin rebut totes les dades. L'amplada per defecte de la finestra per a molts agents d'usuari mostra uns 80 caràcters, i els gràfics per a moltes pàgines HTML es dissenyen pensant en aquests valors per defecte. Amb l'especificació del nombre de columnes, i incloent-hi la provisió pel control de l'amplada de la taula i les amplades de les diferents columnes, els autors poden donar unes indicacions als agents d'usuari que permeten la visualització incremental dels continguts d'una taula.

Per a la visualització incremental, el navegador necessita el nombre de columnes i les seves amplades. L'amplada per defecte de la taula és la mida de la finestra actual (width="100%"). Això es pot alterar inicialitzant l'atribut width de l'element TABLE. Per defecte, totes les columnes tenen la mateixa amplada, però es poden especificar amplades de columna amb un o més elements COL abans que comencin les dades de la taula.

L'aspecte que falta és el nombre de columnes. S'ha suggerit que s'esperi fins que s'hagi rebut la primera fila de la taula, però això podria comportar bastant de temps si les cel·les tenen molt contingut. Per regla general té més sentit, quan es desitja una presentació incremental, fer que els autors especifiquin explícitament el nombre de columnes en l'element TABLE.

Els autors encara necessiten una manera de dir als agents d'usuari si han d'utilitzar la visualització incremental o donar una mida a la taula de manera automàtica per a encaixar els continguts de les cel·les. En el model d'auto-tamany en dos passos, el nombre de columnes és determinat pel primer pas. En el model incremental, el nombre de columnes ha d'estar indicat al principi (amb els elements COL i COLGROUP).

Estructura i presentació

L'HTML distingeix el codi estuctural com a paràgrafs i cites dels idiomes de presentació tals com marges, fonts, colors, etc. Com afecta aquesta distinció a les taules? Des del punt de vista purista, l'alineació del text de dins de les cel·les de la taula i les vores que es troben entre les cel·les és un aspecte de la presentació i no de l'estructura. A la pràctica, però, és útil agrupar-los amb la informació estructural, ja que aquestes característiques són altament portables d'una aplicació a l'altra. El model de taula de l'HTML deixa la majoria de la informació de presentació als fulls d'estil associats. El model presentat en l'especificació de l'HTML 4.0 està dissenyat per a aprofitar els fulls d'estil, però no per a requerir-los.

Els paquets de publicació d'aplicacions d'escriptori d'ús corrent proporcionen un control molt complet sobre la presentació de taules, i seria impossible reproduir això en HTML sense convertir l'HTML en un abultat format de text semblant al RTF o al MIF. L'especificació de l'HTML 4.0, no obstant, ofereix als autors l'habilitat de triar entre un conjunt de classes d'estils de vora usats comunament. L'atribut frame controla l'aparença de la vora del voltant de la taula mentre que l'atribut rules determina la tria del que predomina dins la taula. Un nivell de control més maco serà suportat via la presentació d'anotacions. L'atribut style pot ser utilitzat per a especificar la informació de presentació per als elements individuals. La informació de més a més sobre la presentació pot venir donada amb l'element STYLE en la capçalera del document o bé via fulls d'estil linkats.

Durant el desenvolupament de l'especificació de l'HTML 4.0 es van investigar nombrosos camins per a especificar els patrons predominants per a les taules. Un aspecte concerneix a les menes de declaracions que es poden construir. Incloent-hi el suport per a la substracció dels límits així com l'addició de límits basant-se en algorismes relativament complexos. Per exemple, el treball de permetre un complet conjunt d'elements de taula per a incloure els atributs frame i rules es basa en un algorisme que implica 24 passos per a determinar si un límit en particular d'una cel·la hauria de ser reglat o no. Fins i tot aquesta complexitat addicional no proporciona suficient control sobre la presentació per a satisfer el rang sencer de les necessitats de les taules. L'especificació de l'HTML 4.0 persisteix deliberadament en un simple model intuitiu, suficient per a la majoria dels propòsits. Es necessita un treball més experimental abans que s'estandaritzi una aproximació més complexa.

Grups de files i de columnes

L'especificació de l'HTML 4.0 proporciona un superconjunt del model més simple presentat en l'anterior treball sobre l'HTML+. Es considera que les taules estan formades per un títol opcional juntament amb una seqüència de files, les quals al seu torn consisteixen en una seqüència de cel·les de la taula. El model també diferencia les cel·les de capçalera de les de dades, i permet que les cel·les ocupin múltiples files i columnes.

Seguint el model de taula de CALS, l'especificació de l'HTML 4.0 permet que les files de la taula s'agrupin en les seccions de capçalera, cos i peu. Això simplifica la representació de la informació presentada i es pot utilitzar per repetir les files de la capçalera i del peu de la taula quan les taules es trenquin pels límits de la pàgina, o per a proporcionar unes capçaleres fixes al capdemunt d'un panell de cos desenrotllable o desplegable (scroll). En les marques, la secció del peu es situa abans de les seccions del cos. Aquesta és una optimització compartida amb CALS per a tractar amb taules molt llargues. Permet que el peu sigui presentat sense haver d'esperar que es processi tota la taula sencera.

Accessibilitat

Per a la gent amb dificultats a la vista, el model de taula de l'HTML inclou atributs per a etiquetar cada cel·la, per a suportar un text d'alta qualitat per a la conversió a la parla. Els mateixos atributs també es poden utilitzar per a suportar l'importació i exportació automàtica de les dades de la taula cap a bases de dades o fulls de difusió.
Algorismes de disposició recomanats
Si els elements COL o COLGROUP es troben presents, especifiquen el nombre de columnes i la taula pot ser presentada utilitzant una disposició fixa. D'altra manera, s'hauria d'utilitzar l'algorisme d'autodisposició descrit més avall.

Si l'atribut width no està especificat, els agents d'usuari visuals haurien de suposar un valor per defecte del 100% per al formatat.

Es recomana que els agents d'usuari incrementin les amplades de la taula més enllà del valor especificat per width en els casos en què els continguts d'altra manera es desbordarien. Els agents d'usuari que anul·len l'amplada especificada haurien de fer-ho per alguna raó. Els agents d'usuari poden triar dividir les paraules en línies per a evitar tenir la necessitat d'un scroll horitzontal excessiu o quan aquest scroll sigui impossible de posar en pràctica o bé no es desitgi.

Pels propòsits de la disposició, els agents d'usuari haurien de considerar que els títols de les taules (espcificats per l'element CAPTION) es comportin com cel·les. Cada títol és una cel·la que ocupa totes les columnes de la taula, si es troba al principi o al final de la taula, i totes les files si es troba al costat esquerre o al costat dret de la taula.

Algorisme de disposició fixa

Per a aquest algorisme, se suposa que el nombre de columnes és conegut. Les amplades per defecte de les columnes haurien de fixar-se a la mateixa mida. Els autors poden invalidar això especificant amplades de columna absolutes o relatives, utilitzant els elements COL o COLGROUP. L'amplada per defecte de la taula és l'espai que es troba entre els actuals marges esquerre i dret, però pot anul·lar-se mitjançant l'atribut width de l'element TABLE, o pot ser determinat per les amplades absolutes de les columnes. Per a tractar amb les barreges d'amplades de columna absolutes o relatives, el primer pas és assignar espai de l'amplada de la taula a les columnes amb amplades absolutes. Després d'això l'espai restant es divideix entre les columnes amb amplades relatives.

La sintaxi de taula solament, és insuficient per a garantir la consistència dels valors dels atributs. Per exemple, el nombre d'elements COL i COLGROUP pot ser inconsistent amb el nombre de columnes implicades per les cel·les de la taula. Un problema de més a més té lloc quan les columnes són massa estretes per evitar el desbordament dels continguts de les cel·les. L'amplada de la taula tal com està especificada per l'element TABLE o l'element COL pot donar lloc a un desbordament dels continguts de les cel·les. Es recomana que els agents d'usuari intentin recuperar-se sense problemes d'aquestes situacions, per ex., utilitzant guions per a separar una paraula i donar suport per a dividir les paraules si es desconeixen els punts on situar els guions.

En el cas que un element indivisible causi un desbordament de cel·la, l'agent d'usuari deuria ajustar les amplades de les columnes i re-presentar la taula. En el pitjor dels casos es pot considerar retallar, si els ajustaments de l'amplada de la columna i/o el contingut desenrotllable o desplegable (scroll) de la cel·la no són factibles. En qualsevol cas, si el contingut de la cel·la és dividit o retallat, això hauria d'indicar-se-li a l'usuari d'una manera apropiada.

Algorisme d'autodisposició

Si el nombre de columnes no està especificat pels elements COL i COLGROUP, aleshores l'agent d'usuari hauria d'utilitzar el següent algorisme d'autodisposició. Aquest utilitza dos passos a través de les dades de la taula i escala linealment amb la mida de la taula.

En el primer pas, es desactiva el plegament de línies, i l'agent d'usuari està alerta de l'amplada màxima i mínima de cada cel·la. L'amplada màxima ve donada per la línia més ampla. Com que el plegament de línies ha estat desactivat, els paràgrafs es tracten com línies llargues a no ser que estiguin trencades per elements BR. L'amplada mínima ve donada per l'element de text més ample (paraula, imatge, etc.) tenint en compte les indentacions i les boletes de llista, etc. En altres paraules, és necessari determinar l'amplada mínima que una cel·la requeriria en una finestra de la seva propietat abans que la cel·la comencés a desbordar-se. El fet de permetre als agents d'usuari que divideixin les paraules minimitzarà la necessitat d'scroll horitzontal o, en el pitjor dels casos, el retall dels continguts de la cel·la.

Aquest procés també s'aplica a qualsevol taula aniuada que tingui lloc en el contingut d'una cel·la. Les amplades màxima i mínima per a les cel·les de les taules aniuades s'utilitza per a determinar les amplades màxima i mínima per aquestes taules i d'aquesta manera també per a la taula mare en sí. L'algorisme és lineal amb el contingut agregat de les cel·les, i parlant àmpliament, independent de la profunditat de l'aniuament.

Per a fer front a l'alineació dels continguts de les cel·les, l'algorisme manté tres totals màxima i mínima per a cada columna: Left of align char, right of align char and unaligned. L'amplada mínima per a una columna és, aleshores: max(min_left + min_right, min_no-alineats).

Les amplades màxima i mínima de les cel·les s'utilitzen aleshores per determinar les amplades màxima i mínima per a les columnes. Aquestes, a la vegada, s'utilitzen per trobar l'amplada mínima i màxima per a la taula. Cal observar que les cel·les poden contenir taules aniuades, però això no complica significantment el codi. El proper pas és assignar amplades de columna d'acord amb l'espai disponible (és a dir, l'espai entre els marges esquerre i dret actuals).

Per a cel·les que ocupen múltiples columnes, una aproximació simple consisteix en distribuir les amplades màxima i mínima de manera uniforme a cada una de les columnes constituents. Una aproximació una mica complexa és utilitzar les amplades màxima i mínima de les cel·les no expandides per a suspesar com es distribueixen les amplades expandides. L'experiència suggereix que una combinació de les dues aproximacions dóna bons resultats per a un ampli rang de taules.

Les vores de la taula i els marges d'entre les cel·les necessiten estar inclosos en les amplades de columna assignades. Hi ha tres casos:
Aquest pas d'assignació es repeteix per a les taules aniuades utilitzant les amplades màxima i mínima derivades per a totes aquestes taules en el primer pas. En aquest cas, l'amplada de cel·la de la taula mare té el rol de la mida de la finestra actual en la descripció de més amunt. Aquest procés es repeteix recursivament per a totes les taules aniuades. La taula de més amunt aleshores es presenta utilitzant les amplades assignades. Les taules aniuades es presenten subseqüentment com a part dels continguts de les cel·les de la taula mare.

Si l'amplada de la taula s'especifica amb l'atribut width l'agent d'usuari intenta fixar les amplades de columna perquè coincideixin. L'atribut width no és obligatori si resulta en què les columnes tenen menys de les seves amplades mínimes (és a dir, indivisibles).

Si s'especifiquen amplades relatives amb l'element COL, l'algorisme es modifica per a incrementar les amplades de les columnes per sobre de l'amplada mínima per a satisfer les restriccions de les amplades relatives. Els elements COL s'haurien de prendre només com a indicacions, per tant les columnes no s'haurien de fer tan grans que la taula s'estirés bé més enllà de l'extensió de la finestra. Si un element COL especifica una amplada relativa de zero, la columna sempre hauria d'estar fixada a la seva amplada mínima.

Quan s'utilitza l'algorisme de dos passos, la posició d'alineació per defecte en absència d'un atribut charoff explícit o heretat es pot determinar triant la posició que centraria les línies per a les quals les amplades abans i després de l'alineació dels caràcters, aleshores per defecte, totes aquestes cel·les s'haurien d'alinear, sense tenir en compte quin caràcter s'utilitza per a l'alineació. Les regles per a suportar objectes massa grans per a una columna s'apliquen quan l'alineació implícita o explícita resulta en una situació on les dades excedeixen l'amplada assignada de la columna.

Tria dels noms dels atributs. Hauria estat preferible triar els valors per a l'atribut frame i els valors utilitzats per a l'alineació. Per exemple, 'none', 'top', 'bottom', 'topbot', 'left', 'right', 'leftright', 'all'. Desafortunadament, l'SGML requereix que els valors d'atributs numerats siguin únics per a cada element, independent del nom de l'atribut. Això fa que els problemes immediats per a 'none', 'left', 'right' i 'all'. Els valors per a l'atribut frame han estat triats per a evitar que hi hagi col·lisions amb els atributs rules, align i valign. Això proporciona una mesura de les proves futures, tal com s'anticipa que els atributs frame i rules s'afegeixin a altres elements de taula en futures revisions de l'especificació de l'HTML 4.0. Una alternativa seria fer que frame fos un atribut CDATA. El consens del Grup de Treball d'HTML del W3C va ser que els beneficis de ser capaç d'utilitzar les eines de validació de l'SGML per a testar els atributs basats en els valors numerats val més que la necessitat de noms consistents.
Tancar
Pàgina Principal
Introducció al Manual d'HTML Dinàmic
Glossari
Referències























HTML 4.0
Introducció al manual d'HTML 4.0
Taules
Formularis
Objectes, imatges i applets
Scripts
Informació de l'idioma i sentit del text
Frames
Nous elements
Elements menyspreuats i obsolets
Fulls d'estil
Nous atributs de l'HTML 4.0
Índex d'atributs nous
Índex d'atributs menyspreuats
DTD
Annexe












Introducció als CSS
Introducció als CSS2 i al manual
Propietats CSS2
Fulls d'estil audibles
Model de caixa
Sintaxi i tipus bàsics de dades
Model de formatat visual
Detalls del model de formatat visual
Assignar valors de propietats, la cascada i l'herència
Interfície d'usuari
Efectes visuals
Text
Taules
Fonts
Contingut generat, numeració automàtica i llistes
Colors i fons
Selectors
Tipus de mitjans
Mitjans paginats
Suport de CSS2
Annexe




Introducció al DOM
DOM Nivell 1 - Nucli
DOM Nivell 1 - HTML
Articles sobre el DOM






















Programació en DHTML
Demos