Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la...

24
Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema dei tags. In qualche maniera, noi definiamo come si modella conoscenza (attraverso quali tag e strutturati come) – knowledge engineer

Transcript of Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la...

Page 1: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Importanza DTD

La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema dei tags.

In qualche maniera, noi definiamo come si modella conoscenza (attraverso quali tag e strutturati come) – knowledge engineer

Page 2: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Prima sintassi DTD - DOCTYPE

<!DOCTYPE lettera [ ….. ]> lettera indica il tag radice del

documento XML. Vengono cioè elencati [………] gli

elementi ammissibili, il contesto in cui possono apparire, ed altri eventuali vincoli strutturali.

Page 3: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Dove si scrive la DTD?

1. Dentro al documento XML<!DOCTYPE elementroot [ defs ]>

2. All’esterno del documento XML<!DOCTYPE elementroot SYSTEM “nome.dtd">

3. Entrambe le possibilità<!DOCTYPE elementroot SYSTEM “nome.dtd“[ defs ]>

NOI useremo opzione 1! Ad esempio:<!DOCTYPE RUBRICA [

<!ELEMENT RUBRICA (PERSONA)*>……….

]>

Page 4: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Definizione di ELEMENTO

<!ELEMENT sezione (titolo, abstract, para) >

Un elemento contiene solo altri elementi, senza parti opzionali.

In questo esempio, dentro all’elemento sezione ci deve essere un titolo, seguito da un abstract, seguito da un para.

<sezione> <titolo> … </titolo><abstract> … </abstract><para> … </para>

</sezione>

Page 5: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Sintassi ELEMENT

<!ELEMENT nome_elemento (#PCDATA)>

Significa:E’ legale scrivere nel documento XML untag <nome_elemento> che contienecaratteri riconoscibili dal parser XML di tipo #PCDATA.

<nome_elemento>qui dentro del testo, hurrah! ;-)</nome_elemento>

Page 6: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Sintassi ELEMENT (RICAPITOLIAMO)

1) <!ELEMENT nome_elemento (#PCDATA)>2) <!ELEMENT nome_elemento

(nome_elemento_interno1, nome_elemento_interno2) >

Quindi “dentro” un elemento ci puo' stare 1) un altro elemento 2) un #PCDATA 1+2) combinazioni di questi

Importante: Bisogna iniziare sempre con il document root.

Page 7: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Un esempio più completo - File: lettera.xml

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

<lettera><to>Pippo</to><from>Nicola</from><intestazione>Domanda: </intestazione><corpo_domanda>Cosa fai stasera? </corpo_domanda>

</lettera>

Proviamo insieme a scrivere un DTD per questo XML?Esiste piu' di un DTD possibile?

Page 8: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Un esempio più completo - File: lettera.xml

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

<!DOCTYPE lettera [<!ELEMENT lettera (to, from, intestazione, corpo_domanda)><!ELEMENT to (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT intestazione (#PCDATA)><!ELEMENT corpo_domanda (#PCDATA)>

]>

<lettera><to>Pippo</to><from>Nicola</from><intestazione>Domanda: </intestazione><corpo_domanda>Cosa fai stasera? </corpo_domanda>

</lettera>

Page 9: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Validare per imparare

http://validator.w3.org/ Sia XML che HTML!!!

Page 10: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

I protagonisti delle DTD

Elementi Attributi Valori Entità

Page 11: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Dichiarazione ELEMENTO

Elementi con contenuto.<!ELEMENT element-name(element-content)>Contenuto “a caratteri” (#PCDATA)

ORA facciamo una DTD per una possibile rubrica (lista di informazioni su persone). Immaginiamola insieme!

Page 12: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Dichiarazione ELEMENTO

Elementi con contenuto.<!ELEMENT element-name(element-content)>Contenuto “a caratteri” (#PCDATA)

ORA facciamo una DTD per una possibile rubrica (lista di informazioni su persone). Immaginiamola insieme!

<!ELEMENT RUBRICA (PERSONA)*><!ELEMENT PERSONA (DATI_ANAGRAFICI, TELEFONO)><!ELEMENT DATI_ANAGRAFICI (NOME*, COGNOME*,

INDIRIZZO?)><!ELEMENT TELEFONO (FISSO?, MOBILE?)><!ELEMENT NOME (#PCDATA)><!ELEMENT COGNOME (#PCDATA)>………………

Page 13: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Simboli ‘*’ ‘+’ ‘?’

Più occorrenze dello stesso elemento (quante vuoi!)Element*

0, 1, 2, 3, ..., 100, ..., 1024, ..., 38938, ...

Una o + occorrenze dello stesso elemento (almeno 1!)Element+

1, 2, 3, ..., 100, ..., 1024, ..., 38938, ...

Zero o una occorrenza dell’elemento (0 o 1!)Element?

0, 1

<!ELEMENT TELEFONO (FISSO?, MOBILE?)>

Page 14: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Simbolo OR: ‘|’

OR: Un elemento o l’altro. La condizione or è possibile nella

dichiarazione dei figli di un elemento tramite il simbolo |

<!ELEMENT nome (nick | anagrafico) >

Naturalmente occorre poi definire nick e anagrafico

Page 15: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Altro esempio

<!ELEMENT para (#PCDATA | bold)* >

Un elemento contiene sia caratteri stampabili ed entità, sia altri elementi.

<para>Questo &egrave; un paragrafo lecito con alcune <bold> parole in grassetto </bold> e poi <bold> ancora altre </bold>.

</para>

Page 16: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

EMPTY - ANY

(!ELEMENT elemento EMPTY)

Che si traduce nella dichiarazione legale di <elemento/> (tipo <br/> dell'HTML)

(!ELEMENT elemento ANY)

Che significa che dentro ci posso metteresia testo che altri elementi (purché definiti)

Page 17: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Gli attributi

<!ATTLIST

element-nameattribute-nameattribute-typedefault-value>

Esempio:<!ATTLIST persona sesso CDATA “F”>

Prossima lezione!

Page 18: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

RIASSUNTO CREAZIONE DI UN ATTRIBUTO

<!ATTLIST nome_elemento nome_attributo TIPO_ATTRIBUTO TIPO_PRESENZA>

• nome_elemento:Rappresenta il nome dell'elemento a cui si rifà

• nome_attributo:Rappresenta il nome dell’attributo assegnato

• TIPO_ATTRIBUTO:Serve a definire il tipo di valore che assume l'attributo. I due più usati sono: CDATA: il valore dell'attributo può essere composto da un

qualsiasi insieme di caratteri (questo|quello|...): il valore dell'attributo può assumere solo

i valori rappresentati nella lista fra parentesi divisa dal simbolo | quindi o "questo" o "quello" o "..."

Page 19: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

RIASSUNTO CREAZIONE DI UN ATTRIBUTO - VALORI

<!ATTLIST nome_elemento nome_attributo TIPO_ATTRIBUTO TIPO_PRESENZA>

• TIPO_PRESENZA:Serve a definire la tipologia di presenza dell'attributo rispetto all'elemento. I valori possibili sono: "valore“ rappresenta il valore predefinito che assume

l'attributo #REQUIRED

l'attributo deve essere sempre dichiarato #IMPLIED

l'attributo può anche non essere dichiarato #FIXED "valore"

l'attributo è sempre presente e deve essere dichiarato con il valore fisso: "valore"

Page 20: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Il DTD per l'xHTML

Prime 3 lezioni: abbiamo spiegato e capito quali tag e attributi si possono usare e dove in HTML a voce.

Ma come facciamo a definirlo in maniera non ambigua?

Chi definisce il DTD per xHTML?E se io ne definisco una diversa?

Page 21: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Entità

Per dichiarare una entità in un documento XML si usa la sintassi:

<!ENTITY nome_entita “valore”> Esempio:<!ENTITY autore “Polettini Nicola”>

Si richiama con &autore;

Page 22: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Esempio completo – Rubrica.xml

<?xml version="1.0" encoding="UTF-8" standalone=“yes" ?><?xml-stylesheet type="text/xsl" href="./rubrica.xsl"?>

<!DOCTYPE RUBRICA [<!ELEMENT RUBRICA (PERSONA)*><!ELEMENT PERSONA (DATI_ANAGRAFICI, TELEFONO)><!ELEMENT DATI_ANAGRAFICI (NOME*, COGNOME*, INDIRIZZO?)><!ELEMENT TELEFONO (FISSO?, MOBILE?)><!ELEMENT NOME (#PCDATA)><!ELEMENT COGNOME (#PCDATA)><!ELEMENT FISSO (NUMERO+)><!ELEMENT MOBILE (NUMERO+)><!ELEMENT NUMERO (#PCDATA)><!ELEMENT INDIRIZZO ((PIAZZA | VIA)?, N_CIVICO?, CITTA?, CAP?)><!ELEMENT PIAZZA (#PCDATA)><!ELEMENT VIA (#PCDATA)><!ELEMENT N_CIVICO (#PCDATA)><!ELEMENT CITTA (#PCDATA)><!ELEMENT CAP (#PCDATA)><!ATTLIST NUMERO prefisso CDATA #IMPLIED compagnia (wind | vodafone | tim | tre )

#IMPLIED>]>

Page 23: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Esempio completo – Rubrica.xml

<RUBRICA> <PERSONA>

<DATI_ANAGRAFICI><NOME>Giulio</NOME><COGNOME>Cesare</COGNOME><INDIRIZZO>

<PIAZZA>Bruto</PIAZZA><N_CIVICO>10</N_CIVICO><CITTA>Roma</CITTA><CAP>10100</CAP>

</INDIRIZZO></DATI_ANAGRAFICI><TELEFONO>

<FISSO><NUMERO prefisso="06">321654</NUMERO>

</FISSO><MOBILE>

<NUMERO compagnia="wind">32557684785</NUMERO></MOBILE>

</TELEFONO></PERSONA>

<PERSONA>

………………………………….

</PERSONA></RUBRICA>

Page 24: Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.

Esempio completo – Rubrica.xsl

<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html><head>

<title>Rubrica</title></head><body>

<font face="Verdana,Arial"><center><h1>Rubrica</h1>Qui si usa la sintassi per visualizzare il contenuto del file rubrica.xml. Si possono usare

immagini, link e altro codice HTML come ad esempio:<a href="http://www.google.it"><strong> Il motore di Ricerca google </strong></a>Oppure visualizzare tutto il contenuto xml:<h5>Rubrica:</h5>

<xsl:apply-templates/>

<strong>Per non vederlo cosi la prossima volta si spieghera' la sintassi XSL: Lezione 6-7 </strong></center></font>

</body></html>

</xsl:template></xsl:stylesheet>