Linguaggi di codifica
Standard Generalized Markup Language: - Markup Language perché SGML è un metalinguaggio per la codifica testuale, basato su un sistema di marche che vengono associate al contenuto di un testo per esplicitarne alcune caratteristiche. - Generalized perché si tratta di un sistema di codifica dichiarativo fortemente astratto e generalizzato ed al contempo altamente flessibile. - Standard perché si tratta di uno standard formale sviluppato dalla International Standardization Organization e pubblicato ufficialmente con la sigla ISO 8879:1986.
Standard Portabile Indipendenza dall’hardware Indipendenza dal software Indipendenza dal sistema di codifica dei caratteri Indipendenza logica dalle tipologie di elaborazione
Metalinguaggio È un linguaggio che serve a descrivere altri linguaggi Fornisce regole per la creazione di grammatiche e vocabolari personalizzati
Regole “filosofiche” di SGML Separazione del contenuto dalle istruzioni Cattura del significato strutturale e funzionale degli elementi del testo
Document Type Definition È obbligatoriamente allegata a un documento SGML Definisce il markup Definisce i rapporti fra gli elementi del markup Rende possibile uno stretto controllo sulla struttura del contenuto Rende possibile un controllo sintattico automatico: parsing
Un linguaggio SGML specifica: gli elementi che compongono il markup; il contesto in cui possono ricorrere questi elementi; quali elementi sono necessari per creare un documento; i delimitatori del testo che costituiscono i vari elementi, per distinguerli dal testo vero; il significato dei vari simboli di markup che saranno utilizzati.
I “dialetti” SGML: HTML HyperText Markup Language Serve a costruire documenti ipertestuali: per esempio le pagine web DTD standard Di facile utilizzo
Documento HTML File di testo Contiene: Linguaggio standard e portabile Markup Linguaggio standard e portabile Linguaggio interpretato
Esempio <html> <head> <title>Benvenuti in HTML</title> </head> <body> <h1>Ciao da HTML</h1> <p>Benvenuti nel vasto e confuso mondo di HTML</p> </body> </html>
Un’applicazione “eretica”? Si usa per descrivere l’aspetto di un documento e non solo la semantica del testo Non sempre le regole di stile (foglio di stile CSS) vengono tenute separate Possibilità di overlapping
HTML e l’interscambio dei dati HTML non è adatto allo scambio dei dati perché gli elementi sono generici Elementi non definibili dall’utente Elementi non autoreferenziali
La nuova frontiera di SGML: XML Elaborato dal W3C Scopo: semplificare SGML per farlo diventare il linguaggio del web Prima bozza: 1996 Prima versione (e per ora ultima): 1998
XML ≠ SGML Non supporta le regole di minimizzazione La DTD non è obbligatoria E’ case sensitive www.w3.org/TR/NOTE-sgml-xml.
Caratteristiche Consente la creazione di vocabolari XML in modo facile e intuitivo È autoesplicativo Può essere usato per documenti text-oriented Può essere usato per l’interscambio dei dati
XML: una famiglia di linguaggi XLink: linguaggio che serve per connettere diversi documenti XML e non. XPointer: linguaggio che serve a specificare le aree (locations) a cui si punta all’interno di un documento. XPath: linguaggio con il quale è possibile costruire espressioni per localizzare informazioni all’interno di un documento XML. XSL: linguaggi per la costruzioni di fogli di stile per la visualizzazione di documenti XML e per la trasformazione di documenti XML in altri documenti (altri XML, HTML, XHTML, solo testo, ecc.). XHTML: l’implementazione di HTML basata su XML.
XML – documenti ben formati
<elementi> Struttura base di XML Racchiude una unità testuale considerata come una componente strutturale del documento XML dichiara solo la struttura relazionale degli elementi non la loro semantica
Generic Identifier Il nome di un elemento è detto GI Un elemento è costituito da start tag contenuto end tag Un elemento può essere vuoto
Esempi di elementi Elemento <p> Questo è un paragrafo </p> start tag + contenuto + end tag Elemento vuoto start tag = contenuto = end tag <figura /> o <figura></figura> ma non <figura> </figura>
Struttura dei dati Sequenza <radice> </radice> <titolo> Questo è un elemento titolo</titolo> <p>Questo è un paragrafo</p> <nota>Questa è una nota</nota> </radice>
Struttura dei dati Annidamento <radice> </radice> <capitolo>Questo è un capitolo, <titolo> Questo è un elemento titolo</titolo> <p>Questo è un paragrafo</p> </capitolo> </radice>
Relazioni gerarchiche e ordinali Dati due elementi obbligatori a e b, può darsi uno solo di questi casi: a contiene b a è contenuto da b a precede b a segue b
Esempio di testo
Strutture concorrenti <pagina n="1"> <p>Questo è un paragrafo nella pagina 1</p> <p> Questo è un altro paragrafo</p> <p> Questo paragrafo comincia a pagina 1 </pagina> <pagina n="2"> e finisce nella pagina 2</p>
Milestone <pagina n="1" /> <pagina n="2" /> <p>Questo è un paragrafo nella pagina 1</p> <p> Questo è un altro paragrafo</p> <p> Questo paragrafo comincia a pagina 1 <pagina n="2" /> e finisce nella pagina 2</p>
Esempio <antologia> <poesia><titolo>I</titolo> <stanza> <verso>Voi ch'ascoltate in rime sparse il suono</verso> <verso>di quei sospiri ond'io nudriva 'l core</verso> <verso>in sul mio primo giovenile errore</verso> <verso>quand'era in parte altr'uom da quel ch'i' sono,</verso> </stanza> <verso>del vario stile in ch'io piango et ragiono</verso> <verso>fra le vane speranze e 'l van dolore</verso> <verso>ove sia chi per prova intenda amore</verso> <verso>spero trovar pietà, nonché perdono.</verso> </poesia> </antologia>
File ben formati deve esistere un singolo elemento (compreso fra uno start ed un end tag) che racchiuda l’intero documento: tale elemento assume il nome di root element (<antologia> nel nostro caso); tutti gli elementi devono essere racchiusi all’interno dell’elemento root o all’interno di elementi a loro volta racchiusi nell’elemento root; gli elementi non possono intrecciarsi gli uni agli altri (overlapping); il tag che indica l’inizio e la fine dell’elemento deve essere sempre presente Gli elementi vuoti devono essere correttamente chiusi o tramite uno slash all’interno dell’unico tag (<figura/>), oppure senza introdurre alcun carattere fra lo start-tag e l’end-tag (<figura></figura>).
Well formedness parsers I più diffusi: Internet Explorer Netscape Navigator Nell’editor Esempio Esercizio 1
Commenti Tutto ciò che si trova all’interno di un commento non viene elaborato <!-- Commento -->
File ben formati – aggiunta I commenti devono essere aperti con <!-- e chiusi con --> *Non è ammesso il commento vuoto <!> (SGML) *Un commento non può essere inserito dentro un tag o dentro un altro commento
<p allineato="centro">Questo è un paragrafo centrato</p> Attributi <p allineato="centro">Questo è un paragrafo centrato</p> <p allineato="sinistra">Questo è un paragrafo allineato a sinistra</p>
Le virgolette degli attributi <p allineato="sinistra"> o <p allineato='sinistra'> e non <p allineato='sinistra">
File ben formati - aggiunta I valori degli attributi devono necessariamente essere espressi fra virgolette semplici o doppie, con obbligo di coerenza Un attributo non può essere usato due volte all’interno dello stesso elemento
Combinazione di più attributi <p allineato="sinistra" n="1">Questo è il primo paragrafo giustificato a sinistra</p>
Elemento o attributo Nuova categoria: elemento Nuova tipologia di una categoria: attributo Esercizio 2
Sezioni CDATA Consentono di ignorare una porzione di markup Iniziano con <![CDATA[ Finiscono con ]]>
Sezioni CDATA <p>L'elemento <gi>foreign</gi> può essere usato per marcare una parola in lingua straniera. Per esempio <![CDATA[<p>Noi andiamo spesso in vacanza in un <foreign lang='eng'>camping</foreign>.</p>]]>.</p>