§ 20. I numeri di telefono sui siti con il XSLT

Il paragrafo precedente è stato dedicato al modo tecnicamente corretto di pubblicare i contatti sui siti web. Si trattava però in quel caso di siti in generale. Con il presente paragrafo propongo, invece, di prendere in considerazione una tecnologia specifica.
Sui siti web realizzati con l’applicazione del XSLT il contenuto delle pagine è solitamente salvato sotto forma dei documenti XML (non importa se si tratti dei semplici file o dei database). A questo punto conviene scrivere i numeri di telefono pubblicati sul sito non come un testo semplice, ma all’interno di un tag dedicato: per esempio, <phone>. Questo modo di fare non solo renderà i dati XML meglio strutturati, ma ci fornirà anche delle nuove modalità di mostrare i contenuti al visitatore.
La struttura dei dati ben progettata, in particolare, faciliterà l’aggiornamento di tutti i dati dello stesso tipo nelle situazioni particolari, senza correre il rischio di dimenticare alcune o una singola scritta.

Le ipotesi delle situazioni particolari
I prefissi telefonici, come ogni opera umana e diversamente dalle leggi della natura, tendono a essere cambiati nel tempo.
Potremmo vedere l’esempio concreto dell’Ucraina. Il suo prefisso telefonico internazionale è +380 ed è entrato in funzione il 16 aprile 1995. Prima di quella data l’Ucraina continuava a utilizzare il prefisso dell’URSS +7 (attualmente utilizzato solo dalla Russia e dal Kazakistan).
Al Vaticano è stato assegnato il prefisso +379. Assegnato ma non attivato, dunque la città-Stato continua a utilizzare il prefisso italiano +39 in combinazione con quello di Roma (06). Nessuno, tranne una entità la cui esistenza è discutibile, è però in grado di dire se e quando possa essere presa la decisione di attivare il prefisso telefonico separato assegnato.
Le tendenze indipendentistiche di certe regioni europee potrebbero portare, prima o poi, alla introduzione di nuovi prefissi nazionali.

Di conseguenza, i numeri telefonici (cioè i nostri dati) devono essere strutturati tenendo conto di tre componenti: il prefisso nazionale, il prefisso provinciale/urbano e il numero di telefono assegnato al singolo utente. In Italia, come ormai anche nella maggioranza schiacciante di altri Stati, il prefisso provinciale/urbano è incorporato nel numero dell’utente e deve essere utilizzato anche per le telefonate all’interno della medesima provincia. Ma ci conviene comunque trattarlo come una componente separata per almeno due motivi: 1) teoricamente potrebbe cambiare, 2) dobbiamo alleggerire il file contenente i numeri (vediamo subito in che modo).
Il modo valido di scrivere i numeri di telefono in un file XML potrebbe essere questo:

<phone country="39" city="02">65489873</phone>

E un gruppo di numeri (per esempio assegnati allo stesso ufficio) può essere scritto in un unico blocco:

<phone country="39" city="02">
            <item>11122233</item>
            <item>44455566</item>
            <item>77788899</item>
</phone>

Come potete notare, i numeri sono scritti come sequenze uniche delle cifre (tra i tag <item>), la loro visualizzazione più comoda per la lettura (per esempio, con degli spazi in mezzo) può essere determinata dalle regole contenute nel modello XSLT. In sostanza, possiamo modificare il modo di visualizzare i numeri di telefono su tutto il sito correggendo solo un frammento del XSLT.
Un vantaggio un po’ meno ovvio del suddetto modo è la facilità della modifica dei prefissi nazionali e provinciali. Per evitare le contraddizioni tra le regole del XSLT e il contenuto del file XML nel caso del cambiamento di un prefisso, conviene indicare i nomi geografici al posto dei valori numerici dei prefissi:

<phone country="italy" city="milan">65489873</phone>

Certo, questo comporterà la creazione della lista dei prefissi, ma essa sarà anche l’unico luogo delle future modifiche.
La trasformazione dei nomi geografici in valori numerici (sulla base della lista appena menzionata) al momento della visualizzazione avverrà con una regola contenuta nel XSLT.
L’obiettivo del presente paragrafo è stato quello di proporre una struttura dei dati ottimale e non scrivere un manuale di XSLT. Concludo quindi ricordando che potrebbe anche avere senso di mostrare i prefissi nazionali solo alle persone che visualizzano la pagina da uno Stato diverso da quello del prefisso. Mentre nella struttura dei dati e nel link del numero il prefisso nazionale deve essere presente sempre e comunque.
P.S.: so benissimo che esistono i numeri dei telefoni mobili. E voi potete capire benissimo da soli che in questo caso il prefisso da trattare è uno solo: quello nazionale.
P.P.S.: tutti i numeri riportati negli esempi sono stati digitati a caso. Ogni coincidenza con i numeri realmente esistenti è del tutto casuale.