Enunciato: Realizzare le pagine e gli oggetti al loro interno utilizzando tecnologie definite da grammatiche formali pubblicate nelle versioni più recenti disponibili quando sono supportate dai programmi utente. Utilizzare elementi ed attributi in modo conforme alle specifiche, rispettandone l’aspetto semantico. In particolare, per i linguaggi a marcatori HTML (HypertText Markup Language) e XHTML (eXtensible HyperText Markup Language):
a) per tutti i siti di nuova realizzazione utilizzare almeno la versione 4.01 dell’HTML o preferibilmente la versione 1.0 dell’XHTML, in ogni caso con DTD (Document Type Definition – Definizione del Tipo di Documento) di tipo Strict;
b) per i siti esistenti, in sede di prima applicazione, nel caso in cui non sia possibile ottemperare al punto a) è consentito utilizzare la versione dei linguaggi sopra indicati con DTD Transitional, ma con le seguenti avvertenze:
- evitare di utilizzare, all’interno del linguaggio a marcatori con il quale la pagina è realizzata, elementi ed attributi per definirne le caratteristiche di presentazione della pagina (per esempio, caratteristiche dei caratteri del testo, colori del testo stesso e dello sfondo, ecc.), ricorrendo invece ai Fogli di Stile CSS (Cascading Style Sheets) per ottenere lo stesso effetto grafico;
- evitare la generazione di nuove finestre; ove ciò non fosse possibile, avvisare esplicitamente l’utente del cambiamento del focus;
- pianificare la transizione dell’intero sito alla versione con DTD Strict del linguaggio utilizzato, dandone comunicazione alla Presidenza del Consiglio dei Ministri – Dipartimento per l’innovazione e le tecnologie e al Centro nazionale per l’informatica nella pubblica amministrazione.
Riferimenti WCAG 1.0: 3.1, 3.2, 3.5, 3.6, 3.7, 11.1, 11.2
Riferimenti Section 508: Non presente
Motivazione
L’enunciato numero 1 richiede allo sviluppatore di utilizzare grammatiche formali pubblicate, utilizzando le versioni più recenti se supportate dai programmi utente. E’ bene tener presente che nella creazione di contenuti web (pagine HTML, espressioni matematiche, animazioni, ecc.) si utilizzano dei linguaggi e che tali linguaggi utilizzano delle “parole” e delle “regole” per il loro utilizzo.
Una grammatica formale, in informatica, è una specifica o una raccomandazione tecnica definita in linguaggio naturale (documentazione) oppure in un linguaggio di definizione come una DTD SGML o un XML Schema.
La conformità varia a dipendenza del tipo di definizione: se per esempio prendiamo una normale pagina web che è definita in HTML o XHTML, la sua definizione è un file DTD.
Questo file DTD ci fornisce ufficialmente le seguenti informazioni:
- qual è l’elemento di partenza del documento (HTML);
- quali elementi esistono;
- qual è lo scopo di ogni elemento e quando deve essere usato;
- quali elementi possono essere annidati sotto quali elementi, nonché quante volte possono occorrere;
- quale tipo di contenuto e in che forma può essere inserito all’interno degli elementi;
- quali attributi esistono;
- qual è lo scopo di ogni attributo e quando deve essere usato;
- quali attributi possono essere inseriti in quali elementi;
- quali valori e che forma possono prendere i vari attributi.
Alcuni punti, come lo scopo di ogni elemento o attributo, viene riaffermato esplicitamente nella frase conclusiva della regola tecnica.
In caso adottassimo un linguaggio formalizzato in XML Schema, per esempio RSS, avremmo molte informazioni in più, come i limiti di occorrenza oppure eventuali spazi logici dei nomi.
Infine, se adottassimo una tecnologia definita descritta solo in linguaggio naturale dovremmo semplicemente seguire le direttive in essa definite. Questo vale per esempio per le specifiche di accessibilità dei documenti Adobe Acrobat o Microsoft Word.
La creazione di contenuti web che non rispettano le grammatiche formali pubbliche possono causare dei problemi di accesso ai contenuti da parte di utenti che utilizzano browser web o tecnologie assistive che non riescono ad identificare elementi o attributi non standard.
L’autore del contenuto web a questo punto deve dichiarare il tipo di linguaggio utilizzato utilizzando quindi le specifiche grammatiche formali per specifici contenuti. Non rispettare le grammatiche formali può causare problemi di visualizzazione dei contenuti in diversi browser, anche se spesso questi problemi sono per lo più dovuti alla diversa interpretazione dei fogli di stile: i browser moderni non interrompono il caricamento della pagina anche se sono presenti errori di marcatura e cercano di renderizzare il contenuto correggendo gli errori autonomamente: ciò avviene solamente se il contenuto della pagina è fornito come text/html, mentre se il testo è fornito come application/xhtml+xml i browser come Mozilla Firefox interromperanno l’esecuzione del caricamento della pagina evidenziando l’errore nel codice di marcatura. In futuro comunque tutti i browser passeranno a questa renderizzazione controllata e sarà quindi necessario sviluppare codice in conformità alla specifica.
Le tecnologie definite da grammatiche formali cui si fa riferimento nell’enunciato sono quelle pubblicate da:
- International Organization for Standardization (ISO);
- World Wide Web Consortium (W3C);
- ECMA, ovvero European Computer Manufacturers Association. Dal 1994 il nome ufficiale è Ecma International – European association for standardizing information and communication systems.
Esempi di tali tecnologie consentite dal requisito sono:
Linguaggio |
Ente |
Annotazioni |
---|---|---|
CSS Level 1 |
W3C |
Cascade Style Sheets (CSS). È il risultato dei lavori sui fogli di stile di Håkon Wium Lie e Bert Bos. |
CSS Level 2 |
W3C |
Cascade Style Sheets (CSS). Sono un superset del Level 1, al quale aggiungono proprietà e del quale correggono alcuni errori. Attualmente nessun Browser li supporta completamente. |
ECMA-262 |
ECMA |
European Computer Manufacturers Association (ECMA). È una specifica relativa al linguaggio JavaScript standard. |
HTML 4.01 |
W3C |
Hyper Text Markup Language (HTML). Correzioni secondarie a HTML4.0 – In assoluto l’ultima versione pubblicata di HTML. |
MathML |
W3C |
Mathematical Markup Language, (MathML). È una applicazione XML per descrivere la notazione matematica rendendone struttura e contenuto. È integrabile in XHTML e in SVG. |
P3P |
W3C |
Platform for Privacy Preferences Project (P3P). Sviluppato per consentire agli utenti internet di esercitare in modo automatizzato un maggiore controllo sull’utilizzo delle informazioni personali da parte dei siti che visitano. |
PICS |
W3C |
Platform for Internet Content Selection (PICS). Tecnologia utilizzata per associare a una pagina oa un sito Web etichette che ne descrivono il contenuto. Le etichette PICS possono essere utilizzate da un browser opportunamente configurato per inibire l’accesso a determinate tipologie di documenti in rete (ad esempio, siti pornografici). |
RDF |
W3C |
Resource Description Framework (RDF). Sintassi astratta che consente di associare informazioni descrittive (es. autore, titolo, soggetto ecc.) a risorse e documenti pubblicati sul Web (o metadati), in modo che siano utilizzabili direttamente da applicazioni. |
SMIL |
W3C |
Synchronized Multimedia Integration Language (SMIL). È un linguaggio basato su XML che consente di scrivere presentazioni multimediali interattive. È integrabile in XHTML e in SVG. |
SVG |
W3C |
Scalable Vector Graphics (SVG). È un linguaggio derivato dall’XML, cioè di un’applicazione del metalinguaggio posto a base degli sviluppi del Web da parte del consorzio W3C, che si pone l’obiettivo di descrivere figure bidimensionali statiche e animate. |
W3C DOM (Level 1, 2 e 3) |
W3C |
Document Object Model (DOM). È una interfaccia API indipendente dal linguaggio e dalla piattaforma che permette a programmi e a script di accedere in modo dinamico e di aggiornare il contenuto, la struttura e lo stile di documenti. |
XHTML 1.0 |
W3C |
Extensible Hyper Text Markup Language (XHTML). Riformulazione di HTML 4.01 in XML. Disponibile in tre DTD: Transitional, Strict e Frameset. Consente l’inclusione di gruppi di elementi specifici per la grafica (SVG), la multimedialità (SMIL), la matematica (MathML), l’e-commerce, ecc. |
XHTML 1.1 |
W3C |
Extensible Hyper Text Markup Language (XHTML). È il primo vero linguaggio di programamzione a marcatura interamente basato sulla logica dei Moduli. Esiste solo nella DTD Strict, molto simile (ma più rigida) alla DTD Strict di XHTML 1.0. |
XML |
W3C |
Extensible Markup Language (XML). È un linguaggio destinato a facilitare la definizione, la validazione e la condivisione di differenti formati di documenti sul Web. La versione 1.1 una formalizzazione di alcuni elementi della specifica XML 1.0 che altrimenti provocano errori nei parser. |
XSL |
W3C |
Extensible Stylesheet Language (XSL). È è un linguaggio che permette di descrivere come devono apparire i file codificati in formato XML. |
Implementazione
Di seguito si riportano alcune delle grammatiche formali create dal W3C, il cui elenco completo è disponibile sul sito del consorzio <http://www.w3.org/QA/2002/04/Valid-DTD-list.html>. Le seguenti DTD riguardano le definizioni per le pagine web.
HTML 4.01 Transitional
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
HTML 4.01 Frameset
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
HTML 4.01 Strict
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
XHTML 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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.0 Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Come si può notare, HTML e XHTML sino alla versione 1.0 descrivono tre diversi tipi di documento:
- Transitional: mantiene la compatibilità con le precedente versioni, consentendo l’utilizzo di elementi ed attributi di presentazione all’interno del contenuto.
- Frameset: definisce le grammatiche per l’utilizzo di frame.
- Strict: è la versione “rigorosa”, nella quale sono eliminate tutte le impostazioni di formattazione che possono essere gestite tramite i fogli di stile.
La versione XHTML 1.1 prevede una sola DTD, molto simile alla DTD XHTML 1.0 Strict, e presenta alcuni problemi di retrocompatibilità con i vecchi browser e con i dispositivi mobile (PocketPC e palmari).
Se, per esempio, si dichiara che un documento è conforme alla DTD Strict di HTML 4.01, non sarà possibile usare nel corpo del documento elementi di presentazione come <FONT> e attributi come SIZE e FACE, specificamente definiti con finalità di presentazione, perché non sono compresi nella DTD Strict di HTML 4.01 e l’usarli significa produrre un documento formalmente non valido.
Per rispettare il requisito, tutte le pagine web devono rispettare la grammatica formale dichiarata dall’autore: questo significa che ogni pagina deve:
- dichiarare il tipo di documento (tramite l’elemento <DOCTYPE>);
- dichiarare la codifica di carattere utilizzata (esempio: utf-8);
- utilizzare elementi ed attributi secondo quanto definito dalle specifiche (ad esempio, rispettare i livelli di titolazione, usare correttamente le liste, utilizzare acronimi ed abbreviazioni in modo corretto, ecc.).
Quanto sopra elencato consentirà al programma utente utilizzato per visualizzare la pagina di valutare la semantica da utilizzare.
Poiché il codice più accessibile è quello che tiene separato il contenuto del documento dalla presentazione, le DTD più indicate per ottenere pagine accessibili sono quelle rigorose (strict), che escludono l’uso di elementi e attributi di presentazione: la DTD Strict di HTML 4.01 e la DTD Strict di XHTML 1.0 che di fatto sono richieste dal requisito 1 per tutti i nuovi siti. Il fatto che XHTML sia una riformulazione di HTML nella sintassi più rigorosa di XML rende preferibile (per possibili vantaggi in proiezione futura) l’uso della DTD Strict di XHTML 1.0 rispetto a quella Strict di HTML 4.01.
Un esempio di corretto utilizzo del linguaggio di marcatura con la DTD XHTML 1.0 Strict fornito come application/xhtml+xml è il seguente.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<title>Titolo del documento</title>
<meta http-equiv="Content-Type"
content="application/xhtml+xml; charset=utf-8" />
<meta name="language" content="it" />
</head>
<body>
...
</body>
</html>
Lo stesso esempio fornito come text/html (ovvero compatibile con Microsoft Internet Explorer e versioni precedenti degli altri browser) è il seguente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<title>Titolo del documento</title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
<meta name="language" content="it" />
</head>
<body>
</body>
</html>
Come si noterà, nel primo caso si utilizza la prefazione XML (“XML Prolog“), la definizione di content-type application/xhtml+xml e la definizione della lingua predefinita esclusivamente con xml:lang=”it” mentre nel secondo caso la prefazione XML non è utilizzata, il content-type è text/html e la definizione del tipo di lingua è segnalata sia come xml:lang=”it” sia come lang=”it”, in quanto nel primo caso il contenuto è basato su XML mentre nel secondo riporta una compatibilità con html, ereditandone gli attributi.
È comunque consigliato utilizzare la prefazione XML per qualsiasi documento XHTML in quanto di fatto è un documento basato su XML.
Come vedremo negli esempi delle WCAG il rispetto del requisito 1 non è solamente legato alla verifica tramite W3C Markup validator del contenuto della pagina e del foglio di stile ma richiede una verifica da parte dell’esperto del corretto utilizzo degli elementi ed attributi nonché la verifica di eventuali “trucchi” utilizzabili dagli sviluppatori per aggirare la valutazione.
1 commento
I commenti sono chiusi.