Linguaggi per il web oltre HTML: XML



Documenti analoghi
La struttura: DTD. Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino. laura.farinetti@polito.it

extensible Markup Language

La sintassi di un DTD si basa principalmente sulla presenza di quattro dichiarazioni:

Capitolo 4 Pianificazione e Sviluppo di Web Part

EXPLOit Content Management Data Base per documenti SGML/XML

Il database management system Access

Tutorial di HTML basato su HTML 4.0 e CSS 2

Database. Si ringrazia Marco Bertini per le slides

Modellazione e Gestione di Informazioni non Strutturate

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS

RISOLUTORE AUTOMATICO PER SUDOKU

G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Strutturazione logica dei dati: i file

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Si formulino le seguenti interrogazioni tramite il linguaggio SQL:

HTML e Linguaggi. Politecnico di Milano Facoltà del Design Bovisa. Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione

Dispensa YACC: generalità

Creare documenti XML. La natura epistemologica della codifica. Perché comprare XML? La struttura gerarchica ordinata. Riassumendo le componenti

PROCESSO DI INDICIZZAZIONE SEMANTICA

Lezioni di Matematica 1 - I modulo

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Organizzazione degli archivi

( x) ( x) 0. Equazioni irrazionali

Laboratorio Matematico Informatico 2

XSL: extensible Stylesheet Language

XML. XML è contemporaneamente: XML non è:

Basi di dati 9 febbraio 2010 Compito A

Guida all uso di Java Diagrammi ER

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

HTML: i link ipertestuali. La sintassi di qualunque link in HTML è la seguente: <A HREF= indirizzo > parolacalda </A>

Progettazione di Basi di Dati

Comandi principali del linguaggio HTML (Hyper Text Markup Language)

Capitolo 13. Interrogare una base di dati

Infrastrutture INFormatiche Ospedaliere 2 Corso di laurea di Ingegneria Medica. Indice

Dalla progettazione concettuale alla modellazione di dominio

Uso di base delle funzioni in Microsoft Excel

XML e TEI: introduzione alla codifica dei testi letterari. La nascita del linguaggio. Il concetto di metalinguaggio di codifica SGML

Il linguaggio HTML - Parte 4

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Progettaz. e sviluppo Data Base

Osservazioni sulla continuità per le funzioni reali di variabile reale

Guida Joomla. di: Alessandro Rossi, Flavio Copes

MANUALE D USO DELLA PIATTAFORMA ITCMS

Corso di Informatica

HTML il linguaggio per creare le pagine per il web

Creare un sito Multilingua con Joomla 1.6

Introduzione ai database relazionali

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.

Access. P a r t e p r i m a

GUIDA ALLA RILEVANZA

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Informatica (Basi di Dati)

Presentazione Data Base

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

MANUALE PARCELLA FACILE PLUS INDICE

Corso di Informatica di base per le discipline umanistiche - XPATH

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language. a.a. 2004/05 Tecnologie Web 1

XML. Concetti principali. Risultato possibile. Differenze tra XML e HTML

XML: La nascita del linguaggio

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Soluzione dell esercizio del 2 Febbraio 2004

Traccia di soluzione dell esercizio del 25/1/2005

Una metodologia di progettazione di applicazioni web centrate sui dati

Costruzione del layout in gino cms

Convertitori numerici in Excel

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Office 2007 Lezione 02. Le operazioni più

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Corrispondenze e funzioni

Organizzazione delle informazioni: Database

Informatica per la comunicazione" - lezione 10 -

Lezione 2. Il modello entità relazione

Esercizi di JavaScript

EXCEL FUNZIONI PRINCIPALI

Prefazione. Piersalvo Ortu 1

Linguaggi e Paradigmi di Programmazione

Leggere un messaggio. Copyright 2009 Apogeo

Come modificare la propria Home Page e gli elementi correlati

G3. Asintoti e continuità

PROGRAMMA SVOLTO NELLA SESSIONE N.

Per accedere clicca su START o AVVIO (in basso a sinistra sul tuo schermo), poi su PROGRAMMI, ACCESSORI e infine su BLOCCO NOTE.

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

XML: extensible Markup Language

HTML 6. I frame. Sintassi di base. I frame e DOCTYPE FRAME. ...head... <FRAMESET lista_attributi> <FRAME SRC= URL lista_attributi>

Introduzione al Semantic Web

Interesse, sconto, ratei e risconti

Transcript:

Linguaggi per il web oltre HTML: XML Luca Console Con XML si arriva alla separazione completa tra il contenuto e gli aspetti concernenti la presentazione (visualizzazione). XML è in realtà un meta-formalismo che permette di definire dei linguaggi di tagging, specificando come possano essere composti (anndidati). L idea è che i tag debbano corrispondere al contenuto e che il linguaggio debba quindi descrivere la struttura della conoscenza (delle informazioni) che deve essere gestitita. Si potranno poi definire stili per la visualizzazione delle informazioni. OSSERVAZIONE: in effetti gli altri linguaggi di tagging (html, wml ) possono essere definiti in XML La possibilità di definire il sistema di tagging permette di definire dei tag e dei linguaggi in cui si specifica il significato delle diverse parti di un insieme di informazioni (conoscenza, documento) e quindi la sua struttura a livello di contenuto (verso un tagging semantico). In XML, nella definizione di un documento (insieme di documenti) si specificano tre cose: 1. DTD (Document Type Definition): con cui, attraverso un ben preciso linguaggio, si specifica quale è la struttura di tag di un documento: quali sono i tag e come si possano combinare (annidare) 2. Data una DTD, si possono definire vari documenti XML basati sulla DTD stessa, ossia che organizzano informazioni secondo la struttura di tag definita dalla DTD (sono conformi alla DTD). In questo modo viene evidenziato il ruolo delle diverse parti di conoscenza che costituiscono il documento. 3. Fogli di stile per la visualizzazione dei documenti. Possono essere specificati in due modi diversi: a. CSS b. XSL Definire una DTD corrisponde a definire un nuovo linguaggio di tagging, con tag che permettono di organizzare un documento in base al loro contenuto. DTD OSSERVAZIONE: Esistono già molte DTD per diversi tipi di informazioni, possono essere consultate in www.xml.org dove è possibile registrare una nuova DTD. Linguaggio attraverso cui si possono definire i tag e la struttura gerarchica (ad albero) secondo cui i tag possono essere organizzati. Questo corrisponde a definire la struttura concettuale di un documento. 1

Esempio: supponiamo di definire i tag per organizzare delle lettere; avremo, le seguenti componenti dal punto di vista della struttura dei documenti (in base al loro significato): - mittente, a sua volta composto da un nome e un indirizzo, a sua volta composto da via e città; - destinatario, a sua volta composto da un nome e un indirizzo, a sua volta composto da via e città; - testo, composto da un subject e quindi dei paragrafi (in numero variabile). Ossia, la seguente struttura ad albero: mittente nome indirizzo via città lettera destinatario nome indirizzo via città testo subject paragrafi Paragrafo* (* significa la possibilità di ripetere più volte un oggetto) In questo modo si distinguono le diverse parti di un documento e i ruoli ceh queste diverse parti hanno nel costituire un documento. Questa strutturazione può essere utilizzata in vari modi (in un certo senso è un modo disstrutturare l informazione quasi come in una tabella di una base di dati). Ad esempio, per definire sistemi di information retrieval che si basano sul contenuto (se devo cercare le lettere mandate a rossi, non cercherò genericamente le lettere che contengono il nome rossi, ma quelle che lo contengono nella parte nome, all interno della parte destinatario, evitando così le lettere in cui rossi è il mittente o compare nell indirizzo o compare nel testo). Sintassi DTD Definizione di un tag e della sua struttura di sottotag: <!ELEMENT nome-del-tag (definizione sottotag)> dove nella parte definizione sottotag vi sono varie alternative: - #PCDATA: ossia nel tag (tra il tag <nome-de-tag> e la sia chiusura </nome-detag>) sono contenute delle informazioni senza ulteriori sottotag 2

- TAG1, TAG2, a indicare che il tag <nome-de-tag> ha i sottotag TAG1 e TAG2 che devono esserci e devono essere usati nell ordine specificato - TAG1 TAG2, a indicare che il tag <nome-de-tag> ha i sottotag TAG1 e TAG2 che devono esserci e possono essere usati in qualunque ordine - TAG? a indicare che il tag <nome-de-tag> ha il sottotag opzionale TAG. NOTA: il punto interrogativo si può usare anche associato ad uno dei due TAG1 o TAG2 dei casi precedenti a indicare che uno o entrambi i tag sono opzionali - TAG* a indicare che il tag <nome-de-tag> ha il sottotag TAG che può essere ripeto zero o più volte (vi possono essere più occorrenze del sottotag). Come sopra, può essere combinato con i primi due casi - TAG+ a indicare che il tag <nome-de-tag> ha il sottotag TAG che può essere ripeto una o più volte (vi possono essere più occorrenze del sottotag). Come sopra può essere combinato con i primi due casi. Ossia uguale ad * ma DEVE esserci almeno una volta. ESEMPIO: lettera.dtd <!ELEMENT lettera (mittente, destinatario, testo)> <!ELEMENT mittente (nome, indirizzo)> <!ELEMENT indirizzo (via, città)> <!ELEMENT nome (#PCDATA)> <!ELEMENT via (#PCDATA)> <!ELEMENT città (#PCDATA)> <!ELEMENT testo (subject, paragrafi)> <!ELEMENT subject (#PCDATA)> <!ELEMENT paragrafi (paragrafo*)> <!ELEMENT paragrafo (#PCDATA)> Quindi si possono definire vari documenti strutturati secondo questa DTD. Se rispettano la struttura di tag della DTD si dicono conformi. La verifica di conformità viene effettuata da dei parser (analizzatori sintattici) XML che usano la DTD come definizione di una sintassi (regole sintattica grammaticali) e il documento come il testo da analizzare. I parser verificano se un documento è conforme e ne costruiscono la struttura, ossia mettono il documento in una forma ad albero, secondo la struttura definita dalla DTD. Ci sono molti parser, anche shareware. Ad esempio Explorer dalla versione 5.0 ha inglobato un parser XML ed esegue l analisi visualizzando il documento in forma ad albero. Il documento XML deve specificare quale è la DTD di riferimento. Esempio di documento XML conforme: <xml version= 1.0 > <!DOCTYPE lettera src= lettera.dtd > <lettera> <mittente> (osservazione: deve essere il tag radice dell albero, seguito - con src - dal file con la dtd; opp. si può specificare l URL della dtd) 3

<nome> pippo </nome> <indirizzo> <via> roma 1 </via><citta> torino </citta> </indirizzo> </mittente> <destinatario> <nome> pluto </nome> <indirizzo> <via> vittorio 1 </via><citta> milano </citta> </indirizzo> </ destinatario > <testo> <subject> aaaa </subject> <paragrafi> <paragrafo> cwcwcw </paragrafo> <paragrafo> wwf </paragrafo>. <paragrafo> cwcwcw </paragrafo> </paragrafi> </lettera> Esempi di documenti non conformi: 1) <lettera> <mittente> <indirizzo> <via> roma 1 </via><citta> torino </citta> </indirizzo> <nome> pippo </nome> </mittente> <destinatario>. ORDINE TAG SBAGLIATO 2) <lettera> <mittente> <nome> pippo </nome> </mittente> <destinatario>. MANCA TAG XML è comodo per definire dei formati standard per informazioni che devono essere scambiate da persone o da agenti software. Infatti i tag permettono di strutturare in modo semantico le diverse parti di un documento, rendendo non ambiguo il documento e le sue parti. XML si presta quindi a definire: - formati di interscambio; - formati di memorizzazione e retrieval (recupero) di documenti e conoscenza. 4

OSSERVAZIONE: oggi è comune dire di definire un XML ogni volta che si devono condividere o scambiare dei documenti o della conoscenza. Con questo si intende definire una DTD. Attributi In una DTD è possibile anche definire degli attributi per i tag, anche se questo non è di uso molto comune (per comodità spesso si preferisce definire dei sottotag, che possono essere gestiti facilmente con stili XSL, cosa non standard con gli attributi). OSSERVAZIONE: gli attributi sono come in HTML, ad esempio come HREF nel tag A: <A HREF= > Per ogni tag è quindi possibile specificare degli attributi, e per ogni attributo si specifica: - dominio; - il fatto che l attributo sia obbligatorio o opzionale (required/not required); - valore di default (opzionale) Sintassi <!ATTLIST nome-tag nome-attributo TIPO #required valore default > TIPO: - CDATA: un testo - NUMBER: un numero - (A B C) elenco, enumerazione dei valori possibili (in questo caso A, B e C) Ad esempio: dato un tag indirizzo, si potrebbero definire, via, numero e città come attributi: <!ELEMENT indirizzo (#PCDATA)> <!ATTLIST indirizzo via CDATA #required> <!ATTLIST indirizzo numero NUMBER> <!ATTLIST indirizzo citta CDATA default= torino > Il tag html: <INDIRIZZO via= roma numero =1, citta= milano > sarà conforme a tale definizione. Altro esempio di DTD <?xml version="1.0" encoding="utf-8"?> <!ELEMENT luoghi (alberghi, ristoranti)> <!ELEMENT alberghi (albergo)> <!ATTLIST alberghi categoria (lusso media bassa) #REQUIRED> <!ELEMENT albergo (id+, nome, stelle, indirizzo, descrizione, foto*)> 5

<!ELEMENT id (#PCDATA)> <!ELEMENT nome (#PCDATA)> <!ELEMENT stelle (#PCDATA)> <!ELEMENT indirizzo (citta, via, numero)> <!ELEMENT descrizione (#PCDATA)> <!ELEMENT ristoranti (ristorante)> <!ELEMENT ristorante (id+, nome, indirizzo, genere, voto, foto*)> <!ELEMENT genere (#PCDATA)> <!ELEMENT voto (#PCDATA)> <!ENTITY vale SYSTEM "vale1.txt"> Questo usa anche la direttiva ENTITY che permette di associare ad un tag un oggetto (ad esempio una immagine o un documento). FOGLI DI STILE XML non prevede alcuna direttiva per la visualizzazione delle informazioni. Ogni specifica di visualizzazione deve essere effettuata usando dei linguaggi per fogli di stile, per cui vi sono due alternative: - CSS (più semplice e rozzo); - XSL (più sofisticato). CSS Funziona esattamente come CSS per HTML, ossia per ogni tag si definiscono regole di stile: TAG {direttive di stile} Nel documento XML si specifica quindi quale è il file in cui ritrovano direttive di stile: <xml version =1.0> <!DOCTYPE lettera src= lettera.dtd > <?xml:stylesheet type= text/css href= pippo.css > (in generale è un URL) pippo.css: LETTERA {font-style:times, font-size:11} INDIRIZZO {font-size:10} OSSERVAZIONE: dovrebbe funzionare l ereditarietà degli stili secondo la struttura dei tag definita nella DTD. OSSERVAZIONE: non si riescono a fare grandi cose 6

XSL XSL è un sistema molto più sofisticato che permette di definire degli stili di visualizzazione o, più in generale, delle regole di traduzione in altri linguaggi, che includano direttive di visualizzazione. Ad esempio, è possibile specificare come tradurre un documento XML in HTML, mescolando nell HTML il contenuto, proveniente dal documento XML e delle direttive di visualizzazione. In modo analogo è possibile specificare traduzioni in altri linguaggi quali WML o anche RTF per documenti Word o Tex. In questo modo ad esempio è possibile aver una sola versione di un documento, che contiene solo il contenuto in XML e quindi generare al volo traduzioni in diversi altri linguaggi, per media o ambiti di visualizzazione diversi. XSL è basato sulla definizione di regole di traduzione per ogni tag, in cui la regola di traduzione può specificare: - comandi (frasi) nel linguaggio oggetto della traduzione; - richiamare regole di traduzione per dei sottotag del tag per cui si sta scrivendo la regola. Sintassi <xsl template match= tag per cui si sta definendo la regola> SCHEMA DI TRADUZIONE </xsl:template> In particolare, all interno di SCHEMA DI TRADUZIONE si possono chiamare regole di traduzione di sottotag secondo al seguente sintassi: <xsl: apply-templates select= nome tag /> per richiamare la regola di traduzione per il tag nome tag (che deve essere un sottotag di quello per cui si sta specificando lo SCHEMA DI TRADUZIONE <xsl:value-of select= noem tag /> per inserire nella traduzione il contenuto del tag nome tag, ossia l informazione compresa tra <nome tag> e </nome tag> <xsl.for each select= noem tag > schema di traduzione da applicare a tutte le occorrenze del tag (sottotag) nome tag [è una sorta di for da applicare per tag ripetitivi (con * o +)] </xsl: for-each> Esempio: consideriamo una DTD e un documento XML per un catalogo di prodotti, per cui poi vogliamo generare una pagina HTM contenente una tabella: DTD: 7

<!ELEMENT CATALOGO (PRODOTTI)> <!ELEMENT PRODOTTI (PRODOTTO*)> <!ELEMENT PRODOTTO (NOME, PREZZO)> <!ELEMENT NOME (#PCDATA)> <!ELEMENT PREZZO (#PCDATA)> XML: <CATALOGO> <PRODOTTI> <PRODOTTO> <NOME> pippo </NOME> <PREZZO> 1 </PREZZO> </PRODOTTO>. <PRODOTTO> <NOME> pluto </NOME> <PREZZO> 10 </PREZZO> </PRODOTTO> </PRODOTTI> </ CATALOGO> XSL, per produrre: ELENCO DEI PRODOTTI: nome prodotto prezzo pippo 1 pluto 10 <xsl:template match= catalogo > <HTML> <BODY.> <H1> ELENCO DEI PRODOTTI: </H1> <TABLE width= > <TR><TH> nome prodotto> <TH> prezzo </TR> <xsl:apply-templates match= prodotti /> </TABLE> </xsl:template > parte in linguaggio oggetto richiamo regola di traduzione ancora linguaggio oggetto <xsl:template match= prodotti > <xsl:for-each match= prodotto > <TR> <xsl:apply-templates match= nome > <xsl:apply-templates match= prezzo > </TR> </xsl:for-each> </xsl:template > <xsl:template match= nome > <B> 8

</B> </xsl:template > <xsl:value-of match= nome > <xsl:template match= prezzo > <xsl:value-of match= prezzo > </xsl:template > Per effettuare la traduzione: - esistono dei traduttori (per es. Saxon, Xalan,..) che effettuano la traduzione da file XML a file oggetto (per es. HTML); - i browser cominciano a supportare la traduzione e visualizzazione immediata dell HTML risultante (ma questo ovviamente vale solo se si traduce in HTML). 9