' Rapid-Q by William Yu (c)1999-2000 . ' ================================================================================ ' Upload_il_tuo_script_su_Rapidq.it ' Manuale_XHTML Per definire cos'è XHTML possiamo iniziare con una semplice espressione: HTML + XML = XHTML Esaminiamo i termini dell'operazione. HTML Se siete su questo sito sapete di cosa parliamo. HTML è un linguaggio di marcatura per presentare i contenuti di una pagina web. La sua semplicità è la base dell'esplosione di Internet. L'ultima raccomandazione rilasciata dal W3C è la 4.01 (dicembre 1999). XML XML è una sorta di "super-linguaggio" che consente la creazione di nuovi linguaggi di marcatura. Potente, flessibile e rigoroso è alla base di tutte le nuove specifiche tecnologiche rilasciate dal W3C e adottate ormai come standard dall'industria informatica. I principali obiettivi di XML, dichiarati nella prima_specifica_ufficiale(ottobre 1998), sono pochi ed espliciti: utilizzo del linguaggio su Internet, facilità di creazione dei documenti, supporto di più applicazioni, chiarezza e comprensibilità . Nella visione di Tim Berners Lee è destinato ad essere il fondamento di un web finalmente universale. XHTML XHTML è la riformulazione di HTML come applicazione XML. Ciò significa essenzialmente una cosa: un documento XHTML deve essere valido e ben formato. Torneremo in seguito su questi concetti. Per ora è importante chiarire il punto di vista del W3C su XHTML. Piuttosto che sfornare una nuova versione del linguaggio, un HTML 5.0, gli uomini del Consortium hanno compiuto un'opera di ridefinizione. Niente nuovi tag, attributi o metodi. Questi rimangono essenzialmente quelli di HTML 4.0. In pratica: il vocabolario rimane uguale, ma cambiano le regole sintattiche. Se si comprende questo fatto, sarà chiaro come XHTML risponda a due esigenze fondamentali: 1. portare HTML nella famiglia XML con i benefici che ciò comporta in termini di estensibilità e rigore sintattico 2. mantenere la compatibilità con i software che supportano HTML 4.0 Visto così, XHTML è un ponte tra passato e futuro. E' un modo per imparare a pensare in XML partendo da un linguaggio che conosciamo, senza dover rinunciare, dunque, alle conoscenze già acquisite. ***** Versioni di XHTML ***** Le versioni di XHTML attualmente disponibili e pubblicate come raccomandazioni dal W3C sono tre. **** XHTML 1.0 **** Pubblicata il 26 gennaio 2000 e seguita da una versione rivista dell'ottobre 2001. Consiste, come detto, nella riscrittura in XML di HTML 4.0 e si basa sulle tre DTD già definite per questo linguaggio: * DTD Strict * DTD Transitional * DTD Frameset **** XHTML Basic **** E' una versione_"ridotta" del linguaggio. Specificamente pensata per dispositivi mobili (PDA, cellulari), contiene solo gli elementi che si adattano a questi dispositivi (esclude, ad esempio, i frames che non hanno ovviamente senso in tale contesto). E' destinata a sostituire WML come linguaggio di base per le applicazioni WAP. **** XHTML 1.1 **** Basata sulla DTD Strict della versione 1.0, rappresenta la prima formulazione pratica del concetto di modularità . In questa visione, gli elementi fondamentali (in pratica l'insieme di tag che definiscono la struttura di un documento) sono raggruppati in una serie di moduli indipendenti, che possono essere implementati o esclusi secondo le necessità . Secondo il W3C è la base della futura estensione di XHTML con altri set di linguaggi o moduli, anche personalizzati. ***** Riferimenti ***** La_guida_HTML_di_HTML.it Il_corso_su_XML_di_HTML.It XHTML_sul_W3C:_news,_specifiche,_definizioni_e_discussioni Traduzione_italiana_della_specifica_XHTML_1.0_(di_Patrizia_Andronico) Quando si propone una nuova tecnologia è fatale sollevare dubbi e obiezioni. Consideriamo il quadro d'insieme degli attuali linguaggi web. Milioni di pagine sono scritte in HTML. Una gran parte di esse non è valida rispetto alle raccomandazioni del W3C, ma funziona. L'adozione di un nuovo linguaggio (XHTML) non è obbligatoria nè forzata: tutti i browser in commercio sono in grado di interpretare HTML 4. XHTML non introduce nuove features rispetto al suo predecessore. "Perchè allora imparare un nuovo linguaggio?". "Perchè dovrei riscrivere tutto il mio sito?". Sono domande scontate, ma legittime. Ecco alcune possibili risposte ed un semplice elenco dei vantaggi di XHTML. ***** Codice pulito e ben strutturato ***** Il passaggio ad XHTML può essere visto come un ritorno alle origini. HTML è nato come linguaggio per definire la struttura di un documento. Non ha nulla a che vedere con la presentazione. Eppure, è stato stiracchiato da tutte le parti, costretto a svolgere compiti per cui non è stato creato. Il caso delle tabelle è quello macroscopico. Sono nate per la presentazione di dati tabulari. Sono state impiegate come l'unico mezzo per costruire il layout della pagina. E ancora: quando si sentì la necessità di gestire la tipografia dei documenti, venne introdotto il tag con i relativi attributi. La conseguenza è quella di pagine cariche di elementi inutili, più pesanti, difficili da modificare. La responsabilità principale per questo uso improprio di HTML non ricade sugli sviluppatori. Nel 1996 (le date sono importanti!) il W3C ha rilasciato la versione definitiva di CSS1. Era questa la tecnologia destinata a definire la presentazione dei documenti. L'idea era chiara: HTML per la struttura, CSS per lo stile e il layout. Eppure, per avere browser che supportano decentemente questi standard si è dovuto attendere il 2000-2001. Quattro anni, tre generazioni di browser, milioni di siti costruiti tentando di risolvere incompatibilità e bug. Con XHTML, almeno nella sua versione Strict, si torna ad un linguaggio che definisce solo la struttura. Semplicemente, se inserite elementi non supportati (font, larghezza per le celle di tabelle o margini per il body, per citare solo alcuni esempi) il documento non è valido. Quindi: la formattazione si fa con i CSS. Mai più tag , mai più gif di un pixel. Tra poco, forse, niente più tabelle per il layout. Risultato: codice più pulito, più logico, più gestibile. Esempio: due pagine realizzate secondo le due impostazioni, diciamo "old_style" e "new_style". Attenzione al codice riportato in fondo. Nel secondo caso tutta la formattazione è definita in un CSS e si vede! Peso delle due pagine: "old style" 3 kb, "new style" 1 kb. ***** Portabilità ***** Portabilità è la capacità /possibilità di un documento di essere visualizzato e implementato efficacemente su diversi sistemi: PC, PDA, cellulari WAP/GPRS, WebTV. Ora, se pensate alle limitazioni in termini di memoria, ampiezza dello schermo e usabilità di un terminale mobile, capirete perchè è importante un linguaggio essenziale, centrato sulla struttura del documento, privo di orpelli inutili. Ciò che ha senso è avere un titolo della pagina, un'intestazione, un paragrafo, una lista per scandire gli argomenti. Sulla portabilità poggia l'enfasi con cui aziende del calibro di Nokia, Motorola, Ericsson o Siemens guardano ad XHTML. Dopo l'accettazione da parte del Wap Forum si può affermare con certezza che la piattaforma WAP 2 e tutta l'evoluzione dei servizi mobili sarà fondata sull'integrazione tra XHTML e CSS, con il supporto delle necessarie tecnologie sul lato server. Nelle immagini, tratte da un documento di Nokia, è chiarissimo lo schema di distribuzione delle informazioni fondato su questa interazione. In breve: * nella pagina XHTML incorporiamo diversi CSS per ciascun supporto * il browser viene identificato * su un PC vedremo il layout standard * su un cellulare visualizziamo un layout "ridotto" e adatto alle caratteristiche del mezzo * ciò che non cambia sono i contenuti E' solo uno degli scenari possibili. Se al quadro si aggiungono le enormi potenzialità del linguaggio XSL, si comprende come l'epoca delle tante versioni di uno stesso sito sia davvero al termine. ***** Estensibilità ***** Dal momento che XHTML è XML diventa estensibile. Significa che sarà facilissimo incorporare in un documento parti scritte in uno dei tanti linguaggi della famiglia XML. Esempio. Dovete inserire in una pagina delle formule matematiche complesse. Basterà dichiarare il namespace relativo al linguaggio MathML e inserire nella pagina i tag specifici di quest'ultimo (il codice è tratto dal sito del W3C). A Math Example

The following is MathML markup:

3 x I frutti di questo approccio, che è il più semplice dei tanti possibili, sono ancora lontani dalla maturità . L'implementazione da parte dei browser è infatti carente, ma non mancano esempi funzionanti e di grande potenza. Parleremo in un'altra lezione di FML (Form Markup Language), un linguaggio che estende in maniera impressionante l'uso dei classici form di HTML. ***** Accessibilità ***** Una altro punto fondamentale. I documenti scritti in XHTML e validati sono naturalmente più accessibili. Da una parte la validazione richiede l'uso obbligatorio di funzionalità come il testo alternativo per le immagini. Dall'altra, una pagina che evita elementi non standard, ben definita nella struttura è di gran lunga meglio gestibile da browser alternativi come quelli vocali o testuali. Per questi aspetti è obbligatoria la lettura delle linee guida per l'accessibilità del contenuto Web rilasciate dal W3C e tradotte_anche_in_italiano. ***** Riferimenti ***** XHTML_linguaggio_del_futuro: l'articolo espone la visione su XHTML di Nokia e delle principali aziende del settore mobile. The_fear_of_X: Molly Holzschlag è una delle personalità più influenti del web design americano. In questo articolo (tradotto sul numero di Novembre 2001 di PC Professionale) espone la sua visione su XHTML e sui vantaggi di questo linguaggio. Da leggere altri_suoi_articoli sull'argomento. Entriamo nel vivo della conoscenza di XHTML esponendo le sue regole di base. Sono quelle che rendono un documento strettamente conforme (punto_3.1.1 della specifica) e che ne definiscono i requisiti minimi essenziali. In pratica: se non si rispettano questi semplici punti il documento non può essere definito XHTML. ***** 1. Validazione ***** Un documento deve essere convalidato rispetto ad una delle tre DTD XHTML del W3C. Vedremo nella prossima lezione come si effettua la convalida. Per ora è sufficiente chiarire che essa controlla essenzialmente due cose: che il documento sia valido e ben formato. Sono due concetti fondamentali derivati da XML e su cui vale la pena soffermarsi. **** Documenti ben formati **** XHTML, ricordiamolo, è fondato su XML. Da questo eredita il concetto di documento ben formato. Ciò significa che esso deve rispettare le regole della sintassi XML: presenza di un elemento radice, corretto annidamento degli elementi, chiusura obbligatoria dei tag vuoti, etc. Affronteremo nei dettagli questi aspetti nelle lezioni successive. **** Documenti validi **** Un documento è valido se usa correttamente un linguaggio, vale a dire se usa nel modo giusto solo elementi specifici e consentiti. Ma dove vengono stabilite queste regole? Per XHTML (e per XML in genere, anche se in questo ambito si sta sviluppando l'uso degli schemi) le regole sono definite nelle DTD (Document Type Definition). Una DTD identifica gli elementi (tag) consentiti, cosa essi significano, come devono essere trattati (ad esempio, stabilisce quali sono gli attributi possibili per ciascun elemento). In un documento XHTML la DTD deve essere obbligatoriamente specificata all'inizio. Per ora passiamo alla seconda regola di conformità . ***** 2. Elemento radice ***** Ogni documento XML deve contenere un elemento radice. Si tratta dell'elemento che contiene al suo interno tutti gli altri: Marco Rossi Nell'esempio l'elemento radice è . In un documento XHTML l'elemento radice deve essere . ***** 3. Namespace XHTML ***** L'elemento radice deve contenere la dichiarazione di un namespace XML (spazio_dei_nomi) tramite l'attributo xmlns. Il namespace usato deve essere "http://www.w3.org/1999/xhtml". ***** 4. Dichiarazione DOCTYPE ***** In un documento XHTML l'elemento radice deve essere preceduto da un elemento . All'interno di questo elemento è necessario specificare la DTD di riferimento e il suo URI. Ora che conosciamo un pò meglio XHTML possiamo finalmente creare la nostra prima pagina. Ecco come si presenta il codice di una semplice pagina XHTML basata sulla DTD Strict (figura 1): [Figura 1 - La mia prima pagina XHTML] Nell'immagine abbiamo evidenziato con colori diversi le quattro sezioni essenziali di un documento XHTML: * in rosso: il prologo * in verde: l'elemento radice () * in viola: la testata () * in giallo: il corpo del documento Le analizzeremo nelle prossime lezioni, definendo nei dettagli la funzione di ciascuna e le differenze con HTML. Per ora iniziamo con un pò di pratica. Il listato_1 contiene il codice della nostra prima pagina. Copiatelo e incollatelo, anche in un editor di testo. Salvate, nominando il documento "test.html", visualizzate nel vostro browser preferito. A questo punto, dopo aver tanto insistito sul concetto di documento valido e ben formato, è opportuno imparare a fare la convalida. All'url http://validator.w3.org è possibile effettuare la validazione di qualunque documento presente in rete: basta inserire l'URI della pagina e cliccare su "Validate this page". Dal momento che la pagina appena creata è localizzata sulla nostra macchina dobbiamo usare un altro metodo. Il W3C dà la possibilità di validare i documenti tramite l'upload del file sui suoi server. Usate quindi l'url http://validator.w3.org/file-upload.html. Cercate il file da validare sul vostro PC e inviate la richiesta. Se il documento è valido riceverete, questo messaggio (figura 2): [Figura 2 - Il nostro documento è valido.] Bene. La prova è andata a buon fine, la pagina rispetta le regole. Possiamo ora passare all'analisi delle quattro sezioni del documento. Cominciamo dal prologo. ***** Riferimenti ***** Un_validatore_alternativo: potete validare i documenti anche su htmlhelp.com. Il sito fornisce utilissime notizie e suggerimenti su possibili problemi nella convalida. [Figura 1 - Prologo di un documento XHTML] La figura 1 mostra il prologo di un documento XHTML. Esso risulta composto da due parti: la dichiarazione XML e la definizione del DOCTYPE. ***** Dichiarazione XML ***** La nostra pagina inizia con una riga di codice: . La sua funzione è semplice: rendere esplicito il fatto che il documento è XML. Non è obbligatoria, ma è il suo uso è consigliato dal W3C per tutti i documenti XML. Quando viene usata non deve essere preceduta da altre istruzioni. All'interno della dichiarazione è possibile usare tre attributi. L'unico obbligatorio è version (il solo valore possibile è "1.0", in quanto non esistono altre versioni del linguaggio). Un altro attributo, opzionale, ma spesso usato è encoding. Serve a specificare la codifica del linguaggio: . L'ultimo attributo possibile è standalone. Se il valore è "yes" vuol dire che il documento non fa riferimento ad entità esterne. Se il vostro obiettivo è la massima compatibilità potete omettere la dichiarazione XML. Molti browser hanno mostrato problemi così come alcuni editor (Dreamweaver). Se avete la necessità di specificare una codifica per i caratteri potete sempre usare un meta tag: ***** Definizione del DOCTYPE ***** La dichiarazione del DOCTYPE (obbligatoria!) è composta da due sezioni: 1. Un FPI (Identificatore Formale Pubblico) riferito ad una delle tre DTD XHTML (in rosso) 2. L'URI della DTD (in verde) Essa, dunque, ha lo scopo di stabilire a quale delle tre DTD XHTML intendiamo conformarci e di dire al browser dove essa è collocata. Nel nostro esempio la DTD di riferimento è quella Strict, collocata sul sito del W3C. Il DOCTYPE, inoltre, non ha alcun effetto sulla presentazione della pagina. Serve solo al validatore per stabilire le regole della convalida. Notate anche la parola chiave PUBLIC. Significa che la DTD è pubblica, creata dal W3C. In effetti, in XML, è anche possibile definire DTD "private", specifiche per la nostra applicazione. In tal caso si usa la parola chiave SYSTEM. Un'ultima notazione. Su molti siti (tra cui quello del W3C) vengono forniti schemi di dichiarazione DOCTYPE per le tre DTD che presentano URI relativi: Quest'uso comporta talvolta problemi in fase di validazione, pertanto è preferibile usare sempre URI assoluti. Riportiamo per comodità le tre dichiarazioni per ciascuna DTD. Potete usarle nelle vostre pagine con un semplice copia e incolla. **** DTD Strict **** **** DTD Transitional **** **** DTD Frameset **** L'argomento DTD merita comunque un approfondimento. E' ciò di cui parleremo nella prossima lezione. ***** Riferimenti ***** Come_vivere_meglio_con_XHTML: recente articolo apparso su A list apart con trucchi e suggerimenti su un uso appropriato del DOCTYPE. Giunti a questo punto dovrebbe essere ormai chiara la funzione di una DTD: descrivere in un linguaggio comprensibile da una macchina la sintassi e la grammatica di un linguaggio XML. Il tutto allo scopo di verificare la validità di un documento che a quella DTD fa riferimento. Le DTD XHTML 1.0 sono contenute in tre documenti che potete anche scaricare sul vostro computer, sia per imparare come sono fatte sia per usarle direttamente nel vostro sito. In questo modo dovrete modificare l'URI nella dichiarazione DOCTYPE: Nell'esempio si suppone che la DTD sia localizzata nella cartella DTD di un server miodominio.it. Se ciò può sembrare una bizzarria ora non lo sarà forse tra qualche anno quando milioni di browser tenteranno di convalidare documenti XHTML contro le DTD del W3C. E' evidente che il pericolo è quello di rallentamenti e strozzature. L'aspetto su cui ora vogliamo soffermarci è il contenuto di una DTD. Il codice è quanto di più criptico si possa immaginare, ma non mancano manuali che spiegano bene come interpretarle. Facciamo un esempio. Ecco come viene definito nella DTD Strict l'uso dell'elemento : Traduzione in italiano: L'elemento immagine è vuoto (EMPTY). Puo assumere tutti gli attributi fondamentali (%attrs;): sono quelli comuni alla maggior parte degli elementi (id, class, style, title). Altri attributi possibili sono: src, alt, longdesc, width, height, usemap, ismap. Src e alt sono obbligatori (#REQUIRED). Gli altri opzionali (#IMPLIED). Conoscere il contenuto di una DTD è dunque importante. Se non inserite, per esempio, l'attributo alt per un'immagine e validate la pagina vi verrà segnalato l'errore e potrete correggerlo. Ma se si conoscono le regole in partenza è certamente meglio, si eviterà di procedere per prova e correzione d'errore. Per fortuna non è necessario imparare una DTD. Esistono per lo scopo ottime reference, elenchi di tutti i tag, degli attributi e degli eventi consentiti che spiegano in dettaglio il loro uso. Nella sezione riferimenti in fondo alla pagina segnaliamo un paio di reference online, ma le trovate anche nei migliori manuali su XHTML o HTML. Il riferimento ad HTML non deve stupire. Le tre DTD XHTML 1.0 sono infatti basate sulle corrispondenti DTD elaborate per HTML 4.0. Vedremo ora quali sono le principali caratteristiche di ciascuna. ***** DTD Strict ***** E' la DTD più rigida, centrata esclusivamente sulla struttura del documento. Elimina diversi elementi ed esclude tutti gli attributi che definiscono la presentazione. Per questo scopo vanno usati i CSS. Segue un elenco degli elementi non supportati: , ,
, , , , ,