# Linguaggio di markup

Un linguaggio di markup (in italiano linguaggio di marcatura o linguaggio di formattazione) è un insieme di regole che descrivono i meccanismi di rappresentazione (strutturali, semantici, presentazionali) o d'impaginazione di un testo; facendo uso di convenzioni rese standard, tali regole sono utilizzabili su più supporti. Perciò, la tecnica di formattazione con marcatori (detti espressioni codificate) richiederà una serie di convenzioni, proprie appunto di un linguaggio a marcatori di documenti.

## Descrizione

Il termine markup (o marcatura) deriva dall'ambiente tipografico dove si usava contrassegnare con annotazioni le parti del testo che andavano evidenziate o corrette, allo scopo di segnalarle al compositore o al dattilografo.

## Tipologie

I diversi linguaggi di markup esistenti si distinguono fondamentalmente in:
* linguaggi di markup di tipo procedurale;
* linguaggi di markup di tipo descrittivo.
La differenza tra i due sta nel meccanismo usato per definire la rappresentazione del testo, sia per quanto riguarda la sua struttura, sia per quanto riguarda il significato degli elementi che lo compongono, sia per quanto riguarda la visualizzazione (o formattazione):
* i linguaggi di markup di tipo procedurale indicano le procedure di trattamento del testo aggiungendo le istruzioni che devono essere eseguite per visualizzare la porzione di testo referenziata (troff, T$_E$X, ...)
* i linguaggi di markup di tipo descrittivo lasciano la scelta del tipo di rappresentazione da applicare al testo al software che di volta in volta lo riprodurrà (SGML, HTML, XML, ...)
I linguaggi del secondo tipo si concentrano sui problemi strutturali di leggibilità e prescindono in fase di lettura dal software con cui sono stati generati. Sono, in altre parole, quelli che permettono di garantire separazione tra struttura (o contenuto) e visualizzazione (o presentazione, non necessariamente visuale: ad esempio, parlata).
L'SGML (Standard Generalized Markup Language) è stato il primo metalinguaggio di markup descrittivo standardizzato a livello internazionale (ISO 8879 del 1986) che ha definito dei metodi di rappresentazione del testo in forma elettronica in modo indipendente dall'hardware e dal sistema operativo utilizzato. L'SGML è basato sul concetto di definizione del tipo di documento o Document Type Definition (DTD) ovvero richiede per ogni documento la definizione del modo in cui i vari elementi del testo possono essere utilizzati. Ad esempio una lettera contiene degli elementi essenziali quali mittente, uno o più destinatari, data, oggetto, corpo, l'indicazione di colui che la firma, .... Tutti elementi che devono essere presenti, probabilmente anche con un certo ordine. La DTD deve prendersi carico di definire tutto questo, stabilendo ciò che è permesso e cosa invece non lo è.
L'HTML è stato sviluppato nei primissimi anni novanta del XX secolo da Tim Berners-Lee al CERN di Ginevra (Svizzera), assieme al protocollo HTTP dedicato al trasferimento di documenti in tale formato. Nel 1989 Berners-Lee propose un progetto che riguardava la pubblicazione di ipertesti, noto con il nome di "world wide web". All'interno di questo progetto in seguito nacquero sia il server web "httpd" (HyperText Transfer Protocol Daemon), sia il client WorldWideWeb (il primo browser della storia), il cui sviluppo partì nell'ottobre del 1990, e il cui uso fu esclusivamente interno al CERN fino alla sua pubblicazione nella rete internet nel corso del 1991. Assistito dai suoi colleghi all'interno dell'istituto Svizzero, Berners-Lee concorse alla definizione della prima versione dell'HTML, che fu ufficialmente resa pubblica nel giugno del 1993, co-firmata insieme a Daniel Connolly e sostenuta dal gruppo di lavoro dell'Internet Engineering Task Force (IETF) chiamato Integration of Internet Information Resources ("Integrazione delle risorse informative di Internet"), per proporla come standard IETF.
Nel 1994 il linguaggio ha avuto una forte diffusione in seguito ai primi utilizzi commerciali del web, così nello stesso anno nacque il World Wide Web Consortium, e da quel momento in poi, lo sviluppo dell'HTML diverrà prerogativa del W3C.
Nel 1995 il W3C definì la versione 3.0 di HTML, a cui seguì la versione 3.2 nel 1997, e infine arrivarono nel 1998 le prime specifiche di HTML4.

## Caratteristiche dei linguaggi di markup

Una caratteristica comune di molti linguaggi di markup è che mescolano il testo di un documento con le istruzioni di markup nello stesso flusso di dati o file. Questo non è necessario; è possibile isolare il markup dal contenuto del testo, utilizzando puntatori, offset, ID o altri metodi per coordinare i due. Tale "markup standoff" è tipico per le rappresentazioni interne che i programmi utilizzano per lavorare con i documenti contrassegnati. Tuttavia, il markup incorporato o "inline" è molto più comune altrove. Ecco, ad esempio, una piccola sezione di testo contrassegnata in HTML:
I codici racchiusi tra parentesi angolari <in questo modo>sono istruzioni di markup (note come tag), mentre il testo tra queste istruzioni è il testo effettivo del documento. I codici h1, p e em sono esempi di markup semantico , in quanto descrivono lo scopo previsto o il significato del testo che includono. In particolare, h1 significa "questo è un titolo di primo livello", p significa "questo è un paragrafo" eem significa "questa è una parola o una frase enfatizzata". Un programma che interpreta tale marcatura strutturale può applicare le proprie regole o stili per presentare le varie parti di testo, utilizzando diversi tipi di carattere, grassetto, dimensione del carattere, rientro, colore o altri stili, come desiderato. Ad esempio, un tag come "h1" (livello di intestazione 1) potrebbe essere presentato in un grande carattere sans-serif in grassetto in un articolo, o potrebbe essere sottolineato in un documento a spaziatura fissa (stile macchina da scrivere) o potrebbe semplicemente non cambiare completamente la presentazione.
Al contrario, il tag i in HTML 4 è un esempio di markup di presentazione, che viene generalmente utilizzato per specificare una particolare caratteristica del testo senza specificare il motivo di tale aspetto. In questo caso, l'elemento i impone l'uso di un carattere tipografico corsivo. Tuttavia, in HTML 5 questo elemento è stato riproposto con un uso più semantico: per denotare un intervallo di testo con una voce o uno stato d'animo alternativo, o altrimenti compensato dalla normale prosa in un modo che indica una diversa qualità del testo. Ad esempio, è opportuno utilizzare l'elemento i per indicare una designazione tassonomica o una frase in un'altra lingua. La modifica è stata apportata per facilitare la transizione da HTML 4 a HTML 5 nel modo più fluido possibile, in modo che gli usi deprecati degli elementi di presentazione preservino la semantica più probabile.
La Text Encoding Initiative (TEI) ha pubblicato ampie linee guida su come codificare testi di interesse per le scienze umane e sociali, sviluppate in anni di lavoro di cooperazione internazionale. Queste linee guida sono utilizzate da progetti che codificano documenti storici, opere di studiosi, periodi o generi particolari e così via.