L’accessibilità non è solamente un problema tecnico, ovvero legato a particolari linguaggi di markup o a tecnologie specifiche; un sito può essere tecnicamente accessibile, ma di fatto non fruibile per un disabile.
Dopo alcune brevissime considerazioni di carattere “filosofico” sulle prassi che gli sviluppatori dovrebbero seguire ed una panoramica su XHTML e CSS, verranno introdotte le priorità e le conformità stabilite dalle WCAG 1.0 e dalle future WCAG 2.0; infine, saranno mostrati dei tools per l'analisi e la validazione dell'accessibilità.
1. 3° Workshop
Accessibilità:
“primi passi per un mondo fruibile da tutti”
TECNICHE E VALIDAZIONE
dott. Dario Santarelli
e-Lios s.r.l. (Area Sviluppo)
Email: dario.santarelli@unicam.it
Mobile: +39 333 3742535
WeBlog: http://www.dariosantarelli.wordpress.com
2. Sommario
Introduzione
Accessibilità: un fatto tecnico?
Separazione tra presentazione e contenuto
XHTML e CSS
Il supporto dei browser
WAI WCAG 1.0
Alcune Demo
WAI WCAG 2.0
Confronto con il passato
Validazione dell’ accessibilità
I migliori strumenti
Conclusioni
4. Accessibilità: un fatto tecnico?
Schiacciante verità: un sito può essere tecnicamente accessibile, ma
di fatto non fruibile per un disabile… La vera sfida del Web è l’ usabilità!
Dov’è il Problema?
L'accessibilità, così come è concepita dalle attuali WCAG 1.0, rivolge le sue
raccomandazioni al "content developer” (Someone who authors Web
pages or designs Web sites“)
Progettista/Web Designer
Sviluppatore
L’autore dei contenuti
Alcune raccomandazioni delle WCAG 1.0 hanno a che vedere con
l’usabilità, ma non forniscono metodologie.
Il primo passo per creare siti accessibili è creare siti che siano
accessibili alle macchine. La migliore chance per ottenere ciò è usare
linguaggi di markup standard.
6. Separare il contenuto dalla Presentazione
Il contenuto di un documento è ciò che questo comunica
all'utente attraverso linguaggio naturale, immagini, suoni,
filmati, animazioni, ecc.
La presentazione di un documento è il modo in cui il
documento è riprodotto
(es. stampato, presentazione grafica bi-dimensionale, presentazione solo
testuale, discorso riprodotto da un sintetizzatore, braille, ecc.)
Tutti i possibili tipi di presentazione di un documento
dovrebbero mostrare contenuti equivalenti
Prevedere più canali sensoriali
Non prevedere vincoli su parametri di utilizzo di un
determinato “user agent”
7. Separare il contenuto dalla Presentazione
Primo passo da compiere: eliminare dal codice HTML gli
elementi e gli attributi di presentazione.
A partire dalla versione 4 delle specifiche HTML, l'uso di elementi
e attributi di presentazione è stato disapprovato dal W3C in
favore, appunto, dell'uso dei fogli di stile.
Presentazione: Impatto dei CSS sul Web
Riduzione del peso medio di una pagina del 50-60%.
Possibilità di presentazioni alternative, ciascuna adatta alla
riproduzione su una differente periferica (schermo, stampa,
sintetizzatori vocali, ecc.)
Ottenimento di un codice (x)HTML più lineare e pulito, senza il
ricorso ad artifici sconsigliati per l'accessibilità
8. Presentazioni alternative
Più dispositivi = Più presentazioni
I browser non offrono un supporto uniforme
ed universale al cambio automatico del foglio di
stile a seconda del tipo di media.. Si deve spesso
ricorrere a Tecniche di Style Switching
Terminali / Telescriventi / Palmari
(media="tty” o media=“handheld”)
Impossibile trovare un foglio di stile universalmente
adatto
Braille
(media=“braille”)
Sono realmente supportati dai CSS?
Uno sviluppatore vedente possiede le
competenze per generare un tale foglio di stile?
Sintetizzatori vocali
(media=“aural”)
Praticamente nessuno sviluppatore conosce le
esigenze di ascolto dell’utente finale..
CSS 2 Media Types
all
aural
braille
embossed
handheld
print
projection
screen
tty
tv
9. XHTML (eXtensible HyperText Markup Language)
XHTML è il successore di HTML
XHTML 1.0 = riformulazione di HTML 4.01 in XML 1.0
Obiettivi
Separazione tra la struttura del documento e la presentazione
utilizzare CSS preferibilmente esterni
Riformulare HTML come XML
Versioni
XHTML 1.0 Transitional
XHTML 1.0 Strict
XHTML 1.0 Frameset
XHTML 1.1
XHTML 2.0
10. Creazione di pagine XHTML (1/3)
Specificare un XHTML DOCTYPE valido
XHTML 1.0 Transitional (default in ASP.NET 2.0)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
XHTML 2.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml2.dtd">
11. Creazione di pagine XHTML (2/3)
L’elemento root deve referenziare un namespace XHTML
<html xmlns="http://www.w3.org/1999/xhtml" >
Tutti gli elementi e gli attributi devono essere “lowercase”
I valori degli attributi devono essere compresi tra “quotation
marks”
Gli elementi non vuoti che possiedono un tag di apertura devono
avere un corrispondente tag di chiusura.
Es. <br> <br></br> o <br /> (meglio!)
No “tag overlapping”
No “attribute minimization”
<input id=“mcb” type="checkbox" checked /> (NO)
Usare l’attributo ‘id’ invece dell’attributo ‘name’
12. Creazione di pagine XHTML (3/3)
Il contenuto di <script> e <style> all’interno di una pagina deve
essere compreso nella sezione CDATA
<script type="text/javascript">
<![CDATA[
function isLess(a, b) { if (a < b) return true;
else return false; }
]]>
</script>
<script type="text/javascript">
/* <![CDATA[ */
function isLess(a, b) { if (a < b) return true;
else return false;}
/* ]]> */
</script>
13. XHTML e MIME (Content) Types
W3C specifica un MIME Type per i documenti XHTML
application/xhtml+xml
Come presentare contenuti XHTML
IE6+ non supporta application/xhtml+xml
Firefox e Opera supportano application/xhtml+xml
Possibili Rendering Workarounds per IE6+:
Utilizzare il MIME Type text/html (ASP.NET default)
Utilizzare application/xml o text/xml (XML + XSL)
Negoziazione: MIME Types differenti in base al Browser
ASP.NET: evento Application_PreSendRequestHeaders
14. Usato dai browser per effettuare il corretto rendering di siti Web
sia standard-compliant che legacy
QUIRKS
Mode
DOCTYPE Sniffing (Switching)
ALMOST
Standards
Mode
Standards
Mode
FULL
Standards
Mode
Javascript Property document.compatMode
BackCompat/QuirksMode
CSS1Compat (Standards)
17. Web Content Accessibility Guidelines 1.0
Priorità
Ogni checkpoint (65 in totale) ha un livello di priorità a
seconda dell’impatto che esso possiede a livello di
accessibilità
Priorità 1: must (requisiti di base)
Priorità 2: should (rimozione di barriere per l’accessibilità)
Priorità 3: may (miglioramenti per l’accessibilità)
Conformità
Tutti i checkpoints con priorità 1 sono soddisfatti
Tutti i checkpoints con priorità 1 e 2 sono soddisfatti
Tutti i checkpoints con priorità 1,2 e 3 sono soddisfatti
La dichiarazione di conformità è responsabilità del webmaster o del content provider.
Lo spirito è quello di dimostrare l' impegno e testimoniare i risultati conseguiti.
18. Web Content Accessibility Guidelines 1.0
1. Fornire alternative equivalenti al contenuto audio e
visivo
“Fornire un contenuto che, quando viene presentato all'utente, gli
trasmetta essenzialmente la stessa funzione o scopo del contenuto
audio o visivo.”
Considerazioni
La versione testuale può essere velocemente incanalato verso la
sintesi vocale e la display braille, e può essere presentato
visivamente (in vari formati) sul video del computer o su carta.
Anche fornire equivalenti non testuali (come immagini, video e
audio pre-registrati) del testo scritto è di beneficio per alcuni utenti,
specialmente per gli illetterati o per le persone che hanno difficoltà di
lettura.
19. Web Captioning
Caption = versione testuale di una parola pronunciata
Sincronizzazione: il testo dovrebbe apparire approssimativamente nello stesso istante in
cui l’audio diventa disponibile
Equivalenza: il contenuto fornito nella versione testuale dovrebbe essere equivalente a
quello pronunciato
Accessibilità: la versione testuale deve essere leggibile da un qualunque dispositivo
Tecnologie
SMIL (Synchronized Multimedia Integration Language)
Quicktime e RealPlayer
SAMI (Synchronized Accessible Media Interchange)
Windows Media Player
Text Track
Quicktime
MAGpie
Creazione di “caption files”
Hi-Caption
Creazione di “caption files”
20. Web Content Accessibility Guidelines 1.0
2. Non fare affidamento sul solo colore
“Assicurarsi che il testo e la parte grafica siano comprensibili se
consultati senza il colore.”
2.2 [Priorità 2 per le immagini, Priorità 3 per il testo] (Sbagliato?)
Assicurarsi che le combinazioni fra colori dello sfondo e del primo piano forniscano un
sufficiente contrasto se visti da qualcuno con deficit percettivi sul colore o se visti su uno
schermo in bianco e nero.
Considerazioni
Tra primo piano e sfondo ci dovrebbe essere il massimo contrasto
possibile, privilegiando la luminosità e non il tono (frequenza).
Per gli ipovedenti, usare colori non eccessivamente luminosi e saturi,
altrimenti possono verificarsi fastidiosi fenomeni di abbagliamento.
Evitare sia Texture sotto il testo che il movimento disaccoppiato del
testo rispetto all’immagine sullo sfondo
21. Web Content Accessibility Guidelines 1.0
3. Usare marcatori e fogli di stile e farlo in modo
appropriato
“Marcare i documenti con i corretti elementi strutturali. Controllare la
presentazione con fogli di stile piuttosto che con elementi e attributi
di presentazione.”
Considerazioni
Un titolo = un contenuto
Non saltare livelli logici nell'uso delle intestazioni (H1…H6)
Scegliere bene gli elementi strutturali
Quando esiste un linguaggio di marcatori adatto, per veicolare
informazione usare un marcatore piuttosto che le immagini (es.
MathML – Mathematical Markup Language).
22. Web Content Accessibility Guidelines 1.0
4. Chiarire l'uso di linguaggi naturali
“Utilizzare marcatori che facilitino la pronuncia o l'interpretazione di
testi stranieri o abbreviati.”
Considerazioni
Contrassegnare i cambiamenti di linguaggio naturale: gli screen
reader e le periferiche braille possono selezionare automaticamente
la nuova lingua, rendendo il documento più accessibile agli utenti
multilingue.
Gli sviluppatori dovrebbero identificare il linguaggio naturale
principale del contenuto di un documento (mediante marcatori o
intestazioni HTTP).… anche per i motori di ricerca!
quando una stessa sigla ricorre più volte, viene definita da un
elemento ABBR o ACRONYM solo la prima volta che appare nel
testo
23. Web Content Accessibility Guidelines 1.0
5. Creare tabelle che si trasformino in maniera elegante.
“Assicurarsi che le tabelle abbiano la marcatura necessaria per
essere trasformate dai browser accessibili e da altri interpreti.”
Considerazioni
Le tabelle, in qualsiasi modo siano usate, presentano problemi
particolari per gli utenti con lettori di schermo
Alcuni interpreti consentono agli utenti di navigare fra le celle delle
tabelle e di accedere alle intestazioni e ad altre informazioni nelle
celle.
Due tipi: tabelle dati e tabelle di impaginazione, distinguibili
tramite relazioni semantiche (orizzontali/verticali) tra celle nella
versione linearizzata
Caso critico: tabelle di impaginazione contenenti tabelle dati.
Le tabelle dati possono essere rese accessibili, o più accessibili,
utilizzando un apposito codice di marcatura strutturale
24. Web Content Accessibility Guidelines 1.0
6. Assicurarsi che le pagine che danno spazio a nuove
tecnologie si trasformino in maniera elegante.
“Assicurarsi che le pagine siano accessibili anche quando le
tecnologie più recenti non sono supportate o sono disabilitate”.
Considerazioni
Comunicare la struttura logica unicamente per mezzo della presentazione
visuale non è una soluzione accessibile!
7. Assicurarsi che l'utente possa tenere sotto controllo i
cambiamenti di contenuto nel corso del tempo.
“Assicurarsi che gli oggetti in movimento, lampeggianti, scorrevoli o
che si autoaggiornano possano essere arrestati temporaneamente o
definitivamente”.
25. Web Content Accessibility Guidelines 1.0
8. Assicurare l'accessibilità diretta delle interfacce
utente incorporate.
“Assicurarsi che la progettazione delle interfacce utente segua i
principi dell'accessibilità: accesso alle diverse funzionalità
indipendente dai dispositivi usati, possibilità di operare da tastiera,
comandi vocali, ecc.”
9. Progettare per garantire l'indipendenza da dispositivo
“Usare caratteristiche che permettono di attivare gli elementi della
pagina attraverso una molteplicità di dispositivi di input.”
In genere, le pagine che permettono di interagire tramite tastiera sono accessibili
anche tramite input vocale o interfaccia a linea di comando.
26. Javascript e Accessibilità
Questioni Critiche
Navigazione, Contenuti Nascosti, Controllo da parte
dell’utente, Disorientamento
Soluzioni
Usare Gestori di eventi indipendenti dal dispositivo (ad esempio,
quelli che non richiedono l'uso del solo mouse)
Pagine web che utilizzano gli script devono essere completamente
navigabili da tastiera
Javascript non dovrebbe modificare o ridefinire le normali
funzionalità del browser
Nel caso in cui javascript non possa essere reso direttamente
accessibile, deve essere predisposta un'alternativa accessibile
Contenuti e funzionalità devono comunque essere accessibili
27. Web Content Accessibility Guidelines 1.0
10. Usare soluzioni provvisorie.
“Usare soluzioni provvisorie in modo che le tecnologie assistive e i
browser più vecchi possano operare correttamente.”
11. Usare le tecnologie e le raccomandazioni del W3C.
“Usare le tecnologie del W3C (in conformità con le specifiche) e
seguire le raccomandazioni sull'accessibilità. Nei casi in cui non sia
possibile usare una tecnologia del W3C, oppure se nell'utilizzarla si
ottenesse materiale che non si trasforma in maniera elegante,
fornire una versione alternativa del contenuto che sia accessibile.”
12. Fornire informazione per la contestualizzazione e
l'orientamento.
“Fornire informazione per la contestualizzazione e l'orientamento,
per aiutare gli utenti a comprendere pagine od elementi complessi.”
28. Web Content Accessibility Guidelines 1.0
13. Fornire chiari meccanismi di navigazione.
Identificare con chiarezza l'obiettivo di ogni collegamento
Creare una Mappa oppure un indice del sito
Usare meccanismi di navigazione in modo coerente.
Fornire barre di navigazione
Raggruppare i collegamenti correlati, identificare i gruppi (per gli interpreti) e, fornire un
modo per saltare il gruppo.
Se sono fornite funzionalità di ricerca, rendere possibili diversi tipi di ricerca per differenti
livelli di abilità e per preferenze diverse.
14. Assicurarsi che i documenti siano chiari e semplici.
“Assicurarsi che i documenti siano chiari e semplici in modo che possano
essere compresi più facilmente.”
Usare il linguaggio più chiaro e semplice possibile che sia adatto al contenuto di un sito.
Integrare il testo con presentazioni grafiche o uditive nei casi in cui esse possano
facilitare la comprensione della pagina.
Creare uno stile di presentazione coerente fra le pagine.
30. Web Content Accessibility Guidelines 2.0
Evoluzione delle WCAG 1.0
Stessi principi ispiratori
Struttura diversa
Si considerano anche aspetti di qualità del sito:
usabilità
rispetto delle specifiche tecniche.
Concetti generali da applicare ai contenuti web
Principi di progettazione non specifici per HTML, XML, o altre
tecnologie
Principi da applicare a una varietà di situazioni e tecnologie,
anche non ancora esistenti
Attualmente a livello di Working Draft
(aprile 2007: Candidate Recommendation)
31. Web Content Accessibility Guidelines 2.0
La struttura
Quattro principi di progettazione
Percezione: il contenuto deve essere percettibile
Operabilità: gli elementi dell' interfaccia presenti nel contenuto
devono essere azionabili
Comprensibilità: contenuto e controlli devono essere comprensibili
Robustezza: il contenuto deve essere abbastanza robusto da poter
operare con le tecnologie presenti e future
Per ogni principio, delle linee guida (13 in tutto) definiscono
come si applica il principio in un' area specifica
Per ogni linea guida, tre livelli di criteri di successo (“success
criteria”), verificabili, per definire meglio le linee guida e
determinare la conformità
32. Confronto tra WCAG 1.0 e WCAG 2.0
Stato del documento
WCAG 1.0: unico documento stabile e referenziabile (Recommendation)
WCAG 2.0: documento ancora in fase di raffinamento (Working Draft)
Conformità
WCAG 1.0: guideline con checkpoint. Conformità basata su checkpoint.
WCAG 2.0: principi, guideline e “success criteria”. Conformità basata su
success criteria.
Tecniche
WCAG 1.0: un documento contenente i link alle varie tecniche, un documento
("Core") generale, e due documenti specifici (HTML e CSS)
WCAG 2.0: un documento generale, contenente link e tecniche generali, e
vari documenti specifici (già disponibili HTML, CSS, client-side scripting, etc.)
Checklist
WCAG 1.0: lista di checkpoint raggruppati per priorità
WCAG 2.0: lista di proposizioni verificabili che specificano cosa è richiesto
per essere conformi alle WCAG 2.0 in quella specifica tecnologia
34. Validare XHTML
Un documento XHTML, come HTML è valido se
Al suo inizio è dichiarata la DTD utilizzata nel documento;
Gli elementi e gli attributi adoperati rispettano alla lettera la
sintassi per loro definita nella DTD dichiarata all'inizio
Markup Validator Service (http://validator.w3.org/)
Errori comuni:
Elementi aperti e non chiusi o viceversa
Elementi incastrati invece che annidati (p.es. <b><i> ... </b></i>,
invece di <b><i> ... </i></b>)
Uso di elementi e attributi non consentiti dalla Dtd adoperata
Uso del carattere ‘&' in una stringa di query invece di ‘&'
Uso di valori di attributo non consentiti
Il testo di <noscript> deve essere incluso in un elemento strutturale
lang invece di xml:lang
L’attributo language non può essere usato per <script> e <style>
35. Validare CSS
CSS Validator (http://jigsaw.w3.org/css-validator/)
CSS Check (http://www.htmlhelp.com/tools/csscheck/)
Errori Comuni
Mancanza del punto e virgola finale che chiude la dichiarazione di una
proprietà
Mancanza della parentesi graffa che chiude un elenco di proprietà
Un colore dichiarato in valori esadecimali non preceduti dal simbolo ‘#'
‘Sans-serif' scritto senza il trattino separatore
Nomi di classe e id non validi
Un commento (/* ... */) aperto e non chiuso, o viceversa
Risolvere gli avvertimenti (warning)
Mancata indicazione di una famiglia di caratteri generica (Sans-Serif)
Mancata definizione del colore di primo piano se è stato definito il colore di
sfondo, e viceversa
Uso di dimensionamenti fissi in luogo di quelli relativi e percentuali
36. Validazione dell’accessibilità (W3C)
WCAG 1.0 – Appendice A
“Verificate l'accessibilità per mezzo di strumenti automatici e della
revisione umana. I metodi automatici sono in genere rapidi e
convenienti ma non possono identificare tutti i problemi di accessibilità.
La revisione umana può aiutare a garantire la chiarezza del linguaggio
e la semplicità della navigazione”
Consigli W3C
Controllare con strumenti automatici la validità della sintassi (x)HTML
e CSS, nonché le misure prese per favorire l'accessibilità.
Nessun controllo automatico è in grado di valutare al 100% l'accessibilità di
una pagina web
Verificare la percepibilità dei contenuti per mezzo della vista e
dell'udito nelle più disparate condizioni d'uso
Controllare l’ortografia e valutare la leggibilità, eventualmente con
strumenti automatici
Ricorrere al giudizio possibilmente di persone con disabilità
37. Dichiarare la conformità alle WCAG 1.0
La guerra dei bollini
Una pretesa di conformità spesso senza certificazione
Di fatto è una truffa per l’utente che non ha bisogno di bollini, ma di
accessibilità
Senza revisori umani l’accessibilità non esiste
Esporre soltanto le dichiarazioni di conformità di cui si è
assolutamente sicuri e che possono essere verificate dall'utente
Predisporre nel sito una pagina, in cui dichiarate quali controlli di
revisione umana sono stati effettuati in aggiunta ai test automatici, e
quando e come sono stati eseguiti l'ultima volta.
Portale “Spazio Europa della regione Emilia Romagna”
Conformità ad HTML 4.01, CSS 2.0, Bobby AAA e Bobby Section
508, WCAG 1.0 AAA … NOOOO!
Diffidare di siti con abbondanza di bollini, soprattutto se sono
teoricamente incompatibili
38. I migliori strumenti automatici
AIS (Web Accessibility Toolbar) IE
Web Developer (Firefox)
Internet Explorer Developer Toolbar IE
Lynx Browser/Viewer
Fang (Firefox)
HTML Tidy
strumento a linea di comando molto potente: è in grado di individuare e correggere
errori di sintassi (X)HTML e di fornire utili suggerimenti per il miglioramento
dell'accessibilità. Ora su Source Forge
A-Prompt
Un valutatore dell'accessibilità sviluppato dall'Università di Toronto, da scaricare in
locale: è in grado di fornire indicazioni di conformità sia alla Section 508 sia alle
WCAG 1.0.
Wikipedia (Paragone tra Screen Reader)
( http://en.wikipedia.org/wiki/List_of_screen_readers )
39. I migliori strumenti automatici
WebXact (http://webxact.watchfire.com)
Strumento di validazione on line della Watchfire, la stessa casa produttrice di Bobby.
Offre all'incirca le stesse informazioni di Bobby, ma in un modo più organizzato ed
usabile.
Cynthia Says portal (http://www.contentquality.com)
Consente una valutazione dell'accessibilità che si estende in qualche misura anche
alla proprietà dei testi alternativi: valuta per esempio la lunghezza dei testi ALT e se
questi ripetono il nome dell'immagine a cui si riferiscono.
Torquemada (http://www.webxtutti.it)
Valutatore automatico dell'accessibilità tutto italiano, sviluppato dalla Fondazione Ugo
Bordoni.
WAVE 3.5 Accessibility Tool (development version) (
http://dev.wave.webaim.org)
I risultati della validazione sono rappresentati graficamente e gli avvertimenti sono
contestuali alla posizione di rilevamento.
Web Accessibility Checker (http://checker.atrc.utoronto.ca)
Supporto alla Legge Stanca
40. Conclusioni
Consigli Finali per una buona accessibilità
Separare SEMPRE la presentazione dal contenuto
Usare DTD rigorose (es. XHTML 1.1 o XHTML 1.0 Strict)
Mai basarsi sul colore per fornire informazioni
Evidenziare la struttura logica dei contenuti testuali
H1,H2,H3 etc.
Realizzare moduli accessibili
FIELDSET, LEGEND, LABEL etc. + CSS
Massima attenzione alle tabelle dati
TH, SUMMARY, CAPTION etc.
Occhio alla linearizzazione dei contenuti (sostituire le tabelle usate
a scopo di impaginazione con soluzioni basate sui CSS)
Scrivere testi accessibili e non dipendenti da un ambito
41. Conclusioni
Consigli Finali per una buona accessibilità
Non usare i FRAME
Assicurarsi di scrivere XHTML e CSS validi
Usare revisione automatiche per gli errori di accessibilità legati
al codice
Usare la revisione umana
Porsi come obiettivo il raggiungimento di un'accessibilità
reale
- Se negli obiettivi delle due discipline si ha in certi casi una più o meno ampia sovrapposizione, la differenza tra accessibilità e usabilità diviene più chiara quando si guarda ai rispettivi metodi
Il primo passo per creare siti accessibili è creare siti che siano accessibili alle macchine. La migliore chance per ottenere ciò è usare HTML standard
Insomma, rendere una pagina web accessibile alle macchine (computer e browser) e flessibile nella struttura sono gli obiettivi principali a cui evidentemente puntano le raccomandazioni di accessibilità.
In ciò la differenza con l&apos;usabilità è grande: quest&apos;ultima infatti lavora essenzialmente sull&apos;interazione tra la pagina e gli utenti, anzi le specifiche categorie di utenti considerate come pubblico di riferimento dei siti da testare.
&lt;number&gt;
Ai fini dell&apos;accessibilità, la cosa fondamentale è che tutti i possibili tipi di presentazione di un documento riescano a mostrare all&apos;utente, se non proprio lo stesso contenuto, almeno un suo valido equivalente
Ci interessa qui soprattutto il secondo punto. I vincoli possono essere di vario tipo: dall&apos;uso di elementi e attributi che favoriscono un solo tipo di presentazione (tipicamente quella visuale) e che vengono mescolati inestricabilmente ai contenuti, all&apos;uso di soluzioni di impaginazione che rendono la pagina scarsamente leggibile se caricata in un browser senza supporto per i fogli di stile.
&lt;number&gt;
I criteri di formattazione possono oggi tranquillamente essere applicati per mezzo dei fogli di stile o CSS (acronimo di &quot;cascading style sheets&quot;: tradotto in italiano, &quot;fogli di stile a cascata&quot;). A partire dalla versione 4 delle Specifiche HTML, l&apos;uso di elementi e attributi di presentazione è stato disapprovato (&quot;deprecated&quot;, in inglese) dal W3C in favore, appunto, dell&apos;uso dei fogli di stile.
In primo luogo, definire la presentazione per mezzo dei CSS consente di ridurre il peso della pagina, talvolta del 50-60% o anche più: già questo rappresenta un grosso vantaggio per l&apos;accessibilità.
In secondo luogo, l&apos;uso dei CSS consente di specificare una serie di presentazioni alternative, ciascuna adatta alla riproduzione su una differente periferica (schermo, stampa, sintetizzatori vocali, ecc.), mentre l&apos;uso di elementi e attributi di presentazione dell&apos;HTML favorisce essenzialmente la sola riproduzione su schermo.
In terzo luogo, demandare la presentazione ai CSS consente di ottenere un codice HTML più lineare e pulito, e di evitare per esempio il ricorso ad artifici sconsigliati per l&apos;accessibilità, quali le tabelle usate a scopo di impaginazione.
&lt;number&gt;
La conclusione di Joe Clark è che, con ogni probabilità, gli estensori delle specifiche CSS2 hanno progettato in modo totalmente teorico le caratteristiche di alcuni &quot;media type&quot;: infatti la conoscenza concreta dei dispositivi che ricadono sotto le categorie elencate dalle specifiche porta in luce una serie di problemi di non facile o impossibile soluzione, che inducono l&apos;autore a suggerire ai suoi lettori che i &quot;media type&quot; hanno in fondo, ai fini dell&apos;accessibilità, un&apos;importanza del tutto trascurabile.
Questo non vuol dire – sia ben chiaro – che non è possibile costruire grazie ai CSS valide versioni alternative di un documento. Al contrario: i fogli di stile sono uno strumento ottimo per produrre versioni alternative dotate di caratteristiche in grado di migliorare, per esempio, la leggibilità dei documenti da parte di utenti ipovedenti. Solo che, per rendere veramente funzionale l&apos;uso di queste versioni alternative, servono sistemi diversi dai &quot;media type&quot; previsti dalle specifiche CSS2.
In effetti bisogna riconoscere che l&apos;introduzione dei &quot;media type&quot; nei CSS2 si è rivelata per ora una grande promessa non mantenuta per l&apos;accessibilità
Possiamo quindi concludere che, per siti che non generano un eccessivo volume di traffico o che sono ospitati su server molto performanti, la soluzione migliore è servire agli utenti le modifiche di presentazione per mezzo di script lato server. Invece, per siti in cui il volume di traffico generato e i tempi di risposta del server possono costituire un problema, la soluzione migliore è ricorrere a script lato client, opportunamente combinati con fogli di stile alternativi.
&lt;number&gt;
Il motivo per cui si può continuare tranquillamente (o quasi...) ad ignorare le regole di base dei linguaggi HTML e XHTML, ottenendo che le proprie pagine web errate siano visualizzate ugualmente su tutti i principali browser grafici, dipende dal fatto che i produttori di quei browser, tra cui in prima fila la Microsoft, hanno da sempre, e fino a tempi molto recenti, seguito una politica di supporto debole verso gli standard prodotti dal W3C.
In altri termini, una larga parte del codice di programmazione dei browser è stata dedicata dalle case produttrici a compensare gli errori di HTML, e poi di XHTML, commessi dagli autori di pagine web: mentre un documento XML contenente violazioni alle regole di questo linguaggio semplicemente non viene riprodotto da nessun browser che supporti XML, al contrario un documento HTML o XHTML non valido - perché degli altri elementi sono intrecciati erroneamente tra loro invece che annidati - viene &quot;normalmente&quot; caricato da tutti i browser, che fanno anzi il massimo sforzo per interpretare ciò che l&apos;autore aveva voluto &quot;dire&quot; con il suo codice errato.
&lt;number&gt;
Ogni pagina HTML o XHTML valida deve cominciare con un frammento di codice, che si chiama tecnicamente document type declaration. questa dichiarazione dice al browser quale è, e dove si trova, il documento che contiene le definizioni e le regole di applicazione di tutti gli elementi e gli attributi (X)HTML utilizzati in una pagina web.
La prima raccomandazione destinata a chi vuole realizzare pagine accessibili è di cominciare a scrivere codice valido: inserire all’inizio della pagina la dichiarazione del tipo di documento a cui deve conformarsi tutto il resto del codice presente nella pagina.
XHTML 1.0 abbiamo tre differenti Dtd:
- la transitoria (&quot;transitional&quot;), che contiene elementi e attributi di presentazione;
- la rigorosa (&quot;strict&quot;), che non contiene elementi e attributi di presentazione;
- quella per le pagine che contengono frame (&quot;frameset&quot;). In un sito concepito e sviluppato in base a criteri di accessibilità, non c’è nessun obiettivo vantaggio conseguibile per mezzo di pagine basate sui frame.
XHTML 1.0 Transitional
La Dtd transitoria, sia in HTML sia in XHTML, va utilizzata quando desideriamo comporre pagine compatibili con i browser grafici più datati, forniti di scarso o nullo supporto per i fogli di stile. In sostanza dobbiamo ricorrere alla Dtd transitoria, quando vogliamo che le nostre pagine web siano viste più o meno allo stesso modo su Internet Explorer dalla versione 3 alla 6 e su Netscape dalla versione 3 alla 7.
Ciò però significa mescolare ai contenuti della pagina, in modo inestricabile, una quantità di codice avente il solo scopo di definire la presentazione visuale dei contenuti, con una serie di controindicazioni per l’accessibilità già discusse.
XHTML 1.0 Strict
La nostra raccomandazione, perciò, è quella di costruire pagine web basate sulla Dtd rigorosa: è solo questa, infatti, che può assicurare la maggiore indipendenza dei contenuti della pagina dai suoi aspetti di presentazione, e quindi la possibilità di accedere debitamente ai contenuti per il maggior numero possibile di programmi utente, al limite persino Mosaic 1.0, ammesso che ci sia ancora qualcuno in Rete che lo utilizza!
__________________________
Ciò non vuol dire che pagine valide secondo la Dtd transitoria di HTML 4.01 o di XHTML 1.0 non siano o non possano essere rese accessibili: vuol dire soltanto che l’uso della Dtd rigorosa è il miglior punto di partenza per il raggiungimento di una elevata accessibilità.
Tuttavia, benché una pagina web conforme ad HTML 4.01 strict possa essere altrettanto accessibile della medesima pagina conforme ad XHTML 1.0 strict, il nostro consiglio è di utilizzare la Dtd rigorosa di XHTML 1.0. Il linguaggio XHTML nasce infatti per estendere all’HTML i benefici di interoperabilità e di estensibilità propri del linguaggio XML. Produrre una pagina web in XHTML 1.0 significa mantenere un piede nel passato e metterne uno nel futuro: consente infatti, da un lato, di non perdere la compatibilità con i vecchi browser, dall’altro di avere un prodotto già predisposto ad essere utilizzato da futuri programmi utente basati in modo estensivo su XML.
____________________________
Le specifiche XHTML 1.1, invece, sono basate su una serie di moduli per lo più strutturali ed eliminano completamente gli elementi e gli attributi disapprovati nelle precedenti specifiche. Come conseguenza della modularizzazione del linguaggio, sono state eliminate le tre Dtd presenti in HTML 4 e XHTML 1.0. In sostanza, l’unica Dtd di XHMTL 1.1 è una evoluzione della Dtd strict di XHTML 1.0.
Se il nostro consiglio rimane quello di creare per il momento pagine web accessibili basate sulla Dtd rigorosa di XHTML 1.0 invece che sulla Dtd di XHTML 1.1, la ragione è semplicemente questa: XHTML 1.1, proseguendo il suo cammino di adeguamento al rigore formale di XML, ha reso del tutto fuori standard l’uso dell’attributo &quot;name&quot; negli elementi A e MAP. Ciò si traduce in una perdita di compatibilità con i vecchi browser, che eseguono il collegamento ad un segnalibro solo se questo è definito per mezzo di un attributo &quot;name&quot; all’interno dell’elemento A. XHTML 1.0 usa a tal proposito una soluzione di compromesso: consente che, accanto all’uso legale di specificare i segnalibri tramite l’attributo &quot;id&quot;, sopravviva l’uso consolidato - conforme alle vecchie versioni di HTML - di specificarli per mezzo di &quot;name&quot;, sia pur con alcune limitazioni (i valori di &quot;name&quot; devono essere unici all’interno del documento, identici a quelli dei corrispondenti valori di &quot;id&quot; e devono rispettare, perciò, le restrizioni di nomenclatura previste per i valori di &quot;id&quot;).
In order to keep everyone happy, Microsoft created a new configuration option, named xhtmlConformance, that you can set in your Web site&apos;s configuration file. The new configuration option enables you to specify the level of XHTML conformance of your Web pages.
By default, xhtmlConformance is set to the value transitional. However, you can also set this option to the value strict or legacy.
If you set the xhtmlConformance option to strict, then certain attributes will no longer be rendered by the standard ASP.NET controls. For example, the ASP.NET &lt;form&gt; control will no longer render a name attribute. Unless your ASP.NET pages contain (non-standards-compliant) client-side scripts, you won&apos;t notice any changes when switching from transitional to strict mode.
If you set the xhtmlConformance option to legacy, then the ASP.NET framework will revert to ASP.NET 1.1 rendering behavior for some elements and attributes (but not all). In this case, the ASP.NET framework will render content that is not compatible with any XHTML standard, and your pages will no longer validate against the XHTML standards. For example, in legacy mode, the &lt;br&gt; tag is not rendered with its required XHTML closing slash (&lt;br /&gt;). Setting xhtmlConformance to legacy mode only makes sense when you run into a problem migrating an existing ASP.NET 1.1 application to ASP.NET 2.0.
The default behavior of the ASP.NET 2.0 framework is to render pages that validate against XHTML 1.0 Transitional. Most developers building Web sites will want to target this standard, because it is the standard that is the most compatible with existing HTML pages. However, there are situations in which this standard might be either too lax or too strict. After all, the goal of the XHTML 1.0 Transitional standard is to act as a springboard to these more restrictive standards
The W3C has also published XHTML 1.1 as a recommendation (on May 31, 2001). XHTML 1.1 is very similar to XHTML 1.0 Strict. The primary difference is that XHTML 1.1 can be extended with additional modules in order to support new elements. You can, for example, build XHTML 1.1 pages that also include elements from the MathML (the Mathematical Markup Language), or SVG (the Scalable Vector Language), or a custom module of your own creation.
Finally, the W3C is working on a recommendation for XHTML 2.0. Because XHTML 2.0 is still in the draft stage, and no Web browser currently supports this standard, we won&apos;t discuss it in this paper.
&lt;number&gt;
&lt;number&gt;
If you use special characters such as &lt; or &, or entity references such as &lt; or &amp; in a script or style sheet, then you&apos;ll need to mark the contents of your script or style sheet as a CDATA (character data) section
Notice that the JavaScript function contained in the script includes a &lt; character. If you do not wrap the script in a CDATA section, then the &lt; character would be interpreted as marking the start of an XHTML tag.
Using a CDATA section will not work with all browsers. For example, Internet Explorer considers a CDATA section in a &lt;script&gt; tag a syntax error. You can avoid this problem by adding JavaScript comments
JavaScript uses /* and */ to mark the beginning and end of a comment. Therefore, the CDATA section is hidden from the JavaScript, but not from the browser that parses the page. In general, it is a better idea to place your style rules and scripts in external files and reference the files from your XHTML pages. Using external style sheets and scripts enables you to avoid all of these issues
&lt;number&gt;
&lt;number&gt;
Fortunatamente le ultime versioni dei principali browser grafici (Internet Explorer, Mozilla, Netscape, Opera) supportano dichiaratamente l&apos;uso di HTML e XHTML standard. Cambiano anzi in certa misura le modalità di riproduzione della pagina, a seconda che l&apos;autore dichiari oppure no all&apos;inizio del documento la Dtd utilizzata. Nel secondo caso, i browser possono entrare in una modalità definita &quot;quirk&quot;, cioè &quot;capriccio&quot;... Lo scopo di tale modalità è offrire allo sviluppatore una scappatoia per scrivere codice non valido &quot;alla vecchia maniera&quot; e vedere come la relativa pagina viene visualizzata dal browser in modalità retrocompatibile.
Mozilla Firefox 1+ supports three rendering modes:
FULL STANDARDS: Any document sent with an XML MIME, XHTML 1.0 strict, HTML 4.xx
ALMOST STANDARDS MODE: XHTML 1.0/HTML 4.01 Transitional/Frameset
QUIRKS MODE: assenza di DOCTYPE, HTML 4.0 Transitional/Frameset, HTML &lt; 4.0http://developer.mozilla.org/en/docs/Mozilla%27s_DOCTYPE_sniffing
Opera 7+, IE6+,Netscape 7 supports two rendering modes:
STANDARDS MODE: HTML 4.0, HTML 4.0 Strict, XHTML vX.X, Any document sent with an XML MIME
QUIRKS MODE: No DOCTYPE, HTML 4.0 Transitional/Frameset, HTML &lt; 4.0
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
SMIL (Synchronized Multimedia Integration Language) A standards-based language used by Quicktime and RealPlayer to control the layout and presentation of visual and audible items. SMIL is used to control the display, positioning, and timing of captions and audio/video multimedia. The captions themselves are stored in a Text Track file if you’re using Quicktime or a RealText file if you’re using RealPlayer.
SAMI (Synchronized Accessible Media Interchange) Microsoft’s technique for adding captions for Windows Media Player. A SAMI file contains the text to be displayed within the captions and information that synchronizes individual caption displays to the multimedia presentation.
Text Track Quicktime uses a Text Track file to store the caption text and synchronization (timing) information. RealText RealPlayer uses a RealText file to store the captions text and synchronization (timing) information.
MAGpie Developed by the CPB/WGBH National Center for Accessible Media (NCAM), MAGpie is a free tool for creating caption files that can be utilized by media players.
Hi-Caption HiSoftware&apos;s Hi-Caption allows creation of captions for media players.
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
Quando lo sviluppatore contrassegna in un documento i cambiamenti di linguaggio naturale, le sintesi vocali e le periferiche braille possono selezionare automaticamente la nuova lingua, rendendo il documento più accessibile agli utenti multilingue. Gli sviluppatori dovrebbero identificare il linguaggio naturale principale del contenuto di un documento (mediante marcatori o intestazioni HTTP). Gli sviluppatori dovrebbero anche sciogliere le abbreviazioni e gli acronimi.
Oltre a facilitare le tecnologie assistive, contrassegnare il linguaggio naturale permette ai motori di ricerca di trovare parole chiave e di identificare documenti nel linguaggio desiderato. Il contrassegno del linguaggio naturale, inoltre, consente a tutti la leggibilità del Web, compresi quelli che hanno difficoltà di apprendimento, cognitive e i sordi.
Quando i cambiamenti di lingua e le abbreviazioni non vengono identificati, possono risultare indecifrabili per la lettura da parte dei dispositivi di sintesi vocale e di quelli braille.
Notate inoltre che quando una stessa sigla ricorre più volte, viene definita da un elemento ABBR o ACRONYM solo la prima volta che appare nel testo: è il caso, nel nostro paragrafo di esempio, della sigla DNS. Ciò obbedisce al suggerimento contenuto nel punto di controllo 4.2 delle WCAG 1.
&lt;number&gt;
&lt;number&gt;
Sebbene gli sviluppatori siano incoraggiati a usare nuove tecnologie che risolvano problemi creati da tecnologie esistenti, essi dovrebbero sapere come far sì che le loro pagine funzionino anche con browser più vecchi e con persone che scelgono di disabilitare alcune caratteristiche.
Il punto di controllo 6.1 delle WCAG 1.0 raccomanda esplicitamente agli sviluppatori di produrre documenti che rimangano significativi anche se riprodotti senza fogli di stile: valorizzare nel modo più corretto la struttura logica dei contenuti è il modo migliore per ottenere questo risultato.
Alcune persone con disabilità cognitive o visive non riescono a leggere testo in movimento con velocità sufficiente, oppure non sono in grado di leggerlo affatto. Il movimento può anche causare una distrazione tale da rendere illeggibile il resto della pagina per persone con disabilità. I lettori di schermo non sono in grado di leggere testo in movimento. Persone con disabilità fisiche potrebbero non essere in grado di muoversi con velocità o precisione sufficienti ad interagire con oggetti in movimento.
Nota. Tutti i punti di controllo che seguono presuppongono un certo livello di responsabilità da parte degli sviluppatori fino a quando gli interpreti non forniranno adeguati meccanismi di controllo delle diverse caratteristiche.
Nota. Gli elementi BLINK e MARQUEE non sono definiti in alcuna delle specifiche HTML del W3C e non dovrebbero essere usate
&lt;number&gt;
Quando un oggetto incorporato possiede una &quot;sua propria interfaccia&quot;, l&apos;interfaccia -- così come l&apos;interfaccia dello stesso browser -- deve essere accessibile. Se l&apos;interfaccia dell&apos;oggetto incorporato non può essere resa accessibile, deve essere fornita una soluzione alternativa accessibile.
Nota. Per informazioni sulle interfacce accessibili, si prega di consultare le User Agent Accessibility Guidelines ([WAI-USERAGENT]) e le Authoring Tool Accessibility Guidelines ([WAI-AUTOOL]).
Accesso indipendente da dispositivo significa che gli utenti possono interagire con l&apos;interprete o con il documento con il dispositivo di input (output) preferito -- mouse, tastiera, voce, bacchette manovrate con la testa, o altro. Se, per esempio, il controllo di un modulo può essere attivato solo con un mouse o un altro dispositivo di puntamento, qualcuno che sta usando la pagina senza usare la vista, con input vocale o con una tastiera, oppure chi sta usando qualche altro dispositivo di input non a puntamento non riuscirà ad usare il modulo.
Nota. Fornendo equivalenti testuali per immagini sensibili o per immagini usate come collegamento si dà agli utenti la possibilità di interagire con esse senza un dispositivo di puntamento. Vedi anche la Linea guida 1.
In genere, le pagine che permettono di interagire tramite tastiera sono accessibili anche tramite input vocale o interfaccia a linea di comando.
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
Chiari e coerenti meccanismi di navigazione sono importanti per persone con invalidità cognitive o per i non vedenti, e giovano a tutti gli utenti.
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
CSS Check, presente sul sito WDG Web Design Group e analogo al CSS Validator, fornisce avvertimenti ancora più dettagliati (ha però il limite di non supportare adeguatamente le nuove proprietà introdotte dalle specifiche CSS2 rispetto alle precedenti specifiche CSS1). tra i &quot;warning&quot; più frequenti, ce ne sono tre in particolare di cui è utile tenere conto:
la mancata indicazione di una famiglia di caratteri generica
la mancata definizione del colore di primo piano se è stato definito il colore di sfondo, e viceversa
l&apos;uso di dimensionamenti fissi in luogo di quelli relativi e percentuali
Il secondo avvertimento importante per l&apos;accessibilità è quello che compare quando per un oggetto della pagina è definito il colore di primo piano e non quello di sfondo, e viceversa. La ragione per cui è importante che siano definiti entrambi i colori è che un utente potrebbe sostituire una combinazione di colori personalizzata a quella predefinita del browser o del sistema operativo. Ciò potrebbe portare, nel caso in cui nel CSS sia definito per esempio solo il colore dello sfondo di un blocco e non quello del testo, ad avere una combinazione primo piano/sfondo del tutto illeggibile, basata sul colore di sfondo definito nel CSS e sul colore di primo piano definito dallo stile personalizzato usato dall&apos;utente.
Il terzo tipo di avvertimento importante per l&apos;accessibilità riguarda l&apos;uso di dimensioni fisse piuttosto che relative. Si riceve questo avviso quando impostiamo nel CSS delle misure in punti (pt), centimetri (cm), millimetri (mm), pica (pc) o pollici (in), ovvero le misure di lunghezza assolute definite dalle specifiche CSS2.
usare le misure relative– em, ex e px (pixel) – o le misure percentuali(p.es. 120%) al posto di quelle assolute.
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
HTML Tidy – Sviluppato da Dave Raggett, uno dei creatori del linguaggio HTML, è uno strumento a linea di comando molto potente: è in grado di individuare e correggere errori di sintassi (X)HTML e di fornire utili suggerimenti per il miglioramento dell&apos;accessibilità.
&lt;number&gt;