1 dicembre 05
Quando si parla di validità o di conformità di documenti XML spesso si confondono o sovrappongono termini che vogliono dire cose diverse. Proviamo a fare un po’ di luce per sgomberare il campo da equivoci.
Un documento è ben formato quando è strutturato in maniera conforme alle regole espresse in questa sezione 2.1 delle specifiche XML. Ovvero:
In spiccioli, un documento è ben formato quando tutti i suoi elementi sono annidati correttamente, secondo le regole dell’XML, ed esiste un’unica radice. E’ dunque una proprietà puramente sintattica.
Un documento può essere ben formato anche se usa tag e attributi che non sono noti. La buona forma è infatti indipendente dal “vocabolario usato”. Dunque potremmo usare nel nostro documento anche tag inventati da noi. Se sono annidati correttamente esso rimarrebbe ben formato. Però non sarebbe valido, nel senso che ora vediamo.
Un documento XML è valido se:
La validità dunque è la conformità con la DTD. Solo ciò che viene indicato nella DTD è importante. Ovviamente, è necessario che sia pure ben formato (prerequisito di tutti i documenti XML, sia che abbiano una DTD che non ce l’abbiano): ma solo gli elementi e gli attributi indicati nella DTD indicata sono in questo caso utilizzabili.
La validità ha a che fare con la grammatica del documento, non solo con la sintassi. Nella DTD è indicata (nella descrizione di elementi e attributi) anche la semantica degli elementi e degli attributi ammessi. Nell’XHTML 1.0 la semantica è la stessa di HTML 4.01.
Validità e conformità con le specifiche XHTML sono ancora due cose diverse. La conformità è il rispetto di ulteriori regole stabilite nella sezione 3.1 della specifica per l’XHTML.
Il documento deve:
a, label e form non possono rispettivamente contenere altri elementi con il proprio nome; e pre e button non possono contenere degli altri elementi elencati nella specifica.html.xmlns con la seguente indicazione: “http://www.w3.org/1999/xhtml.”. Il risultato per una pagina in italiano è: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">.Dunque la conformità di un documento XHTML alle specifiche è ben più della validità: comporta la conformità ad una serie di regole più stringenti, e solo il rispetto di queste regole attesta la conformità alle specifiche.
I validatori non sono dunque sufficienti per accertare in maniera automatica la conformità di un documento alle specifiche. Possono solo indicare la validità (cioè la buona forma del codice nel caso dell’XHTML e l’utilizzo di elementi e attributi consentiti nel caso di HTML e XHTML).
Non possono nemmeno chiarire se la semantica utilizzata è corretta o meno, e se il contenuto degli attributi e degli elementi è sensato e comprensibile.
Paradossalmente, per quanto attiene all’accessibilità, la semantica del documento è molto più importante delle altre regole formali. Ad esempio, alle volte è più importante che un elemento abbia una corretta semantica piuttosto che abbia una buona forma, almeno per i browser attuali.
Infatti, i browser attuali sono abituati ad affrontare, entro certi limiti (non in qualunque caso) una cattiva forma del documento, restituendo comunque all’utente una resa comprensibile, anche se non sempre univoca, del contenuto. Ma l’assenza di una corretta semantica, cioè un uso improprio dei marcatori in relazione al senso del contenuto ostacola irrimediabilmente alcune funzionalità delle tecnologie assistive.
Ad esempio alcuni lettori di schermo consentono di navigare nel documento saltando di titolo in titolo, evitando il contenuto. O attraverso le liste. Anche se spesso sono in grado di sopportare (cioè di non esibire comportamenti eccentrici) la mancata chiusura di qualche tag. Se i titoli o le liste non sono correttamente marcati queste funzionalità vengono meno. Mentre se non sono tutti chiusi il meccanismo può funzionare lo stesso.
Questa situazione non è presa in considerazione da nessuno dei concetti sopra visti, perché la buona forma è addirittura il primo dei requisiti del codice XML. Dunque non è previsto il superamento di nessuna verifica se, ad esempio, un tag non è correttamente chiuso. Anche se in realtà tutti i browser in uso attualmente sono in grado di affrontare molti di questi problemi senza creare particolari ostacoli agli utenti.
La realtà è ben diversa dalla teoria per ragioni storiche. In HTML il concetto di buona forma non esiste (sebbene in SGML progenitore di entrambi i linguaggi, esista il concetto di “non-overlapping”, di non sovrapposizione degli elementi) e nelle specifiche non viene specificato cosa dovrebbero fare gli user agent quando incontrano codice che non annida in maniera appropriata gli elementi.
In questo modo, ogni browser ha escogitato propri modi per affrontare il codice HTML mal annidato. Se siete interessati al come, c’è un interessante articolo di Ian Hixie al riguardo su come si comportano Explorer, Mozilla e Opera con codice che oggi chiamiamo mal formato.
Dato che per anni il codice HTML è stato quanto di peggio formato si potesse avere, è chiaro che nessun browser che non fosse in grado di dare comunque un senso al contenuto non avrebbe avuto alcuna speranza di successo commerciale.
Il fatto che XML prescriva ora agli user agent di interrompere l’interpretazione di codice valido ci pone in una situazione paradossale: nessun browser ha davvero bisogno di questo rigore, e, anzi, se rispettasse questo vincolo creerebbe agli utenti molti più problemi di quanti non ne risolverebbe!
Ecco perché, sebbene in teoria è sensato e corretto dire che i documenti devono essere validi e ben formati, in realtà ed entro certi limiti non è sempre così importante quanto il fatto che abbiano una buona semantica – e ovviamente che abbiano contenuti di buona qualità. Tuttavia non c’è un modo per dirlo nelle specifiche del W3C, che per loro natura possono normare solo la correttezza sintattica e grammaticale del codice. E’ semplicemente un dato di fatto che ci limitiamo ad accertare, dovuto a ragioni storiche.
I browser più recenti incorporano 2 diversi motori di parsing. Uno per i contenuti che riconoscono come HTML, e uno più snello (perché non deve comprendere delle regole per correggere gli errori) per i documenti XML.
Ciò che non tutti sanno, però, è che qualsiasi documento XHTML servito con il mime-type text/html viene trattato come se fosse un documento HTML, e dunque viene passato al vecchio motore di parsing, che tutti continuano ad implementare per ragioni di retrocompatibilità.
L’unico modo per attivare il motore di parsing più snello e rigoroso è fornire i documenti XHTML con il tipo mime application/xhtml+xml (o altri mime type che per brevità non affrontiamo). In quel caso, se il documento non è ben formato il browser smette di interpretarlo, e non restituisce alcun risultato se non un messaggio di errore.
Questo è desiderabile o no? Dipende da che lato guardiamo la cosa. Dal lato dell’utente questo è uno svantaggio, perché in assenza di adeguati controlli in fase di pubblicazione della pagina, si troverebbe a non fruire di alcun contenuto, neanche parziale, neanche errato o approssimato. Questo indipendentemente dalla gravità dell’errore di codice. Anche un semplice carattere non legale o un br non chiuso restituirebbe lo stesso risultato che si avrebbe con il peggior tag-soup: un messaggio di errore.
Dal lato di chi produce contenuti, questo è un onere in più: infatti bisogna effettuare dei controlli di validità su ogni materiale pubblicato, per evitare che si possano creare inconvenienti agli utenti.
Dunque, a chi giova realmente questo meccanismo? In realtà, al momento, non giova a nessuna delle due parti in causa: utente e autore di contenuti. Il vero vantaggio è di prospettiva. Infatti, la speranza degli estensori di queste regole è probabilmente di evitare in futuro che si producano pagine non conformi. Se il web fosse composto solo di pagine perfettamente ben formate, valide e conformi, allora i vantaggi sarebbero i seguenti:
Il vantaggio del rigore di XML si potrà forse apprezzare meglio su altri tipi di linguaggi, come RSS. Con questi linguaggi, che non hanno problemi di compatibilità all’indietro, i programmatori potranno decidere di realizzare motori di parsing più snelli fin da subito. Anche se il problema di implementare comunque meccanismi di correzione dell’errore si è già posto. Alcuni reader infatti leggono anche feed RSS non perfettamente validi.
In definitiva, quello della conformità e della validità, sembra un problema più teorico e di prospettiva, che di reale impatto ora come ora, ed entro – non ci stancheremo di dirlo – certi limiti. Anche se produrre codice conforme alle specifiche è pur sempre una garanzia per clienti e utenti, ed incoraggiamo a farlo, troppi sono ancora i fattori che ostacolano il mantenimento nel tempo di pagine conformi a costo zero. Se i CMS implementeranno meccanismi di correzione della cattiva forma, impedendo la pubblicazione delle pagine che non riescono a correggere, allora la pubblicazione di pagine ben formate sarà alla portata di tutti. Altro discorso per questioni come la buona semantica, che nessun programma può garantire.
In caso contrario, l’obbligo alla conformità ad ogni costo rischia di rallentare la pubblicazione di contenuti in presenza di strumenti ancora imperfetti. E come effetto collaterale ha quello di ipervalutare le competenze dei coders, di coloro cioè che fanno del solo codice valido il motivo del proprio “vantaggio competitivo”. Un vantaggio che nella realtà ha un impatto ancora basso sulla comunicazione online: tutto sembra funzionare in maniera abbastanza simile sia con codice conforme sia con codice non perfettamente conforme per una buona maggioranza di utenti – persino disabili – dati gli strumenti attuali, cosicché non si percepisce alcun vantaggio reale.
Siccome però è improbabile che semplici autori di contenuti senza competenze tecniche, che oggi pubblicano senza problemi contenuti comprensibili anche se non sempre conformi, riescano ad imparare in breve tempo i segreti di Pulcinella del codice valido (è un altro mestiere…), ecco che si rischia di creare un bisogno artificiale, quanto meno non compreso. In nome del codice valido i semplici autori di contenuti diventano non più sufficienti, e devono essere affiancati o sostituiti da esperti di codice, almeno in assenza di strumenti più evoluti. E’ davvero questa la competenza più importante quando si tratta di pubblicare online? O non conta di più forse la capacità di scrivere contenuti interessanti e corretti dal punto di vista della lingua italiana e appropriati alla strategia comunicativa? Non dovrebbero forse esistere degli strumenti che semplicemente consentano anche ad autori che non conoscono l’HTML di pubblicare codice comunque valido senza tanti problemi, se vogliamo diffondere una reale democrazia di rete?
Ai poster (dei prossimi convegni scientifici) l’ardua sentenza…
Sezione: blog - Argomenti: (x)html, web semantico |
I commenti sono chiusi per questo articolo.
Il risultato per una pagina in italiano è:
xml:lang=”it” lang=”it”
ciao,
Andrea.
Grazie, corretto.
bè non è tutto rosa e fiori: faccio presente che esistono almeno 7 diverse (molto diverse) varianti di RSS, poi c’è atom (anche lì 2 o 3 versioni diverse…)
insomma per adesso non ho visto un uso lato client di xml che non dia problemi… bisogna sempre rompersi la testa con rompicapi sulle versioni delle specifiche e (in)compatibilità varie.
Il mio augurio è per un futuro + standard e per specifiche più condivise.
ciao,
Andrea.
Il fatto che ci siano molti dialetti, poi, in qualche maniera però è incoraggiato da XML stesso, che è un metalinguaggio che incoraggia alla creazione di linguaggi. Questo è insomma un problema che suppongo si ripeterà in futuro, con altre specifiche, e che è addirittura connaturato a XML. Almeno però rispetteranno tutti le stesse regole di fondo e saranno più facilmente e univocamente parsabili, nonché comunque estensibili: credo che alla fine il vantaggio si riduca a questo, e non è poco. Ma per ora non è nemmeno molto… :)
“Il vantaggio del rigore di XML si potrà forse apprezzare meglio su altri tipi di linguaggi, come RSS. Con questi linguaggi, che non hanno problemi di compatibilità all’indietro, i programmatori potranno decidere di realizzare motori di parsing più snelli fin da subito. Anche se il problema di implementare comunque meccanismi di correzione dell’errore si è già posto. Alcuni reader infatti leggono anche feed RSS non perfettamente validi.”
Facevo solo presente che non è vero che RSS non ha problemi di compatibilità all’indietro… da come hai scritto sembra così... poi bisogna anche vedere cosa intendi per compatibilità all’indietro: usando XSL posso trasformare da un formato all’altro, ma faccio presente che dal punto di vista semantico sarebbe un’ecatombe.
RSS sono troppo diversi tra loro per avere una reale compatibilità: col vero web semantico, le ontologie e le inferenze forse si può sperare in questa compatibilità.
ciao,
Andrea.
Inoltre, i problemi di compatibilità fra formati RSS si possono anche risolvere scegliendo i due formati più diffusi. Per di più è un problema per lo più dei feed reader, non tanto degli autori. Terzo: ma questo non era già prevedibile quando ci hanno detto che con XML chiunque può costruirsi il suo linguaggio? Io mi preparerei a vederlo accadere anche in futuro…
Quarto, anch’io come altri ho delle perplessità sul web semantico immaginato dal W3C e sulla realizzabilità delle ontologie e gli algoritmi inferenziali. Può darsi che queste perplessità siano fuori luogo, ma a me pare qualcosa che l’intelligenza artificiale sta cercando senza successo da troppo tempo, per sperare che risolverà tutti i problemi. Insomma, se dal punto di vista teorico sono perplesso, aspetto di vedere le applicazioni pratiche, fra dieci – vent’anni… ;-)
Tu hai ragione a dire che è invece un problema di standard. Ma del lato commerciale e politico dello standard, non di quello tecnico. Il problema è che gli standard sono emessi da istituti normatori che sono accettati dalle industrie di settore. Nel campo del web, a parte che il W3C non è un ente normatore (l’ISO lo è), pare che le specifiche non siano tanto accettate da chi dovrebbero farlo, cioè i produttori di browser, di cms, di sistemi operativi… ognuno implementa il sottoinsieme degli standard che gli pare. Questo non succede con i fogli di carta. Non è che l’A4 Fabriano è largo 211 millimetri. E’ sempre largo 210.
Ma questo è un problema di status del W3C, temo. In parte è forse un problema di bontà di alcuni standard. E rimarrebbero comunque problemi legati alla compatibilità all’indietro. Insomma, il materiale di discussione non manca certo…
il W3C sembra davvero per certi versi un meccanismo all’italiana che fa le norme ma non le fa rispettare… ;-) sarà per questo che lo trovo adorabile?
daltronde il w3c è formato praticamente da quasi tutte quelle aziende che poi devono interessarsi delle norme ISO…
dal punto di vista teorico la collaborazine (se non addirittura una dipendenza da parte dell’ISO verso il W3C) dovrebbe essere molto maggire di quanto appare ora.
ciao ciao
Le istituzioni (UE e governo italiano, ad esempio) recepiscono già le raccomandazioni. Il problema sono le aziende che producono browser, tecnologie assistive, CMS e sistemi operativi.
Però, nel caso di XML, siamo sicuri che non sia nella natura stessa della specifica il rischio di avere numerosi linguaggi per lo stesso scopo?...
Tempo fa c’era anche chi suggeriva di farsi la propria DTD per le pagine web per far validare l’elemento
embed...http://www.cssplay.co.uk/menus/dropdownfun.html
inserisci delle tabelle nei links (sì hai capito bene) per correggere errori delle varie versioni di IE
che ne pensi?