Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
e-mail: davidebilo@uniss.it
Ufficio docente
Corsi di laurea associati
●
Lettere, Filologia Moderna e Industria Culturale (LM14)
●
Lingue e Letterature Straniere per la Mediazione Culturale
e la Valorizzazione del Territorio (LM38)
●
Servizio Sociale e Politiche Sociali (LM87)
Informazioni sul corso
Semestre: primo
Ore di didattica: 40
Numero CFU: 6
Obbligo di frequenza: NO
●
Basi di dati (linguaggio SQL)
●
Linguaggi di marcatura HTML (+ CSS) e XML
Libri di testo consigliati
●
Basi di dati
Silvana Castano, Alfio Ferrara e Stefano Montanelli
Informazione, conoscenza e Web (per le scienze umanistiche)
Pearson
(capitoli 1, 3, 4 e 5)
●
Linguaggi di marcatura
➢
XML
Elena Pierazzo
La codifica dei testi (un'introduzione)
Carocci editore
(capitoli da 1 a 4 più appendici)
Tutorial su web
●
Tutorial linguaggio SQL
http://www.w3schools.com/sql/default.asp
●
Tutorial linguaggio HTML
http://www.w3schools.com/html/default.asp
●
Tutorial linguaggio CSS
http://www.w3schools.com/css/default.asp
●
Tutorial linguaggio XML
http://www.w3schools.com/xml/default.asp
Programmi utilizzati
●
LibreOffice Base (richiede JRE)
http://it.libreoffice.org/download/libreoffice-still/
●
Notepad++ con il plugin XML tools
https://notepad-plus-plus.org/download/v7.html
Modalità d’esame
La prova d'esame consiste nel realizzare:
●
un progetto di basi di dati,
●
un progetto sui linguaggi di marcatura che consiste in:
●
creazione di un sito web in HTML con formattazione tramite CSS,
●
creazione di una grammatica XML.
Ciascun candidato può realizzare i due progetti da solo oppure in gruppo (max 3 persone). I dettagli dei
progetti da realizzare vengono forniti dal docente previa richiesta per e-mail e indicando i nominativi
delle persone coinvolte. I file relativi ai progetti devono essere consegnati al docente per e-mail entro
e non oltre 14 giorni dalla data di assegnazione degli stessi. La presentazione dei progetti si svolge
presso l'ufficio del docente il giorno dell'appello d'esame.
N.B.: La richiesta dei progetti può avvenire in qualunque periodo dell’anno, indipendentemente dalle
date degli appelli d’esame.
A ciascun progetto viene attribuita una valutazione in trentesimi. L'esame è superato solo se il voto di
ciascuno dei due progetti è pari o superiore a 18/30 (diciotto/trentesimi). Il voto d'esame viene
calcolato utilizzando la media aritmetica dei voti dei due progetti.
Programma del corso (ad alto livello)
●
Basi di dati (linguaggio SQL)
●
Linguaggi di marcatura HTML (+ CSS) e XML
Avram Noam Chomsky
(Philadelphia, 7-12-1928)
●
linguista, filosofo e teorico della
comunicazione statunitense
●
professore emerito di linguistica al MIT
●
creatore della grammatiche trasformazionali
(considerate il contributo più rilevante della
linguistica teorica del XX secolo)
Gerarchia di Chomsky
●
Basi di dati (linguaggio SQL)
●
Linguaggi di marcatura HTML (+ CSS) e XML
Cos'è una base di dati?
●
Struttura di memorizzazione dati che permette di
➢
organizzare grandi quantità di informazioni
➢
ricercare informazioni in maniera rapida
Alcuni esempi
●
dizionari (dizionari on-line)
●
cataloghi biblioteche
●
conti corrente
●
carriere degli studenti universitari di un ateneo
●
piccole basi di dati da scrivania per memorizzare dati derivanti da
ricerche personali (linguistica, letteratura, cultura in genere)
Cos'è un linguaggio di marcatura?
●
un linguaggio che
➢
individua ed evidenzia la struttura e/o i contenuti di un
testo (codifica del testo)
Cos'è HTML?
Cos’è CSS?
Linguaggio per formattare pagine web
(e anche file realizzati con altri linguaggi di marcatura)
Cos'è XML?
meta-linguaggio di marcatura
L'informatica nelle discipline umanistiche
●
Archeologia e cultura materiale
➢
tecniche di remote sensing
➢
basi di dati
➢
sistemi GIS (Geographical Information System)
➢
applicazioni software
➔
modellazione 3D (CAD)
➔
navigazione in ambienti virtuali (VRML, ecc.)
➔
analisi multivariate, seriazione, clustering e analisi di
corrispondenze applicato a dati archeologici
●
Biblioteconomia
➢
basi di dati
➢
Unicode
➢
strumenti per realizzare biblioteche digitali
➢
servizi di digital document delivery
●
Filologia
➢
banche dati e sistemi di interrogazione (documentaria)
➢
rappresentazione dei testi su media (editoriale)
➢
relazione tra testo e sue interpretazioni (ermeneutica)
Testo tratto da Informatica umanistica: una disciplina di confine , A. Celentano et al.
http://www.dsi.unive.it/~cortesi/paperi/MondoDigitale.pdf
L'informatica nelle discipline umanistiche
●
Linguistica
➢
Linguistica Computazionale
➔
trattamento del testo, correttori ortografici e sintattici,
riconoscimento vocale, riassunti automatici
➢
automatizzare la ricerca di
➔
relazioni linguistiche presenti in un testo
➔
strutture sintattiche
➢
attribuire tratti semantici pertinenti
➢
individuare le espressioni relative a un medesimo referente
➢
marcatura semi-automatica delle strutture morfo-sintattiche e
sviluppo di sistemi di interrogazione
●
Musicologia
➢
banche dati
➢
programmi
➔
di videoscrittura
➔
per sintetizzare opere musicali
Caratteristiche di un DBMS
●
Affidabilità
➢
funzionalità di salvataggio e ripristino
➢
assicura la coerenza dei dati
●
Privatezza
➢
ciascun utente, autenticandosi, è abilitato a svolgere solo determinate azioni
●
Efficienza
➢
utilizzare al meglio le risorse del sistema
●
Efficacia
➢
rendere produttive le attività dei suoi utilizzatori
Modello dei dati di un DBMS
Ogni DBMS è basato su un modello di dati
●
Modello di dati: insieme di costrutti per descrivere
➢
lo schema logico, cioè la struttura e le caratteristiche
dei dati della realtà d'interesse
➢
le operazioni da effettuare sui dati
➔
inserimenti, cancellazioni, modifiche
➔
interrogazioni (o query)
Struttura di una base di dati
Utente Utente
Applicazione Applicazione
Software per la
FISICO
DBMS gestione di dati su file
Software per la
FISICO
DBMS gestione di dati su file
COSA
Progettazione
concettuale
Schema concettuale
Basi di dati
Fasi per la progettazione di un DB
Requisiti della base di dati
COSA
Progettazione
concettuale
Schema concettuale
Scelta di un DBMS
Progettazione
logica
COME
Schema logico
Progettazione
fisica/tuning
Basi di dati
Fasi per la progettazione di un DB
Requisiti della base di dati
COSA
Progettazione
concettuale
Schema concettuale
Scelta di un DBMS
Progettazione
logica
COME
Schema logico
Progettazione
fisica/tuning
Basi di dati
Requisiti della base di dati
COSA
Progettazione
concettuale
Schema concettuale
Scelta di un DBMS
Progettazione
logica
COME
Schema logico
Progettazione
fisica/tuning
Basi di dati
La progettazione concettuale
Il modello Entità-Relazione (ER)
NOME ATTRIBUTO
Ogni attributo di entità ha un nome
che lo identifica in modo univoco
nell'ambito della entità
NOME ENTITÀ
ed è rappresentato tramite un cerchio
collegato all'entità di appartenenza
Alcuni esempi
Progettazione di una base di dati per la gestione della
segreteria studenti di una università
MATRICOLA NOME COGNOME NOME COGNOME TELEFONO NOME CREDITI
ATTIVITÀ
FORNITORE PRODOTTO
COMMERCIALE
Relazione
Rappresenta un legame logico fra due o più entità.
ENTITÀ 2
...
NOME
ENTITÀ 1 ENTITÀ N
RELAZIONE
Alcuni esempi
Progettazione di una base di dati per la gestione della
segreteria studenti di una università
MATRICOLA NOME COGNOME NOME CREDITI
DOCENTE RESPONSABILE
Alcuni esempi
(come interpretare una relazione)
Progettazione di una base di dati per la gestione della
segreteria studenti di una università
MATRICOLA NOME COGNOME NOME CREDITI
ATTIVITÀ
COMMERCIALE
ATTIVITÀ
COMMERCIALE
ATTIVITÀ
COMMERCIALE
ATTIVITÀ
COMMERCIALE
RESIDENZA
IMPIEGATO CITTÀ
SEDE DI LAVORO
NOME ATTRIBUTO
ANNO ACCADEMICO
NOME COGNOME TELEFONO NOME CREDITI
ATTIVITÀ
COMMERCIALE
(x,y) U
E R
Un esempio generico
Supponiamo che esista una relazione R tra due entità E1 e E2
E1 R E2
(x,y) (x',y')
E1 R E2
Alcuni esempi
Progettazione di una base di dati per la gestione della
segreteria studenti di una università
MATRICOLA NOME COGNOME NOME CREDITI
VOTO DATA
(0,N)
STUDENTE ESAME CORSO
(0,N) (0,N)
STUDENTE ESAME CORSO
(0,N) (1,1)
DOCENTE RESPONSABILE CORSO
ATTIVITÀ
COMMERCIALE
(0,N)
PARTITA IVA NOME TELEFONO CODICE NOME
QUANTITÀ DATA
(0,N) (0,N)
FORNITORE ORDINE PRODOTTO
Identificatore (di una entità E)
Collezione di attributi e/o relazioni connesse a
E che permettono di identificare univocamente
ciascun oggetto di E
NOME ATTRIBUTO
(identificatore) L'identificatore viene rappresentato nello
schema colorando di nero il cerchio
NOME ENTITÀ di ciascun attributo
che fa parte dell'identificatore
Identificatore interno. L'entità è detta forte
Alcuni esempi
Progettazione di una base di dati per la gestione della
segreteria studenti di una università
MATRICOLA NOME COGNOME ANNO ACCADEMICO CLASSE NOME
CORSO DI
STUDENTE
LAUREA
Progettazione di una base di dati per la gestione magazzino di
un centro commerciale
PARTITA IVA NOME TELEFONO CODICE NOME CODICE NOME
ATTIVITÀ
FORNITORE PRODOTTO
COMMERCIALE
Identificatore (di una entità E)
Collezione di attributi e/o relazioni connesse a
E che permettono di identificare univocamente
ciascun oggetto di E
(1,1)
STUDENTE ISCRIZIONE UNIVERSITÀ
COSA
Progettazione
concettuale
Schema concettuale
Scelta di un DBMS
Progettazione
logica
COME
Schema logico
Progettazione
fisica/tuning
Basi di dati
Tipologie di DBMS
Gerarchico
Tipologie di DBMS
Relazionale
Gerarchico
Tipologie di DBMS
Reticolare
Relazionale
Gerarchico
Tipologie di DBMS
A oggetti
Reticolare
Relazionale
Gerarchico
Tipologie di DBMS
A oggetti
Reticolare
Relazionale
Gerarchico
Tipologie di DBMS
●
Gerarchico
➢
basato su strutture ad albero
●
Relazionale
➢
basato sul costrutto di relazione (rappresentato tramite una tabella)
●
Reticolare
➢
basato sull'uso di grafi
●
Oggetti
➢
evoluzione del modello relazionale. Vengono estesi i concetti della
programmazione a oggetti alle basi di dati
Il modello di dati
nei DBMS relazionali
DBMS relazionale
Fornisce un insieme di costrutti per
●
definire una base di dati
➢
modello (di dati) relazionale
●
interrogare una base di dati
➢
algebra relazionale
Il modello relazionale
●
“Estende” il concetto matematico di relazione
➢
rappresentabile con tabelle
●
Ogni classe di oggetti ha una rappresentazione in
una tabella corrispondente
●
Il modello è “basato sui valori”
➢
le associazioni tra dati contenuti in relazioni (tabelle)
diverse sono rappresentate per mezzo dei dati stessi
Un esempio di DBMS relazionale:
la gestione di una segreteria studenti universitaria
STUDENTE INSEGNAMENTO
MATRICOLA COGNOME NOME CODICE NOME CFU
ESAME
STUDENTE INSEGNAMENTO VOTO LODE DATA
BILÒ DAVIDE
MARIOTTI GAVINO
ROBERTO RELAZIONE
(DOCENTI DUMAS)
COGNOME´NOME
(BILÒ, DAVIDE)
BILÒ DAVIDE
(MARIOTTI, GAVINO)
MARIOTTI GAVINO
(MARIOTTI, DAVIDE)
(BILÒ, ROBERTO)
Estensione di relazione (matematica):
le relazioni (o tabelle)
Definiamo le relazioni (o tabelle) nel modello
relazionale “estendendo” il concetto di
relazione matematica
NOME_TABELLA
ATTRIBUTO 1
...
ATTRIBUTO N
BILÒ DAVIDE
MARIOTTI GAVINO
DOCENTE
Lo schema della relazione è COGNOME
NOME
●
Il dominio dell'attributo COGNOME è una sequenza di caratteri alfanumerici
●
Il dominio dell'attributo NOME è una sequenza di caratteri alfanumerici
Osservazione
DOCENTE DOCENTE
COGNOME NOME NOME COGNOME
DOCENTE DOCENTE
COGNOME NOME COGNOME NOME
ESAME
STUDENTE INSEGNAMENTO VOTO LODE DATA
●
Il dominio associato a TELEFONO è l'insieme di tutti i numeri di telefono
●
Il numero di telefono di BILÒ DAVIDE è 079/229664
●
MARIOTTI GAVINO non ha il telefono
●
Il numero di telefono di MORACE ALDO è sconosciuto (ma sappiamo che
MORACE ALDO ha il telefono)
●
Non sappiamo se MANOTTA MARCO ha il telefono oppure no
Valori nulli: motivazioni
Problema pratico: nella realtà può accadere che il valore
associato ad un attributo di una tupla non sia
disponibile
●
dato inesistente
➢
MARIOTTI GAVINO non ha il telefono
●
dato sconosciuto
➢
Il numero di telefono di MORACE ALDO è sconosciuto (ma sappiamo
che MORACE ALDO ha il telefono)
●
dato senza informazione
➢
Non sappiamo se MANOTTA MARCO ha il telefono oppure no
Rappresentazione dei valori nulli
Problema pratico: il valore associato ad un attributo di una tupla
non è sempre disponibile (dato sconosciuto,
inesistente o senza informazione)
●
Il dominio associato a TELEFONO è l'insieme di tutti i numeri di telefono
più l'elemento NULL
●
Il numero di telefono di BILÒ DAVIDE è 079/229664
●
MARIOTTI GAVINO non ha il telefono
●
Il numero di telefono di MORACE ALDO è sconosciuto (ma sappiamo che
MORACE ALDO ha il telefono)
●
Non sappiamo se MANOTTA MARCO ha il telefono oppure no
Vincoli di chiave: motivazioni
Problema pratico: l'istanza di una relazione (tabella) deve
contenere tuple distinte
●
{COGNOME, NOME} non è una superchiave
●
{MATRICOLA, COGNOME, NOME} è una superchiave ma non è una chiave
●
{MATRICOLA} è una chiave
●
{STUDENTE} non è una chiave
●
{STUDENTE, INSEGNAMENTO, VOTO} è una superchiave ma non è una chiave
●
{STUDENTE, INSEGNAMENTO} è una chiave
Sono relazioni
ESAME ESAME
STUDENTE INSEGNAMENTO VOTO LODE DATA STUDENTE
DATA
Alcuni esempi
STUDENTE
MATRICOLA COGNOME NOME
ESAME
STUDENTE INSEGNAMENTO VOTO LODE DATA
DATA
●
definire l'attributo STUDENTE della relazione (tabella) ESAME come chiave esterna
dell'attributo MATRICOLA della relazione (tabella) STUDENTE
➢
il DBMS verifica e garantisce che una tupla della relazione (tabella) ESAME contenga nel campo
STUDENTE un numero di MATRICOLA di uno studente già presente nella relazione (tabella)
STUDENTE
●
definire l'attributo INSEGNAMENTO della relazione (tabella) ESAME come chiave
esterna dell'attributo CODICE della relazione (tabella) INSEGNAMENTO
➢
il DBMS verifica e garantisce che una tupla della relazione (tabella) ESAME contenga nel campo
INSEGNAMENTO un CODICE di un insegnamento già presente nella relazione (tabella)
INSEGNAMENTO
Vincoli di integrità referenziale:
esempio con soluzione
STUDENTE INSEGNAMENTO
MATRICOLA COGNOME NOME CODICE NOME CFU
ESAME
STUDENTE INSEGNAMENTO VOTO LODE DATA
30011111 INF-1 32 VERO NULL
30011111 LI-1 25 VERO 15-06-2013
30022222 LI-1 27 FALSO 20-09-2013
●
la DATA di verbalizzazione di un ESAME è NULL
●
il VOTO di un ESAME è 32
●
il VOTO di un ESAME è 25 e LODE
Vincoli di dominio: motivazioni
Problema pratico: i valori di un insieme di uno o più attributi di
una tupla devono soddisfare una proprietà P
(solitamente esprimibile tramite una formula
di logica proposizionale)
VOLO
CODICE COMPAGNIA DURATA AEROPORTO_PARTENZA AEROPORTO_ARRIVO
Vincolo di dominio
L'AEROPORTO di PARTENZA di un VOLO è diverso da quello di ARRIVO
Vincoli di dominio: un esempio con soluzione
VOLO
CODICE COMPAGNIA DURATA AEROPORTO_PARTENZA AEROPORTO_ARRIVO
È una relazione
Vincolo di dominio
L'AEROPORTO di PARTENZA di un VOLO è diverso da quello di ARRIVO
Vincoli di dominio: esempio con soluzione
ESAME
STUDENTE INSEGNAMENTO VOTO LODE DATA
30011111 INF-1 32 VERO NULL
30011111 LI-1 25 VERO 15-06-2013
30022222 LI-1 27 FALSO 20-09-2013
Vincolo di dominio
la DATA di verbalizzazione di un ESAME non può essere NULL
Vincoli di dominio: esempio con soluzione
ESAME
STUDENTE INSEGNAMENTO VOTO LODE DATA
30011111 INF-1 32 VERO NULL
30011111 LI-1 25 VERO 15-06-2013
30022222 LI-1 27 FALSO 20-09-2013
Vincoli di dominio
il VOTO di un ESAME è un numero intero compreso tra 18 e 30
È una relazione
Vincoli di dominio
la DATA di verbalizzazione di un ESAME non può essere NULL
●
Operazioni di decomposizione
➢
Proiezione
➢
Selezione
●
Operazioni insiemistiche
➢
Unione
➢
Intersezione
➢
Differenza
➢
Prodotto cartesiano
●
Join
Proiezione: idea intuitiva
●
La proiezione consiste nel “sezionare” verticalmente una relazione (tabella)
●
Serve a scartare colonne di dati “poco interessanti” da una relazione (tabella)
Un esempio
INSEGNAMENTO
CODICE NOME CFU
INF-1 INFORMATICA 6
LI-1 LINGUA INGLESE 1 12
Gli studenti visualizzano l'elenco dei corsi
con i rispettivi CFU (agli studenti non
interessa conoscere il codice di un corso)
NOME CFU
INFORMATICA 6
LINGUA INGLESE 1 12
Selezione: idea intuitiva
●
La selezione consiste nel “sezionare” orizzontalmente una relazione (tabella)
●
Serve a selezionare solo le tuple di “interesse” da una relazione (tabella)
Alcuni esempi
ESAME
STUDENTE INSEGNAMENTO VOTO LODE DATA
Osservazione: una selezione può generare una relazione (tabella) contenente 0 tuple
Alcuni esempi: proiezione della selezione
ESAME
STUDENTE INSEGNAMENTO VOTO LODE DATA
VOTO LODE
30 VERO
25 FALSO
Alcuni esempi: proiezione della selezione
VOLO
CODICE COMPAGNIA DURATA AEROPORTO_PARTENZA AEROPORTO_ARRIVO
60 FCO GOA
85 NAP BGY
Unione: idea intuitiva
XÈY
Y
X Y
ALGHERO-FERTILIA NAPOLI-CAPODICHINO
NAPOLI-CAPODICHINO ROMA-FIUMICINO
ALGHERO-FERTILIA
NAPOLI-CAPODICHINO
ROMA-FIUMICINO
Intersezione: idea intuitiva
XÇY
Y
X Y
L'intersezione consiste nel prendere tuple comuni a due o più relazioni (tabelle)
Un esempio
RYANAIR ALITALIA
AEROPORTO_SERVITO AEROPORTO_SERVITO
ALGHERO-FERTILIA NAPOLI-CAPODICHINO
NAPOLI-CAPODICHINO ROMA-FIUMICINO
Le compagnie RYANAIR e ALITALIA
hanno deciso di fondere le società e, al
fine di ottimizzare i costi, vogliono
capire quali sono gli aeroporti serviti
da entrambe le compagnie aeree
AEROPORTO_SERVITO
NAPOLI-CAPODICHINO
Differenza: idea intuitiva
X-Y
Y
X Y
ALGHERO-FERTILIA NAPOLI-CAPODICHINO
NAPOLI-CAPODICHINO ROMA-FIUMICINO
La compagnia aerea ALITALIA, che
ha deciso di fare concorrenza alla
compagnia aerea RYANAIR, vuole
conoscere l'elenco degli aeroporti in
cui non presta servizio che però sono
serviti dalla compagnia RYANAIR
AEROPORTO_SERVITO
ALGHERO-FERTILIA
Prodotto cartesiano: idea intuitiva
x 1 y1
x1 y2
x1 ...
x2 x1 yn
... x 2 y1
xm
x2 y2
...
x2 yn
y1 ...
y2 xm y1
... xm y2
yn ...
xm yn
Il prodotto cartesiano tra due relazioni (tabelle) consiste nel combinare ogni tupla
della prima relazione (tabella) con ogni tupla della seconda relazione (tabella)
Un esempio
STUDENTE ESAME
COSA
Progettazione
concettuale
Schema concettuale
Scelta di un DBMS
Progettazione
logica
COME
Schema logico
Progettazione
fisica/tuning
Basi di dati
La progettazione logica
ATT n
NOME_ENTITA
...
Identificatore
ATT i
ATT 1
ATT i+1
NOME_ENTITA ...
ATT n
Tradurre le entità in tabelle:
caso di un'entità debole
Identificatore
...
di un qualche oggetto X è un
...
...
...
ATT KEY 1
ENTITA_1
ATT 1
ATT 1
ENTITA_1 ENTITA_2
...
ENTITA_2 ATT i
...
ATT 1
di associare, a ciascun oggetto di
ENTITA_1, al più un solo oggetto
(?,1) di ENTITA_2.
ENTITA_1 RELAZIONE ENTITA_2
ENTITA_1
Nota: se un oggetto di ENTITA_1 è in
...
ENTITA_2 relazione con al più x oggetti di
ATT 1 ENTITA_2, dove x è un numero
Y1
... piccolo, allora ENTITA_1 contiene,
... rispettivamente, x alias di ognuno
ATT n
Yj degli attributi Y1, …, Yj.
ALIAS Y1
...
...
Ym
ALIAS Yj
Tradurre le relazioni in tabelle:
caso di relazione molti a molti (N a N)
ATT k
La tabella RELAZIONE
...
permetterà di associare, a
ATT 1 ciascun oggetto di ENTITA_1,
un numero arbitrariamente
(?,N) (?,N)
ENTITA_1 RELAZIONE ENTITA_2 grande di oggetti distinti di
ENTITA_2 (e viceversa).
RELAZIONE
ENTITA_1 ATT 1
COSA
Progettazione
concettuale
Schema concettuale
Scelta di un DBMS
Progettazione
logica
COME
Schema logico
Progettazione
fisica/tuning
Basi di dati
Progettazione fisica:
(un po' di) linguaggio HSQL
Crea una tabella dal nome NOME_TABELLA con N attrbuti. Per ciascun
ATTRIBUTO è specificato il DOMINIO, il valore predefinito (opzionale) , il
vincolo di NOT NULL (opzionale) o chiave primaria (opzionale). Infine, è possibile
specificare un elenco di vincoli (di chiave primaria, di dominio e di integrità
referenziale)
●
DATE: data (formato YYYY-MM-DD)
●
TIME: ora (formato HH.MM.SS)
●
BOOLEAN: dominio binario (a due valori) i cui valori sono TRUE e FALSE
●
LONGVARBINARY: sequenze di bit (utilizzato in generale per file di testo,
immagini, video, mp3, eccetera)
Vincoli
●
PRIMARY KEY(): di chiave primaria
●
FOREIGN KEY … REFERENCES: di integrità referenziale
●
CHECK(), UNIQUE(): di dominio
Rappresentazione dei valori costanti in HSQL
In informatica, una costante indica
un dato (numerico o di testo) invariabile
●
Numero
➢
scrivere il numero (esempio 3)
●
Booleano
➢
TRUE per vero e FALSE per falso
●
ora
➢
{T 'HH:MM:SS'} (esempio {T '10:45:30'})
●
data
➢
{D 'YYYY-MM-DD'} (esempio {D '2012-10-27'})
●
testo
➢
scritto tra apici '' (esempio, 'Ciao')
Come specificare la chiave primaria di una tabella
quando la chiave è costituita da 2 o più attributi
Supponiamo di voler creare una tabella TAB la cui chiave primaria sia la coppia
di attributi X e Y.
CREATE TABLE TAB
(
X DOMINIO_X,
Y DOMINIO_Y,
…
PRIMARY KEY(X,Y)
);
Come specificare un
vincolo di dominio CHECK
Supponiamo di voler creare una tabella TAB che contenga il vincolo di dominio
X > 0.
CREATE TABLE TAB
(
…
X DOMINIO_X,
…
[CONSTRAINT NOME_VINCOLO]
CHECK(X > 0)
);
Come specificare
il vincolo di dominio UNIQUE
Supponiamo di voler creare una tabella TAB che contenga il vincolo di unique
sulla coppia di attributi X e Y.
CREATE TABLE TAB
(
X DOMINIO_X,
Y DOMINIO_Y,
…
UNIQUE(X,Y)
);
Come specificare un vincolo di
integrità referenziale
X Y
1 1
2
●
non è possibile modificare il valore 1 dell'attributo X di TAB1
●
è possibile eliminare una tupla T da TAB1, ma solo dopo aver eliminato manualmente tutte
le tuple di TAB2 collegate a T
Esempio del vincolo di integrità
referenziale con ON UPDATE CASCADE
Supponiamo di aver creato la tabella
CREATE TABLE TAB2 (
...
FOREIGN KEY(Y) REFERENCES TAB1(X) ON UPDATE CASCADE
);
e di aver inserito le seguenti tuple
TAB1 TAB2
X Y
1 1
2
●
è possibile modificare il valore 1 dell'attributo X della prima tupla di TAB1. La modifica
si ripercuote automaticamente (a cascata) sull'attributo Y di tutte le tuple di TAB2
collegate alla tupla di TAB1 modificata. (Quindi, se il valore 1 in TAB1 viene modificato in
3, allora il DBMS modifica il valore 1 in TAB2 automaticamente aggiornandolo a 3.)
●
è possibile eliminare una tupla T da TAB1 ma solo dopo aver eliminato manualmente tutte
le tuple di TAB2 collegate a T
Esempio del vincolo di integrità
referenziale con ON UPDATE SET NULL
Supponiamo di aver creato la tabella
CREATE TABLE TAB2 (
...
FOREIGN KEY(Y) REFERENCES TAB1(X) ON UPDATE SET NULL
);
e di aver inserito le seguenti tuple
TAB1 TAB2
X Y
1 1
2
●
è possibile modificare il valore 1 dell'attributo X della prima tupla di TAB1. Il valore
dell'attributo Y di tutte le tuple di TAB2 collegate alla tupla di TAB1 che è stata
modificata viene impostato automaticamente a NULL
●
è possibile eliminare una tupla T da TAB1 ma solo dopo aver eliminato manualmente tutte
le tuple di TAB2 collegate a T
Esempio del vincolo di integrità
referenziale con ON DELETE CASCADE
Supponiamo di aver creato la tabella
CREATE TABLE TAB2 (
...
FOREIGN KEY(Y) REFERENCES TAB1(X) ON DELETE CASCADE
);
e di aver inserito le seguenti tuple
TAB1 TAB2
X Y
1 1
2
●
non è possibile modificare il valore 1 dell'attributo X di TAB1
●
è possibile eliminare una tupla T da TAB1. Tutte le tuple di TAB2 collegate a T vengono
eliminate automaticamente
Esempio del vincolo di integrità
referenziale con ON DELETE SET NULL
Supponiamo di aver creato la tabella
CREATE TABLE TAB2 (
...
FOREIGN KEY(Y) REFERENCES TAB1(X) ON DELETE SET NULL
);
e di aver inserito le seguenti tuple
TAB1 TAB2
X Y
1 1
2
●
non è possibile modificare il valore 1 dell'attributo X di TAB1
●
è possibile eliminare una tupl T da TAB1. Il valore dell'attributo Y di tutte le tuple di
TAB2 collegate a T viene impostato automaticamente a NULL
Per altri comandi del DDL di HSQL
(modifica struttura delle tabelle,
aggiungere/cancellare vincoli, ecc.) si
consiglia di consultare
linguaggio SQL (livello facile): http://www.w3schools.com/sql/default.asp
●
In HSQL, il nome “completo” di un attributo
NOME_ATTRIBUTO di una tabella NOME_TABELLA è
NOME_TABELLA.NOME_ATTRIBUTO. Tuttavia, è possibile
indicare l'attributo utilizzando solo NOME_ATTRIBUTO
ogniqualvolta la tabella di riferimento è esplicita e non vi è
possibilità di confondere l'attributo con un attributo
“omonimo” di qualche altra tabella.
Proiezione
Lista_attributi
SELECT [DISTINCT]
NOME_ATTRIBUTO_1 [AS ALIAS_ATTRIBUTO_1],
NOME_ATTRIBUTO_2 [AS ALIAS_ATTRIBUTO_2],
…
NOME_ATTRIBUTO_N [AS ALIAS_ATTRIBUTO_N]
FROM TABELLA [AS ALIAS_TABELLA]
●
DISTINCT serve a eliminare tuple ripetute
●
ALIAS_ATTRIBUTO_J è il nome associato a NOME_ATTRIBUTO_J nella
tabella ottenuta come risultato della query
●
utilizzare il simbolo * in Lista attributi per proiettare (selezionare)
tutti gli attributi di una tabella evitando così di elencare tutti gli attributi
Esempio di proiezione
CORSO
CODICE NOME CFU
INF-1 INFORMATICA 6
LI-1 LINGUA INGLESE 1 12
NOME CFU
INFORMATICA 6
LINGUA INGLESE 1 12
Esempio di proiezione con alias
CORSO
CODICE NOME CFU
INF-1 INFORMATICA 6
LI-1 LINGUA INGLESE 1 12
NOME_CORSO CFU
INFORMATICA 6
LINGUA INGLESE 1 12
Esempio di proiezione
STUDENTE
MATRICOLA COGNOME NOME
COGNOME NOME
PALLINO PINCO
tuple ripetute
PALLINO PINCO
Esempio di proiezione
STUDENTE
MATRICOLA COGNOME NOME
COGNOME NOME
SELECT [DISTINCT] *
FROM TABELLA [AS ALIAS_TABELLA]
WHERE Condizione_di_selezione
●
Condizione_di_selezione è una formula logica che permette di
selezionare solo le tuple di interesse
Esempio di selezione
ESAME
STUDENTE CORSO VOTO LODE DATA
VOTO LODE
30 VERO
25 FALSO
Alcuni esempi: proiezione di selezione
VOLO
CODICE COMPAGNIA DURATA AEROPORTO_PARTENZA AEROPORTO_ARRIVO
ALGHERO-FERTILIA NAPOLI-CAPODICHINO
NAPOLI-CAPODICHINO ROMA-FIUMICINO
AEROPORTO_SERVITO
ALGHERO-FERTILIA
NAPOLI-CAPODICHINO
tuple ripetute
NAPOLI-CAPODICHINO
ROMA-FIUMICINO
Intersezione
ALGHERO-FERTILIA NAPOLI-CAPODICHINO
NAPOLI-CAPODICHINO ROMA-FIUMICINO
NAPOLI-CAPODICHINO
Differenza
ALGHERO-FERTILIA NAPOLI-CAPODICHINO
NAPOLI-CAPODICHINO ROMA-FIUMICINO
ALGHERO-FERTILIA
Prodotto cartesiano
SELECT *
FROM TABELLA_1 [AS ALIAS_TABELLA_1],
TABELLA_2 [AS ALIAS_TABELLA_2]
Un esempio
STUDENTE ESAME
NUMERO_ACQUISTI
3
Esempio di funzioni aggregate
ACQUISTI
BENE COSTO
Pesce 10,00
Carne 5,50
Pane 3,20
TOTALE
18,70
Esempio di funzioni aggregate
ESAME
MEDIA
28
La clausola GROUP BY
STUDENTE MEDIA
30011111 28
30022222 27
Le tuple della tabella vengono partizionate in tanti gruppi quanti sono gli studenti
presenti nella tabella. Ciascun gruppo contiene tutte le tuple relative ad uno
specifico studente.
Ordinamento tuple
Supponiamo di avere una tabella STUDENTE
con gli attributi COGNOME e NOME
COSA
Progettazione
concettuale
Schema concettuale
Scelta di un DBMS
Progettazione
logica
COME
Schema logico
Progettazione
fisica/tuning
Basi di dati
Introduzione ai
linguaggi di marcatura
La codifica informatica di un testo
Supporto
supporto fisico in cui il testo viene conservato
La codifica
Codice
Insieme di simboli e di regole usati nei
sistemi di comunicazione per rappresentare i
simboli di un altro sistema di comunicazione
Machine Readable Form (MRF)
I primi 128 simboli di ISO 8859-1, Unicode, UTF-8 coincidono con il codice ASCII
Il codice ASCII
Linguaggi di codifica (di testi)
●
Prima dell'avvento dei computer
➢
Caratterizzazione (markup) dei dattiloscritti
➔
insieme di annotazioni a margine (tag)
●
Dopo l'avvento dei computer
➢
Applicazioni WYSIWYG (What You See Is What You Get)
➢
Linguaggi di markup
➔
procedurali (orientati alla visualizzazione)
➔
dichiarativi (orientati al testo)
Linguaggi di markup procedurali
<html>
<head>
<title> Pagina HTML </title>
</head>
<body>
<h1> Introduzione </h1>
<p> Questo è un esempio di documento HTML </p>
</body>
</html>
HTML
HyperText Markup Language
●
Linguaggio per la realizzazione di pagine web
●
La versione HTML 5.0 è stata sviluppata dal W3C (World
Wide Web Consortium)
●
Grammatica
➢
standard formata da circa cento elementi
➢
non modificabile dall'utente
●
Standard e portabile
Esempio di un documento HTML
<html>
<head>
<title> My web page </title>
</head>
<body>
<h1> Title of my web page </h1>
<p> This is a paragraph. </p>
<p> This is another paragraph. </p>
</body>
</html>
Struttura di un documento HTML
<html>
<head>
<title> My web page </title>
</head>
<body>
<h1> Title of my web page </h1>
<p> This is a paragraph. </p>
<p> This is another paragraph. </p>
</body>
</html>
html
head body
title h1 p p
eXtensible Markup Language
●
Sviluppato dal W3C (World Wide Web Consortium)
●
Metalinguaggio per la creazione di linguaggi di
markup (l'utente può definire anche la grammatica)
●
Autoesplicativo e intuitivo per
➢
la creazione di documenti text-oriented
➢
l'interscambio di dati di tipo
➔
numerico
➔
grafico
➔
multimediale
Linguaggi basati su XML
●
XLink
➢
connettere diversi documenti XML e non
●
XPointer
➢
specificare le aree a cui si punta all'interno di un documento
●
XPath, XQuery
➢
costruire espressioni e interrogazioni per localizzare informazioni
all'interno di un documento XML
●
XSL e XSLT
➢
costruire fogli di stile per la visualizzazione di documenti XML e per
la trasformazione di documenti XML in altri documenti (XML, HTML,
XHTML, solo testo, ecc.)
●
XHTML
➢
implementazione di HTML basata su XML
XML in ambito applicativo
Davide
</body>
</email>
●
ogni elemento ha un nome (generic identifier o GI)
elemento
<paragrafo>Questo è un paragrafo</paragrafo>
<elemento_vuoto/>
Relazioni tra due elementi A e B (1 di 2)
rappresentazione HTML/XML
●
Gerarchica <A>…<B>…</B>…</A>
rappresentazione grafica
➢
A contiene B
A
➢
B è contenuto in A
B
●
Ordinale rappresentazione HTML/XML
➢
A precede B <A>…</A>…<B>…</B>
rappresentazione grafica
➢
B segue A
A B
Relazioni tra due elementi A e B (2 di 2)
<elemento_radice>
tutti gli altri elementi sono qui
</elemento_radice>
La struttura gerarchica ad albero
root
<root> A B
<A>…</A>
<B>…<C>…</C>…<B>
</root> C
Struttura gerarchica
ad albero rovesciato
Esempio struttura di un documento XML
testo
Struttura gerarchica
ad albero rovesciato titolo paragrafo
Esempio struttura di un documento HTML
<html>
<head>
<title> My web page </title>
</head>
<body>
<h1> Title of my web page </h1>
<p> This is a paragraph. </p>
<p> This is another paragraph. </p>
</body>
</html>
html
head body
title h1 p p
Attributo
●
deve essere dichiarato all'interno del tag di apertura dopo il
nome dell'elemento
●
nome=“valore” oppure nome='valore'
Alcuni esempi
Sintassi
●
può apparire ovunque in un documento ma non dentro i tag
●
inizia con <!-- e termina con -->
●
non è possibile riutilizzare -- all'interno del commento
Alcuni esempi
è equivalente a
<p>
L'elemento <gi>foreign</gi> può essere usato per marcare una parola
in lingua straniera. Ad esempio
<quote>
Noi andiamo spesso in vacanza in un
<foreign lang='eng'>camping</foreign>.
</quote>
</p>
</stanza>
</antologia>
Un esempio di documento XML non ben formato
<biblio>
<article
title=Il MultiThreading in C
argomento="Programmazione Concorrente"
year='2008'>
<article>
</article
title="JDBC'
Argomento='Database"
year="2007">
</article>
</biblio>
<biblio>
</biblio>
Documento HTML/XML valido
●
Un documento HTML/XML è valido se e solo se è
coerente rispetto alla propria DTD
●
<small> per il testo di dimensioni inferiori al normale
●
<strong> per il testo importante
●
<sub> per il testo a pedice
●
<sup> per il testo a apice
●
<del> per il testo cancellato
●
<mark> per il testo sottolineato
●
<abbr> per le abbreviazioni
●
<address> per gli indirizzi
●
<dfn> per le definizioni
●
<cite> per i titoli di lavori come libri, canzoni, filmati, ecc.
Un esempio
<!DOCTYPE html>
<html>
<head>
<title> Mio sito web </title>
</head>
<body>
<h1>Esempio 2</h1>
<p>
<small>Testo a caratteri piccoli.</small><br/>
<strong>Testo importante.</strong><br/>
3<sup>2</sup>=9.<br/>
La formula chimica dell'acqua è H<sub>2</sub>O.<br/>
<del>Testo cancellato</del><br/>
<mark>Testo sottolineato</mark><br/>
<abbr>WWF</abbr></br>
<address>Bilò Davide, Via Roma 151, 07100 Sassari (SS)</address></br>
<dfn>
Un rettangolo è un quadrilatero avente tutti gli angoli interni
retti.
</dfn><br/>
Dante Alighieri ha scritto <cite>La Divina Commedia</cite>.
</p>
</body>
</html>
Inserire una immagine
●
file_immagine indica la posizione del file dell'immagine di
riferimento (percorso relativo o assoluto su disco oppure url)
●
testo_alternativo indica il testo da visualizzare al posto
dell'immagine qualora l'immagine non venisse visualizzata
●
è possibile inserire gli attributi height e width per
specificare, rispettivamente, l'altezza e la larghezza
dell'immagine in pixel
Un esempio
<!DOCTYPE html>
<html>
<head>
<title> Mio sito web </title>
</head>
<body>
<h1>Esempio 3</h1>
<!-- Immagine di dimensioni come da file -->
<img src="./immagini/smile.png" alt="Smile"/>
<!-- Immagine di altezza pari a 100 pixel che mantiene le proporzioni
dell'originale -->
<img src="./immagini/smile.png" alt="Smile scalato" height="100"/>
<!-- Immagine di altezza pari a 100 pixel e larghezza pari a 200 pixel -->
<img src="./immagini/smile.png" alt="allungato" height="100" width="200"/>
</body>
</html>
Link ipertestuale
<a href=”risorsa_collegata”>contenuto_link</a>
●
risorsa_collegata indica la posizione della risorsa (url,
file, indirizzo email, segnalibro) collegata al link
●
contenuto_link indica il testo o l'immagine cliccabile che
forma il link
●
è possibile inserire gli attributi target e type per
specificare, rispettivamente, le modalità di apertura del link
e il tipo MIME di risorsa collegata
Alcuni tipi MIME
●
text/css per i fogli di stile (CSS)
●
text/txt per i file di testo in formato txt
●
application/pdf per i file in formato pdf
●
image/bmp per le immagini in formato bitmap
●
image/png per le immagini in formato png
●
image/jpg per le immagini in formato jpeg
●
audio/mp3 per i file audio in formato mp3
●
video/mp4 per i file video in formato mp4
●
video/avi per i file video in formato avi
<!DOCTYPE html>
<html>
<head>
<title> Mio sito web </title>
</head>
<body>
<h1>Esempio 4</h1>
<a href="./pagina.html">
Cliccare qui per aprire la pagina nella stessa scheda
</a><br/><br/>
<a href="http://www.google.it" target="_blank">
Apre la pagina di Google in una nuova scheda
</a><br/><br/>
<a href="./file/file.pdf" type="application/pdf">
Apre o scarica il file pdf
</a><br/><br/>
<a href="./immagini/smile.png" target="_blank" type="image/png">
Apre/scarica l'immagine in/da una nuova scheda
</a><br/><br/>
<!-- Cliccando sull'immagine si apre la pagina html specificata -->
<a href="./pagina.html"><img src="./immagini/smile.png" height="100"/></a>
</body>
</html>
Segnalibro
<nome_tag id=”nome_elemento”>...</nome_tag>
...
<a href=”#nome_elemento”>contenuto_link</a>
●
l'elemento <a> può essere utilizzato per creare un segnalibro
●
id attributo che può essere utilizzato in qualunque elemento
per associare un nome all'elemento stesso (un documento
html non può contenere due o più elementi con lo stesso
valore per l'attributo id)
Un esempio
<!DOCTYPE html>
<html>
<head>
<title> Mio sito web </title>
</head>
<body>
<h1>Esempio 5</h1>
<p id="segnalibro">
Questo è il paragrafo utilizzato per creare il segnalibro.
</p>
<p>Vai alla fine della pagina web e clicca sul segnalibro.</p>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<!-- Cliccando sul link si torna al paragrafo dal nome “segnalibro” -->
<a href="#segnalibro">Torna al primo paragrafo di questa pagina.</a><br/>
<!-- Cliccando sul link si torna al paragrafo dal nome “segnalibro2”
del file pagina.html -->
<a href="./pagina.html#segnalibro2">
Vai al segnalibro dal nome “segnalibro2” del file pagina.html.
</a>
</body>
</html>
Link ipertestuale per inviare e-mail
<a href=“mailto:indirizzo_email”>
contenuto_link
</a>
Un esempio
<!DOCTYPE html>
<html>
<head>
<title> Mio sito web </title>
</head>
<body>
<h1>Esempio 6</h1>
<!-- Cliccando sul link si apre il programma utilizzato per inviare
e-mail (se è installato sul computer) -->
<a href="mailto:davide.bilo@uniss.it">Contatta il docente.</a>
</body>
</html>
Suggerimento (tooltip)
<nome_tag title=“suggerimento”>...</nome_tag>
●
title: attributo che può essere utilizzato in qualunque
elemento per visualizzare un suggerimento (tooltip) quando il
puntatore (del mouse) è sopra l'elemento
Un esempio
<!DOCTYPE html>
<html>
<head>
<title> Mio sito web </title>
</head>
<body>
<h1>Esempio 7</h1>
<!-- Posizionando il puntatore sopra gli elementi seguenti viene
visualizzato un suggerimento -->
<img src="./immagini/smile.png" alt="Smile" title="Lo smile"/><br/>
<abbr title="World Wide Fund for Nature">WWF</abbr>
</body>
</html>
Elenchi puntati e numerati
<table border="spessore_linee_bordi">
<caption>descrizione_della_tabella</caption>
<!-- Il contenuto della tabella è qui -->
</table>
●
<tr> per creare una riga della tabella
●
<td> per creare una cella di dati in una riga
●
<th> per creare una cella di intestazione in una riga
●
<caption> è un elemento opzionale
●
spessore_linee_bordi è un numero intero maggiore o
uguale a 0 che indica lo spessore delle linee di bordo (il valore
predefinito è 0 e equivale a nessun bordo)
Un esempio
<!DOCTYPE html>
<html>
<head>
<title> Mio sito web </title>
</head>
<body>
<h1>Esempio 9</h1>
<!-- Una tabella con 2 righe, 2 colonne e senza intestazioni -->
<table border=”1”>
<caption>Esempio tabella.</caption>
<!-- Prima riga della tabella -->
<tr>
<th>Intestazione 1</th>
<th>Intestazione 2</th>
</tr>
<!-- Seconda riga della tabella -->
<tr>
<td>prima cella</td>
<td>seconda cella</td>
</tr>
</table>
</body>
</html>
Video/audio (un metodo semplice)
●
file_audio/video indica la posizione del file audio o video
di riferimento (percorso relativo o assoluto su disco oppure
url)
●
tipo_MIME indica il tipo di file
●
è possibile inserire gli attributi height e width per
specificare, rispettivamente, l'altezza e la larghezza del
video in pixel
<!DOCTYPE html>
<html>
<head>
<title> Mio sito web </title>
</head>
<body>
<h1>Esempio 10</h1>
<!-- Un file audio -->
<h2>Esempio di file audio</h2>
<embed src=”./audio/audio_sample.mp3” type=”audio/mp3”>
<!-- Un file video -->
<h2>Esempio di file video</h2>
<embed src=”./video/video_sample.mp4” type=”video/mp4”>
<!-- Un file video su finestra di 300x200 pixel -->
<h2>Esempio di file video in finestra di 300x200 pixel</h2>
<embed src=”./video/video_sample.mp4” type=”video/mp4” width=”300”
height=”200”>
</body>
</html>
I tag
<header>, <nav>, <section>, <footer>
Sono utilizzati per raggruppare degli elementi di un
documento HTML logicamente. Utilizzati in
combinazione ai fogli di stile (CSS) permettono di
impostare le stesse proprietà di visualizzazione degli
elementi di uno stesso gruppo in maniera molto semplice
e veloce.
●
I file CSS sono utilizzati per definire le
proprietà di formattazione degli elementi
HTML (XML, XHTML)
Come utilizzare un file CSS
in un documento HTML
<!DOCTYPE html>
<html>
<head>
<title>...</title>
<link rel=“stylesheet” href=“file_css” type=“text/css”/>
</head>
<body>
...
</body>
</html>
Come modificare le proprietà di
formattazione di un elemento
nome_elemento
{
proprietà_formattazione1:valore1;
proprietà_formattazione2:valore2;
...
}
oppure
#id_elemento
{
proprietà_formattazione1:valore1;
proprietà_formattazione2:valore2;
...
}
Come modificare le proprietà di
formattazione comuni a tutti gli elementi
*
{
proprietà_formattazione1:valore1;
proprietà_formattazione2:valore2;
...
}
I commenti nei file CSS
http://www.w3schools.com/cssref/css_colornames.asp
Proprietà formattazione testo (2 di 2)
●
font-family:“nome_font1”,“nome_font2”,...; per modificare i
font carattere da utilizzare
●
font-size:numero_e_unità_di_misura; per modificare la
dimensione del font
●
font-style:normal|italic|oblique; per modificare lo stile
carattere (normale, corsivo, obliquo)
●
font-weight:lighter|normal|bold|bolder; per modificare lo
spessore della linea carattere (leggero, normale, grassetto, più che
grassetto)
Proprietà formattazione sfondo
●
background-color:nome/codice_colore; per modificare il colore di
sfondo
●
background-image:url(“file_immagine”); per inserire
un'immagine di sfondo
●
background-repeat:repeat-x|repeat-y|no-repeat; per
specificare se l'immagine di sfondo deve essere ripetuta oppure no
(ripeti solo orizzontalmente, ripeti solo verticalmente, non ripetere)
● background-position:top|center|bottom left|center|right;
per specificare la posizione dell'immagine di sfondo all'interno
dell'elemento verticalmente e orizzontalmente
Proprietà formattazione elenchi
●
list-style-type:circle|square|disk|none; per specificare il
simbolo da utilizzare negli elenchi puntati (cerchio vuoto, quadrato, cerchio
colorato, nessun simbolo)
●
list-style-type:(lower|upper)-(alpha|decimal|latin|roman);
per specificare il simbolo da utilizzare negli elenchi numerati (lettere
minuscole/maiuscole, lettere dell'alfabeto greco, numeri in notazione
decimale, lettere dell'alfabeto latino, numeri romani)
●
list-style-image:url(“file_immagine”); per specificare il file
immagine da utilizzare come simbolo negli elenchi puntati/numerati
●
display:inline; per visualizzare le voci degli elenchi puntati/numerati
in orizzontale anziché in verticale
Proprietà formattazione link ipertestuali
●
a:link per un link non visitato
●
a:visited per un link visitato
●
a:hover per un link che si sta puntando
●
a:active per un link mentre si sta facendo click
Ogni elemento è contenuto in un box
BOX
Margini (margin)
Bordi (border)
Imbottitura (padding)
Contenuto elemento
Proprietà formattazione dimensioni rettangolo
●
width:numero_e_unità_di_misura; per specificare la larghezza del
box
●
height:numero_e_unità_di_misura; per specificare l'altezza del
box
Proprietà formattazione bordi
●
border-color:nome/codice_colore; per specificare il colore delle linee di bordo
●
border-style:dotted|dashed|solid|double|groove|ridge|inset|outset; per
specificare lo stile delle linee di bordo
●
border-width:numero_e_unità_di_misura; per specificare la dimensione delle linee
di bordo
●
border-collapse:collapse; per fondere le doppie linee di bordo di una tabella in una
sola linea
●
padding:numero_e_unità_di_misura; per modificare
l'imbottitura rispetto a tutti e quattro i lati
●
padding-top:numero_e_unità_di_misura; per
modificare l'imbottitura in alto
●
padding-bottom:numero_e_unità_di_misura; per
modificare l'imbottitura in basso
●
padding-left:numero_e_unità_di_misura; per
modificare l'imbottitura a sinistra
●
padding-right:numero_e_unità_di_misura; per
modificare l'imbottitura a destra
Disposizione dei vari elementi
●
float:left|right|none; rende un elemento “mobile” e
ne specifica la posizione
●
clear:left|right|both; evita che l'elemento si
sovrapponga con elementi “mobili” posizionati a sinistra
(left), a destra (right), sia a sinistra che a destra (both)
CSS Validator
<?xml elenco_attributi?>
Esempio
<?xml version=“1.0” encoding=“iso-8859-1”?>
Istruzioni di elaborazione
Esempio
<!-- L'istruzione di elaborazione seguente collega un
file di stile (css) al documento XML -->
<?xml-stylesheet type=“text/css” href=“./stile.css”>
Dichiarazione della grammatica DTD
●
Indica la DTD di riferimento
La DTD serve a
●
definire le relazioni reciproche tra elementi
●
definire attributi da associare agli elementi
DTD e XML
●
non è obbligatoria
●
può essere contenuta all'interno del documento (DTD interna)
e/o in un file a parte (DTD esterna)
Dichiarazione di elementi
Nota bene: un elemento può essere dichiarato al più una sola volta
Alcuni esempi
<!-- Un'antologia di poesie è formata da una o
più poesie. Ogni poesia può avere o meno un
titolo seguito da una sequenza di una o più
strofe. Ciascuna strofa è formata da uno o più
versi. Infine, il titolo e i versi di una poesia
contengono una sequenza di caratteri -->
<!ELEMENT antologia (poesia+)>
<!ELEMENT poesia (titolo?,strofa+)>
<!ELEMENT titolo (#PCDATA)>
<!ELEMENT strofa (verso+)>
<!ELEMENT verso (#PCDATA)>
indicatore_occorrenza
●
assente → esattamente una sola occorrenza di nome_elemento_bis
●
? → al più una sola occorrenza di nome_elemento_bis
●
* → zero o più occorrenze di nome_elemento_bis
●
+ → una o più occorrenze di nome_elemento_bis
CONTINUA...
Dichiarazione di elementi
●
#PCDATA → solo testo (parsed character data)
●
EMPTY → elemento vuoto
●
ANY → qualunque cosa
CONTINUA...
Dichiarazione di elementi
●
(nome_elemento_bis, nome_elemento_ter) → l'elemento
nome_elemento_bis precede l'elemento nome_elemento_ter
●
(nome_elemento_bis | nome_elemento_ter) → l'elemento contiene o
l'elemento nome_elemento_bis oppure l'elemento nome_elemento_ter
<!ATTLIST nome_elemento
nome_attributo_1 valori_1 specifica_1
nome_attributo_2 valori_2 specifica_2
…
nome_attributo_n valori_n specifica_n>
dove
●
nome_elemento → nome dell'elemento per il quale definiamo gli attributi
●
nome_attributo_i → nome attributo i-esimo
●
valori_i → insieme di valori che l'attributo i-esimo può assumere
●
specifica_i → regole per l'attributo i-esimo (obbligatorio, opzionale,
valore predefinito)
Alcuni esempi
<!ELEMENT poesia (titolo?,strofa+)>
<!-- L'elemento poesia ha due attributi: numero e
status. L'attributo numero è opzionale (#IMPLIED). Il
valore dell'attributo numero è una sequenza
ininterrotta di caratteri alfabetici, numerici,
trattini, trattini bassi e punti. L'attributo status
può assumere solo uno dei valori tra bozza,
revisionato e pubblicato. Il valore predefinito
dell'attributo è bozza. -->
<!ATTLIST poesia
numero NMTOKEN #IMPLIED
status (bozza|revisionato|pubblicato) “bozza”>
Alcune delle parole chiave per i valori degli attributi
Parole chiave Significato
CDATA Qualsiasi carattere valido, compresi gli spazi o i segni di punteggiatura;
anche i tag possono essere inclusi nel valore, ma non verranno
riconosciuti da un parser XML e non verranno processati in quanto tag
NMTOKEN Solo caratteri alfabetici, numeri, trattini, trattini bassi, punti; deve
cominciare con una lettera e non può contenere spazi bianchi
NMTOKENS Uno o più valori NMTOKEN separati da uno o più spazi bianchi
Parole chiave per le specifiche