Requisito 1 – Enunciato, motivazione ed implementazione

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:

  1. 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;
  2. evitare la generazione di nuove finestre; ove ciò non fosse possibile, avvisare esplicitamente l’utente del cambiamento del focus;
  3. 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.

Condividi:

Roberto Castaldo

Sono nato e vivo a Napoli, ed opero professionalmente nel mondo dell'informatica da più di vent'anni. In realtà l'informatica, insieme alla musica e ad altre poche cose, è stato da sempre un mio chiodo fisso, e la buona sorte mi ha aiutato a trasformarlo in un mestiere. Sin dalle mie primissime esperienze lavorative - insegnavo dattilografia ed i primi rudimenti di informatica in una scuola privata - mi sono trovato a mio agio nel settore della formazione e della divulgazione, certamente aiutato dai miei studi classici. Nel 1987 ho iniziato la mia attività come insegnante d'informatica in un Istituto Professionale Statale - per circa due anni sono stato il più giovane insegnante di ruolo d'Italia. Ho avuto svariate esperienze anche nel settore privato come sviluppatore (TPascal - lo ricordate? - VB, ASP e, più di recente VB.NET ed ASP.NET), ma soprattutto come docente e come divulgatore. Ho effettuato attività di formazione presso le più grandi realtà imprenditoriali italiane (IBM, Omnitel, Telecom Italia, TIM, Unicredito, Ekip, BNL, SSGRR), ma anche all'estero in qualità di docente e/o progettista di percorsi formativi; gli argomenti spaziano dal mondo Office fino al multimedia ed alla programmazione avanzata ASP ed ASP.NET. Ho collaborato con l'Istituto Italiano per gli Studi Filosofici di Napoli, ho redatto articoli/tutorial per un'importante rivista informatica (Win98 Magazine), ed ho partecipato allo sviluppo di CD-Rom Multimediali (IBM, Selfin, BNL) curando personalmente la registrazione dei commenti audio ed il montaggio delle musiche (CoolEdit), l'eventuale connessione a database remoti, l'assemblaggio degli elementi testuali, grafici e multimediali (Director 8) fino alla creazione del master definitivo. Negli anni 1998-2000 ho collaborato con la Gazzetta dello Sport Online curando, in occasione dei più importanti avvenimenti sportivi (Mondiali ed Europei di calcio, Giro d'Italia, Campionato di Serie A) le pagine contenenti la traduzione in inglese e francese degli articoli in italiano. Il mio compito consisteva nell'inviare ai miei traduttori la cronaca in italiano, riceverne la traduzione, creare le pagine inglesi e francesi del sito www.gazzetta.it e pubblicarle sul server, il tutto entro 90 minuti dalla fine dell'evento. Nel frattempo, mi avvicinavo in maniera sempre più approfondita alle problematiche legate all'accessibilità di siti web, progettando percorsi di formazione ad hoc, ed aderendo entusiasticamente al progetto webaccessibile.org. Sono stato per diversi mesi membro del XML Protocol Working Group del W3C, ed attualmente partecipo ai lavoro del WAI Web Content Accessibility Guidelines (WCAG) Working Group e del E&O Education ad Outreach Working Group.

1 commento

I commenti sono chiusi.