Archivio > Markup, Semantica > Singolo: Riflessione: Sull'uso dell'attributo role

Riflessione: Sull'uso dell'attributo role

Alla luce di quanto ho già spiegato precedentemente, ho cominciato a ragionare su quale potesse veramente essere un uso sensato dell'attributo role, comparso nelle nuove specifiche XHTML 2.0, in un documento web.

Come ho accennato nel mio recente articolo:

Questo attributo descrive il ruolo (o i ruoli) che l'elemento corrente recita nel contesto del documento. E' usato dalle applicazioni e dalle tecnologie assistive per determinare il proposito dei widgets. Nel caso di una pagina web esso può dichiarare la funzione di particolari elementi, o può essere un attributo configurabile dall'autore della pagina. In più, il ruolo può essere usato per definire ogni azione che può essere eseguita su un elemento. Questo permette all'utente di essere informato, e prendere decisioni basate sulle azioni attivabili su quell'elemento stesso, in un modo indipendente dal dispositivo (supporto).

Nelle specifiche gli autori continuano dicendo:

E' possibile definire valori addizionali per role. Alcuni di essi devono essere definiti nel proprio namespace. Nota che è consuetudine associare quest'ultimo ad un URI che conduca ad una risorsa in cui tutti i ruoli validi per quello spazio di nomi siano illustrati.

E che:

User agents, motor di ricerca, ecc. possono interpretare le relazioni fra gli elementi in vari modi. Ad esempio, provvedendo l'accesso a documenti collegati attraverso una barra di navigazione.

I seguenti valori (vedi sotto) sono stati disegnati per definire parti pertinenti di un documento, in termini di accessibilità. Alcuni user agents, quelli per il desktop in particolare, possono incorporare equivalenti per i dispositivi, come ad esempio le accesskeys, per portare l'utente nelle varie sezioni del documento.

La lista degli esempi che ci vengono proposti consiste in:

main
Ciò che definisce il contenuto principale di un documento.
secondary
E' una sezione unica del documento. Nel caso di un portale, può includere data e ora attuali, tempo metereologico, o materiale da osservare (senza però limitarsi a questi esempi).
navigation
E' la barra di navigazione su un documento web.
banner
Un banner consiste generalmente in un annuncio pubblicitario posto in cima alla pagina web. Esso tipicamente contiene il logo del sito o della compagnia, ed altre informazioni pubblicitarie.
contentinfo
Informa sul contenuto della pagina. Per esempio, note a piè di pagina, copyrights, dichiarazioni sulla privacy, ecc. dovrebbero essere specificate qui.
definition
Il contenuto dell'elemento assiociato rappresenta una definizione (es. un termine o un concetto). Se è presente un elemento dfn annidato, allora quest'ultimo dovrebbe rappresentare il termine da essere spiegato.
note
Il contenuto è parentetico o subordinato al contenuto principale della risorsa.
seealso
Indica che l'elemento contiene contenuto che è correlato al contenuto principale della pagina.
search
E' la sezione di ricerca di un documento web. Tipicamente, consiste in un modulo usato per inviare richieste interne al sito o ad un servizio generale di ricerca in Internet più vasto (completo).

Per ruolo di un elemento quindi, si intende tutto ciò che specifica il contesto dello stesso nel documento al quale appartiene.

Spesso questo compito è logicamente appioppato all'attributo id, il quale umilmente si è addossato l'onere di indicare, oltre ad un identificativo unico, anche lo scopo di ogni singolo tag a cui era affiancato. Ho detto logicamente, perchè in effetti quando diamo un appellativo a un elemento, la cosa più sensata è trovarne uno che, fra le altre cose, sia in grado di chiarire qual'è il suo ruolo nella pagina.

Dobbiamo abituarci a non pensare più in questo modo, o meglio, a concepire anche in tal senso l'attributo id, senza però dimenticare mai l'importanza semantica che assumerà role. L'identificativo non coincide con il ruolo, e per quanto possa il primo essere umanamente comprensibile, resta sempre e comunque un nome. Il ruolo invece ha come requisito il fatto di essere chiaro, specifico, altresì umanamente comprensibile, e lo dimostra il fatto stesso che venga richiesto un namespace in cui ogni valore sia spiegato in termini di scopo e funzione. Non a caso, nelle specifiche viene accennato un richiamo a RDF-Schema, uno dei fulcri della semantica web.

Sì, perchè, in fondo, cosa significa semantica, e cosa ha l'XHTML in più rispetto ai suoi predecessori? A tal proposito non posso che citare una frase di Pietro Fissore, presa dall'articolo XHTML è troppo pesante? pubblicato il 4 Gennaio scorso su Edit, il blog di HTML.it:

XHTML serve ad attribuire significato alle informazioni presenti nel documento mettendo l'uomo e la macchina in condizione di comunicare (attraverso delle convenzioni). Dire che una struttura di markup realizzata con tale linguaggio è pesante equivale a dire che la semantica è superflua [...]. Ovviamente è una palese denaturazione delle potenzialità che il web può offrire.

L'attributo role in qualche modo specifica ed accentua questa semantica, offrendo uno strumento in più alle macchine per fare in modo che la stessa user experience ne tragga un grande beneficio in termini di accessibilità e usabilità.

D'altra parte, non posso che inorridire di fronte alle esilaranti specifiche WHATWG per HTML 5: sembra quasi che sia stato creato un tag specifico per ognuno dei ruoli più comuni che un elemento potrebbe assumere nella pagina (vedi article, aside, dialog, ecc.), e questo secondo me non è decisamente un bene.

Infatti, così come in XML ognuno ha la libertà di realizzare la propria grammatica, così in XHTML 2.0 abbiamo la possibilità di definire la funzione specifica di ogni elemento senza che ci venga imposta da nessuno. Ecco un altro motivo per cui penso valga veramente la pena di tessere le lodi del consorzio W3C. XHTML è flessibilità, modularità, e ovviamente semantica, e come tale deve rimanere sempre.

Se quindi da un lato spetta a noi l'ardua sentenza di descrivere con più precisione possibile la parte che recita ogni singolo elemento nella pagina web, dall'altra questo ci permette di restare creativi senza essere inevitabilmente soffocati da limiti che spesso si rivelano nocivi per lo sviluppatore, che più di ogni altra cosa probabilmente vorrebbe un linguaggio di markup che si adatti alle sue esigenze. E, stranamente, l'XML lo fa già da tempi immemori.

Qualche esempio?

Una lista di navigazione il quale ruolo nel namespace wai è quello di funzionare come sitemap, ovvero mappa del sito.

<nl role="wai:sitemap">
    <li href="downloads">Downloads</li>
    <li href="docs">Documentation</li>
    <li href="news">News</li>
</nl>

Un elemento access indica al browser che tramite la chiave s esso deve condurre l'utente all'elemento col ruolo number specificato nel namespace ss.

<access key="s" 
    title="Social Security Number" 
    targetrole="ss:number" />

Come sopra, ma questa volta il namespace non è stato impostato, e la chiave c porta ad un elemento che recita il ruolo di toc, ovvero tabella riassuntiva dei contenuti.

<access key="c"
    title="Table of Contents" 
    targetrole="toc" />

E ora qualche mia stravagante interpretazione.

Un blocco di citazione a cui viene specificato l'id body-guard, e un altro blocco successivo che ha il ruolo di tradurre il primo, usando un immaginario namespace translation per comunicare un'informazione più semantica.

<blockquote id="body-guard">
    <p>Hi, I'm your body-guard.</p>
</blockquote>

<blockquote role="translation:it-#body-guard">
    <p xml:lang="it">Ciao, sono la tua guardia del corpo.</p>
</blockquote>

Questa volta invece, un blocco di codice a cui viene specificato l'id html401-doctype, e un altro blocco con id xhtml11-doctype che, tramite role, comunica di essere messo a confronto col blocco superiore.

<blockcode id="html401-doctype">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
</blockcode>

<blockcode id="xhtml11-doctype" role="comparison:with-#html401-doctype">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
</blockcode>

Approfondimenti

L'articolo è stato di tuo gradimento? Puoi controllare che vi sia altro di tuo interesse nelle categorie e , oppure iscriverti al notiziario RSS e seguirmi su per restare sempre aggiornato sulle ultime pubblicazioni.

Pubblicato mercoledì 17 gennaio 2007.

Discussione [1]

  1. Emilio aggiunge:

    [Immagine] Segue l'intervento di Emilio

    Articolo molto utile, chiaro e scritto senza inutili orpelli. Complimenti.

Discuti

Il blog è in sola lettura.

Paginatura: