Anteprima
Vedrai una selezione di 3 pagine su 9
Riassunto esame Introduzione all'informatica per l'editoria, prof. Maieli, testo consigliato Un po' di informatica - nozioni di xml e html, Roversi Pag. 1 Riassunto esame Introduzione all'informatica per l'editoria, prof. Maieli, testo consigliato Un po' di informatica - nozioni di xml e html, Roversi Pag. 2
Anteprima di 3 pagg. su 9.
Scarica il documento per vederlo tutto.
Riassunto esame Introduzione all'informatica per l'editoria, prof. Maieli, testo consigliato Un po' di informatica - nozioni di xml e html, Roversi Pag. 6
1 su 9
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Il link può permettere anche di aprire file zip o pdf, non per forza file html o png/jpg eccetera: <a href=“…/…

articolo.pdf> Apri Pdf </a> oppure <a href=“…/archivio.zip”> Archivio </a>.

Il link può anche preimpostare l’invio di una mail: <a href=“mailto:simone.scacchetti@me.com"> Contattami

</a>.

Nota bene: il nome dei documenti non deve avere spazi, e maiuscole e minuscole fanno la differenza.

Per i link interni (al documento di codice) il valore dell’attributo href è preceduto dallo sharp (#): <a

href=“#Indirizzo”> Contenuto </a>.

Se per esempio devo citare un’altra parte del mio documento, uso <a href=“#I-Paragrafo”> Primo paragrafo

</a>. Per fare questo chiaramente devo creare la parte citata a cui l’ancora si appoggia, ovvero la coda.

Per creare la coda di un’ancora interna: <a name=“I-Paragrafo”> Primo paragrafo </a>.

Esempio:

<html>

<head>

<title>Documento con link interno</title>

</head>

<body> <h2>

<a name="I-Paragrafo">Primo paragrafo</a>

</h2>

<p>

<a href="#II-Paragrafo">Al secondo paragrafo</a>

</p>

<p>

Ciao ciao ciao (Primo paragrafo)

</p>

<h2>

<a name="II-Paragrafo">Secondo paragrafo</a>

</h2> <p>

<a href="#I-Paragrafo">Al primo paragrafo</a>

</p>

<p>

Ciao ciao ciao (Secondo paragrafo)

</p>

</body>

</html>

Di default un browser cliccando sul link si sposta alla coda nello stesso “pannello”. Per fargli aprire invece

una nuova finestra e visualizzare la cosa è necessario inserire l’attributo target=“_blank” al tag a:

<a href=“#I-Paragrafo” target=“_blank”> Al secondo paragrafo </a>.

L’attributo title al tag a permette di inserire un breve testo per definire il significato del testo XHML coda

dell’ancora. Questo testo esplicativo compare quando il puntatore si sofferma per un po’ sul link.

<a title=“Home Page del Dipartimento di Informatica dell’Università Roma Tre” href=“http://

blablabla.uniroma3.it/index.html"> Dipartimento di Informatica </a>.

3 - Generalizziamo XHTML

•• Qualsiasi linguaggio, umano o di programmazione, serve per dare forma a concetti. I linguaggi artificiali

possono essere interpretati da interpreti “stupidi” come un calcolatore.

I calcolatori risolvono i problemi computazionalmente, interpretando per traduzione.

Il linguaggio naturale è ambiguo e solo interpreti sofisticati come le persone possono risolvere problemi

ambigui. I linguaggi per calcolatori devono poter esprimere algoritmi. Un algoritmo è una sequenza finita di

passi, occupo interpretabile in un tempo finito.

4 - Sintassi e formalizzazione

•• Strutturare sintatticamente un concetto significa individuare regolarità nella descrizione del concetto e

fissare queste regolarità in una struttura linguistica opportuna.

Esempio: un numero è una sequenza di cifre.

<numero>

<cifra> 1 </cifra>

<cifra> 2 </cifra>

<cifra> 3 </cifra>

</numero>

A un tag di apertura ne deve corrispondere una di chiusura, come fossero parentesi. Siccome sono come

parentesi, i tag possono annidarsi e comporsi in sequenza ([x][{y}]).

Con l’etichettatura <!— testo commento —> si inseriscono commenti, parti metatestuali che servono per gli

umani e non per le macchine.

Se l’etichetta non contiene sottonodi, allora il tag aperto si può subito chiudere:

<ElementiNutrizionali calorie=“1187” grassi=“23” carboidrati=“45” proteine=“32”/>.

Scrivere questo o scrivere:

<ElementiNutrizionali calorie=“1187” grassi=“23” carboidrati=“45” proteine=“32”>

</ElementiNutrizionali>

Ogni codice ha una radice, ovvero un tag da cui derivano tutti gli altri, eventuali nodi ed eventuali foglie,

che terminano i rami dell’albero. Un nodo può avere anche dei rami attributi, i quali potranno a loro volta

gemmare in valori particolari (ingrediente-> nome, quantità, unità). I tag quindi possono avere attributi.

Ogni documento xml comincia con il tag <?xml version=“1.0”?>, che indica la versione xml usata. Ogni

tag aperto deve anche essere chiuso. I nomi dei tag sono case sensitive. Se un tag descrive un elemento

necessariamente vuoto, si può usare la sintassi contratta <elemento/>. I commenti si scrivono così: <!—

commento—>. La correttezza sintattica di documenti xml viene verificata tramite programmi: è la

parsificazione. Il modo più semplice per parificare un documento xml è leggerlo in un browser internet.

5 - DTD e semantica di documenti XML

•• Una semantica definisce insiemi di istanze di uno stesso concetto. Solo i testi xml che soddisfano le

proprietà richieste dalla semantica appartengono all’insieme. La semantica per i documenti xml è la dtd

(data type definition), che descrive come costruire alberi sintattici ed è interpretabile da un calcolatore

elettronico.

Nel costruire un albero abbiamo dei gradi di libertà: scegliamo noi i nomi dei nodi, l’ampiezza di ogni livello

dell’albero, la profondità massima dell’intero albero e la natura delle foglie (se contengono o no attributi). Le

foglie sono i concetti primitivi, cioè i nodi che non hanno altri discendenti.

La distanza tra due nodi è data dalla lunghezza del cammino tra quei nodi, ovvero è il numero di rami

attraversati per andare da un nodo all’altro.

Un livello è fatto da tutti i nodi con la stessa distanza dalla radice.

L’ampiezza globale di un livello è il numero globale di nodi su quel livello. L’ampiezza parziale è il numero

di nodi con la stessa etichetta su uno stesso livello.

Il linguaggio dtd descrive i gradi di libertà di costruzione degli alberi sintattici.

Se un nodo non può contenere alcun valore, e quindi nessun attributo, bisogna inserire EMPTY. ANY al

contrario indica che non si assume a priori alcuna strutturazione del contenuto di quel nodo. #PCDATA

indica che il contenuto può essere una qualsiasi sequenza di caratteri. La differenza tra ANY e #PCDATA è

metodologica: ANY si sceglie in fase di progettazione, mentre #PCDATA costituisce un momento finale di

progettazione in cui si decide che il contenuto debba essere proprio una sequenza arbitraria di caratteri.

+: almeno un elemento; ?: al più un elemento; *: eventualmente nessun elemento; “,”: and; “|”: or.

Per ogni livello di un albero è possibile stabilire un numero fisso di discendenti così: <!ELEMENT LivI

(LivIpiu1-1, LivIpiu1-2, …, Liv1piu1-n)>. Il livello I quindi ha n discendenti al livello I+1.

Per alberi con livelli ad ampiezza variabile invece si usa <!ELEMENT LivI (LivIpiu1*).

Per annidare regole dtd per comporre alberi sintattici di ampiezza e profondità arbitrarie bisogna usare la

clausola dtd generale <!ELEMENT elementi-name content-model>, in cui content-motel può essere

EMPTY, ANY o #PCDATA, oppure una espressione regolare deterministica: element-name, (E, …, E), E*,

E+, E?, (E | … | E).

Il nome di una espressione è una espressione regolare; una sequenza di lunghezza fissa è una

espressione regolare.

#PCDATA non può occorrere come componente di una espressione regolare deterministica.

Un documento dtd oltre a elementi-name e content-motel può contenere anche una !ATTLIST che definisce

il nome dell’attributo e il tipo, cioè l’insieme di valori assumibili dall’attributo stesso, così come la regola di

uso dei valori dell’attributo.

Il tipo può essere definito da tre parole chiave: CDATA (sequenza qualsiasi di caratteri), ID (il valore è

univoco per un elemento - come ogni matricola per ogni studente) o IDREF (valori di un attributo che fanno

riferimento all’ID - come più voti degli esami per ogni matricola).

La regola d’uso dei valori dell’attributo prevede quattro casi: #REQUIRED (necessario), #IMPLIED (è una

implicazione: att-name può non esserci, ma se c’è deve esserci anche il valore), #FIXED (seguito da un

valore arbitrario: ci dice che quell’attributo ha sempre un valore costante, che è appunto “valore arbitrario”);

in alternativa si può usare un valore arbitrario senza farlo precedere da alcuna delle parole chiave

precedenti.

In generale quindi la struttura è questa: <!ATTLIST element-name att-name att-type att-usemode>.

6 - Validazione di documenti XML

•• Per validare un documento xml abbiamo bisogno di un documento dtd che descriva la struttura di tutti i

documenti xml che appartengono alla stessa semantica e di almeno un documento xml che rispetta la

semantica dtd in questione. Se l’xml appartiene alla semantica data, si dice che l’xml è valido per quella

semantica. Ci sono programmi variatori che verificano automaticamente la validità di documenti.

Per validare un documento xml dobbiamo specificare nell’xml quale sia il documento dtd, o inserendolo

prima dell’xml, nello stesso documento (dtd inline) oppure citandolo e inserendo il dtd nella stessa cartella

dell’xml (dtd esterna).

Nel caso di dtd inline:

<?xml version="1.0" encoding="UTF-8"?>

<!-- Preambolo XML con un testo DTD esplicito -->

<!DOCTYPE elemento-radice [

<!ELEMENT elemento-radice ....>

<!-- resto della grammatica DTD -->

]>

<!-- resto del documento XML —>

Nel caso di dtd esterna:

<?xml version="1.0" encoding="UTF-8"?>

<!-- Preambolo XML con un ruferimento ad un file

esterno, che contiene il testo DTD -->

<!DOCTYPE numero SYSTEM "testo-DTD-esterno.dtd">

<!-- resto del documento XML -->

7 - Interpretazione tramite trasformazione

•• Interpretare un concetto significa presentarlo in altri termini (il cuoco è l’interprete di una ricetta; uno

studente durante un esame scritto interpreta domande producendo risposte corrispondenti).

Il nostro scopo è interpretare, tramite un calcolatore, concetti astratti, rappresentati come testi etichettati.

Per interpretare due concetti arbitrari con la stessa grammatica bisogna portare la prima grammatica a

essere il più simile possibile alla seconda.

Conviene sempre correlare semanti

Dettagli
A.A. 2017-2018
9 pagine
4 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher simone.scacchetti di informazioni apprese con la frequenza delle lezioni di Introduzione all'informatica per l'editoria e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi Roma Tre o del prof Maieli Roberto.