Introduzione a XML: linguaggi di markup

XML Prima di iniziare a parlare di XML appare utile chiarire alcuni concetti fondamentali relativi ai linguaggi di markup.

Interrogando Wikipedia troviamo che "il termine markup (o marcatura) deriva dall'ambiente tipografico dove veniva usato per definire le annotazioni fatte su una bozza, allo scopo di segnalare al compositore o al dattilografo il modo con cui alcune parti del testo andavano evidenziate o corrette. La tecnica di composizione del testo utilizzando marcatori o codici, richiede la definizione di una serie di convenzioni, ovvero di un linguaggio di markup o linguaggio a marcatori di documenti. In generale questo descrive i meccanismi di rappresentazione (strutturali, semantici o presentazionali) del testo che utilizzando convenzioni standardizzate sono utilizzabili su più sistemi."

I linguaggi di markup, come vedremo più avanti hanno un ruolo fondamentale anche in campo informatico e nella storia del Web. Un linguaggio di markup può essere definito semplicemente come un linguaggio che consente di descrivere dei dati tramite dei marcatori, i cosiddetti tag [1]. Questi ultimi si configurano come delle etichette che, immesse dentro il file del testo (secondo una determinata sintassi) accanto alla sequenza di caratteri a cui si riferiscono, "marcano" direttamente i blocchi di testo cui intendono assegnare una determinata funzione.

I linguaggi di markup sono diversi e sono spesso classificati secondo questa categorizzazione:

  • linguaggi di markup di tipo procedurale i quali indicano le procedure di trattamento del testo aggiungendo le istruzioni che devono essere eseguite per visualizzare la porzione di testo referenziata; esempio: TeX
  • linguaggi di markup di tipo descrittivo i quali lasciano la scelta del tipo di rappresentazione da applicare al testo al software che di volta in volta lo riprodurrà (ad esempio HTML); esempi: SGML, XML.

I linguaggi di tipo descrittivo sono spesso ritenuti più vantaggiosi in quanto, concentrandosi sui problemi strutturali del testo, garantiscono una corretta separazione tra struttura e visualizzazione.

Ma perchè è così importante mantenere separati gli aspetti relativi alla struttura da quelli relativi alla visualizzazione? E dunque perchè questa preferenza nei confronti dei linguaggi di tipo descrittivo? Alcuni dei motivi possono essere così riassunti:

  • la chiarezza della struttura logica del testo è basilare ai fini di una corretta comprensione dello stesso; un linguaggio che non mantenga gli aspetti di presentazione distinti da quelli di struttura comporta la perdita di queste informazioni essenziali;
  • l'autore del testo ha la possibilità di concentrarsi sui contenuti e sulla struttura degli stessi più che su aspetti di visualizzazione;
  • un linguaggio di codifica procedurale comporta uno stretto legame con il software di trattamento del testo che è in grado di interpretarlo, limitando dunque la portabilità del testo codificato tra ambienti diversi;
  • la gestione e la "manutenzione" di un insieme di documenti i cui aspetti presentazionali sono ben separati, è assai più facile ed economica. Si pensi come esempio alla gestione di siti web tramite XHTML e CSS (se si intendono modificare gli aspetti di presentazione di tutti i documenti non è necessario modificare le istruzioni di codifica presenti in ciascun singolo documento).

Al termine di questa pagina è bene rimarcare un concetto molto importante che è talvolta fonte di confusione: quando parliamo di SGML, HTML, XML, ecc. parliamo sempre e solo di linguaggi e/o meta-linguaggi di markup, non di linguaggi di programmazione!

Note:

[1] In questa sede non verrà approfondita la nozione di "tag" avendo indicato come prerequisiti di questo percorso la conoscenza del linguaggio HTML.

Fonti di riferimento:

http://it.wikipedia.org/ http://ww2.unime.it/digisic/documentazione/codifica_baltico/html/I.4.html http://www.griseldaonline.it/informatica/manuale_parte6_1.htm