Editor: Steven Pemberton, W3C/CWI
Data de la versió: 21 de juliol del 2004
Altres PMF relacionades:
Per fer comentaris sobre aquest document, o enviar suggerències, si us plau envieu un correu a www-html-editor@w3.org, incloent la paraula FAQ al tema.
L'HTML és probablement el millor llenguatge de marques per documents del món. Però quan es va introduïr l'XML es va organitzar un grup de treball de dos dies per discutir si a la nova versió de l'HTML l'XML era necessari. La opinió del grup de treball va ser clara 'Si': amb un HTML basat en XML d'altres llenguatges XML podrien incloure troços d'XHTML, i els documents XHTML podrien incloure troços d'altres llenguatges de marcat. També podriem aprofitar-nos del redisseny per netejar algunes de les parts menys metòdiques, i afegir alguna nova funcionalitat necessaria, com uns formularis millors.
Si el document és només XHTML 1.0 (no inclou altres llenguatges de marcat) llavors no notaras diferències. Tot i així, a mesura que estiguin disponibles més i més eines XML com l'XSLT per transformar documents, podras començar a notar les avantatges d'utilitzar XHTML. XForms per exemple, et permetrà editar documents XHTML (o qualsevol altre tipus de document XML) de manera facilment controlable. Les aplicacions de la Web Semàntica podran aprofitar-se dels documents XHTML.
Si el document és més que un XHTML 1.0, per exemple inclou MathML, SMIL o SVG, llavors les avantatges són inmediats: Això no ho pots fer amb HTML.
No. L'HTML no és un format XML. Abans has de fer els canvis pertinents per convertir-lo en un XML.
L'HTML Tidy et dona la opció de transformar qualsevol HTML en un XHTML. L'Amaya és un navegador/editor que guarda documents HTML com a XHTML.
És deliberat. Els navegadors HTML accepten qualsevol entrada, correcte o incorrecte, i intenten fer quelcom intel·ligible amb alló que se'ls ha passat. Aquesta correcció d'errors fa que els navegadors siguin difícils de programar especialment si s'espera que tots facin el mateix. Això ha suposat que moltissimes pàgines HTML siguin incorrectes perque, donat que ja es veu bé al navegador, l'autor no se n'adona dels errors. Això fà que sigui increiblement difícil programar un nou agent d'usuari, donat que sovint els documents que diuen ser HTML realment no ho són.
Tots els navegadors saben com manegar-se amb un HTML correcte. Tanmateix, si és incorrecte, el navegador ha d'arreglar el document i, donat que no tots els navegadors els arreglen de la mateixa manera, produïrà diferències fent que es vegi i funcioni diferent en diferents navegadors. Ja que hi ha centenars de navegadors diferents i en segueixen apareixent ( no només en PC, sinó també en PDAs, telèfons mòbils, televisors, impresores i fins i tot neveres) és impossible testejar un document en tots els navegadors. Si utilitzes un HTML incorrecte i el document no funciona en un navegador concret, és error teu. Si utilitzes un HTML correcte i no funciona, és un error del navegador.
El W3C ofereix un servei a http://validator.w3.org/. El navegador/editor Amaya també et pot servir per saber si el marcat és correcte.
Malgrat que els navegadors siguin realment els usuaris més importants d'HTML i XHTML hi ha altres programes i sistemes que llegeixen aquests documents. Els cercadors, per exemple, llegeixen documents però no són navegadors. A l'utilitzar el terme "agent d'usuari" intentem recordar a la gent aquesta diferència.
Per exemple, quan fas una cerca a Google sovint veuras sota alguns resultats quelcom semblant a "Aquesta pàgina web utilitza frames, però el teu navegador no els suporta." aleshores, segurament, crearan prevenció en alguna gent alhora d'accedir a l'enllaç. L'autor del lloc web en qüestió no se n'ha adonat que existeixen altres agents d'usuari a part dels navegadors i que hauria d'incloure un text millor a la secció <noframes>
per tal de no semblar tan neci quan la gent trobi el seu lloc.
Al començament de l'HTML diversos grups i companyies afegien nous elements i atributs a l'HTML a voluntat. Això va estar a punt de generar un caos de diferents versions d'HTML no operatives entre si. L'XML (la x vol dir Extensible) permet a qualsevol l'ús d'elements de diferents llenguatges però perque un navegador o qualsevol altre agent d'usuari sàpiga quin element pertany a quin llenguatge, li ho has de dir. Les declaracions d'espais de nom fan exactament això.
L'XHTML és un format XML; això vol dir que parlant de forma estricte s'hauria d'enviar amb un tipus de mitjà relacionat amb XML (application/xhtml+xml
, application/xml
, or text/xml
). Malgrat tot l'XHTML 1.0 es va dissenyar amb molta cura, de manera que si el document està fet amb cura hauria de funcionar també en agents d'usuari pensats per l'HTML llegat. Si es segueixen algunes senzilles pautes es pot fer que molts documents XHTML 1.0 funcionin en navegadors antics. Tot i així, els navegadors antics només interpreten el tipus de mitjà text/html de manera que s'ha d'emprar aquest tipus de mitjà si se'ls envia documents XHTML 1.0. S'ha de tenir present que enviar documents XHTML als navegadors com a text/html vol dir que aquests navegadors veuran el document com a HTML i no com a XHTML.
Fins on sabem els navegadors basats en Mozilla com el Mozilla, Netscape 5 i superior, Galeon i Firefox i com també Opera, Amaya, Camino, Doczilla, iCab, Safari i tots els navegadors de mòvils que acceptin WAP2. De fet, qualsevol navegador modern. La gran majoria també accepta documents XHTML amb application/xml
. Per més detalls mireu XHTML Media-type test.
No. Malgrat tot existeix un truc que permet servir documents XHTML 1.0 a l'IE com a application/xml
.
Al començament del document s'ha d'incloure la línia en negreta que es mostra:
<?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl" href="copy.xsl"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>
On copy.xsl
és un document que conté el següent:
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform"> <template match="/"> <copy-of select="."/> </template> </stylesheet>
Preneu nota que aquest arxiu ha d'estar al mateix lloc que el document que el referencia.
Malgrat que serveixi el document com a xml i que aquest sigui interpretat com a XML, el navegador pensa que ha rebut text/html
, de tal manera que el document XHTML ha de seguir moltes de les pautes per servir als navegadors antics.
El document XHTML continuarà funcionant als navegadors que accepten XHTML 1.0 com a application/xml
.
No. Les regles CSS que s'apliquen només a l'HTML s'apliquen només a documents lliurats com a text/html
.
No. Perque tal i com està definit l'XML no és possible fer trucs com aquest, on el marcat està generat per un programa mentre l'intèrpret encara està interpretant el marcat.
Encara pots aconseguir els mateixos efectes, però has d'emprar el DOM per afegir i eliminar elements.
L'XHTML 1.1 és pur XML, i està pensat per ser només XML. No pot ser enviat amb tota seguretat a un navegador antic. Per això els documents XHTML 1.1 han d'enviar-se amb un tipus de mitjà com és l'application/xhtml+xml
No ha estat eliminat. L'XHTML 1.0 té tres versions: strict, transitional i frameset. Tots tres s'han mantingut tant semblants a l'HTML 4.01 com l'XML ho ha permès. L'XHTML 1.1 és una versió actualitzada de l'XHTML 1.0 strict i cap versió d'HTML strict ha inclòs mai l'atribut target
. Les altres dues versions, transitional i frameset, no es van actualitzar perque no hi havia res a actualitzar. Si vols utilitzar l'atribut target
utilitza XHTML 1.0 transitional.
La modularització XHTML no està pas enfocada a usuaris corrents d'XHTML, sinó per dissenyadors de llenguatges basats en XHTML. Es va observar que companyies i grups tenien tendència a dissenyar les seves versions d'HTML i XHTML que sovint no eren interoperables a nivell bàsic. La modularització XHTML separa l'XHTML en nombrosos mòduls que poden utilitzar-se individualment quan es defineix un nou llenguatge; en aquesta línia qualsevol llenguatge basat en XHTML que utilitzi taules té garantit que utilitza la mateixa definició de taules. La modularització també deixa clar on es poden afegir nous elements i on no.
L'HTML i XHTML donen un bon servei però hi ha moltes coses que es poden millorar. Les àrees que reben una particular atenció inclouen una millor possibilitat d'estructurar, eliminar funcionalitats duplicades amb l'XML, usabilitat, accessibilitat, internacionalització, independència de dispositiu, millors formularis i una reducció de la necessitat de programar.
No. l'<img>
serà substituït a l'XHTML 2 però per qualsevol altre element (tanmateix pots usar l'<object>
si vols).
El disseny de l'<img>
té molts problemes en HTML:
alt
. Aquest fet ha relentitzat la adopció d'imatges PNG que són de llarg molt millors que el GIF o el JPG donat que la gent ha continuat emprant el format que és el mínim comú denominador per garantir que tothom pugui veure les imatges.
alt
no pot ser marcat de manera que si l'utilitzes només conseguiries text plà.
longdesc
a la descripció de la imatge per ajudar els invidents però això rarament està implementat.
El que fà l'XHTML 2 és dir que totes les imatges són equivalents a algun troç de contingut; i ho fà al permetre't posar un atribut src
a qualsevol element. El que vol dir és que si la imatge està a l'abast i el navegador les pot processar, la utilitzarà, en cas contrari farà servir el contingut de l'element. Per exemple:
<p src="map.png">Exit from the station, turn left, go straight on to <strong>High Street</strong>, and turn right</p>
L'avantatge d'això és que si la imatge no està disponible per alguna raó (per exemple un error de la xarxa) o si el navegador no pot interpretar aquell tipus d'imatge, el vostre document encara seria útil. Si voleu proporcionar més d'un tipus d'imatge podeu fer:
<p src="map.png"><span src="map.gif">Exit from station...</span></p>
tot i que és millor utilitzar la negociació de contingut si el vostre servidor ho suporta (i la majoria ho fà):
<p src="map">Exit from station...</p>
El servidor negociaria amb el navegador quin tipus d'imatge accepta i li donaria el tipus que preferís. Si no existís cap imatge disponible aleshores s'utilitzaria el contingut de l'element. Això té l'avantatge afegida de que posteriorment pots afegir altres tipus d'imatge al teu servidor i no has de modificar la pàgina donat que encara funcionaria.
L'XLink i l'XHTML estan estipulats de manera diferent a l'hora d'enllaçar i això els fà irreconciliables.
Ho és, però d'una manera diferent a com les versions anteriors d'HTML ho eren amb les seves.
Donat que les versions prèvies d'HTML eren llenguatges amb un propòsit especial era necessari garantir que les noves versions tinguessin un grau de compatibilitat tal que els nous documents fossin encara utilitzables pels antics navegadors. Per exemple, aquesta és la raó per la qual l'element <meta>
té el contingut en un atribut i no a l'interior de l'element perque sinó es veuria en navegadors antics.
Tot i així, gràcies a l'XML i als fulls d'estil aquesta necessitat de ser estricte amb elements de versions anteriors ja no té sentit, donat que un navegador basat en XML, els quals són un 95% al moment en que s'ha escrit això, poden processar llenguatges de nou marcat sense haver-se d'actualitzar. La major part de l'XHTML 2 ja funciona als navegadors existents tot i que no estiguin preprogamats per entendre l'XHTML 2. Funciona força però no tot: quan es van afegir els formularis i les taules a l'HTML la gent va haver d'esperar les noves versions dels navegadors, de la mateixa manera algunes parts de l'XHTML 2 com XForms i XML Events necessiten agents d'usuari que entenguin aquestes funcionalitats.
xml:space
està posat en 'preserve' a tots els elements de l'XHTML? No vull veure espais extres al resultat.
L'atribut xml:space
afecta l'entrada: és a dir, controla si els espais estaran presents al DOM (és a dir, la versió interna del document dins el navegador) no diu res a propòsit de com es veurà a la pantalla. L'espai en blanc del resultat es controla mitjançant la propietat 'whitespace
' de CSS. Posa'l com a 'pre
' i els espais del DOM es conservaran al resultat, posa'l com a 'normal
' i l'espai en blanc col·lapsarà (el CSS 3 tindrà més propietats per permetre un millor control).
Aquesta és la raó per la qual tots els elements estan posats com a xml:space="preserve"
a l'XHTML 2, d'una altre manera la propietat 'whitespace
' del CSS no tindria cap efecte i no tindries cap control sobre l'espai en blanc visible. El full d'estil per defecte posarà 'whitespace
' a 'normal
' per tots els elements exepte pel <pre>
però tindras la llibertat de canviar-ho.
Copyright ©2004 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.