DTD
This presentation is the property of its rightful owner.
Sponsored Links
1 / 43

DTD PowerPoint PPT Presentation


  • 90 Views
  • Uploaded on
  • Presentation posted in: General

DTD. Laurea Magistrale in Informatica Chapter 03 Modulo del corso Thecnologies for Innovation. Agenda. DTD role DTD Declaration Sequences Content Types Attributes Entities. Relazione tra classi ed oggetti in OO. Ruolo del DTD. DTD.

Download Presentation

DTD

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Dtd

DTD

Laurea Magistrale in Informatica

Chapter 03

Modulo del corso

Thecnologies for Innovation


Agenda

Agenda

  • DTD role

  • DTD Declaration

  • Sequences

  • Content Types

  • Attributes

  • Entities

DTD


Relazione tra classi ed oggetti in oo

Relazione tra classi ed oggetti in OO

DTD


Ruolo del dtd

Ruolo del DTD

DTD


Dtd

DTD

  • Un DTD e’ un documento che definisce in modo formale, le regole di una classe di documenti XML

  • In un DTD si possono dichiarare:

  • Gli elementi utilizzabili, in che ordine e con quante occorrenze possono essere nidificati tra loro

  • Quali attributi sono applicabili a ciascun elemento, se sono obbligatori e quali sono i loro valori predefiniti

  • Le entità e le annotazioni utilizzabili all’interno del documento XML o del DTD stesso

DTD


Perch usare una dtd

Perché usare una DTD

  • Gruppi indipendenti di persone possono accordarsi su un DTD comune per definire un formato per i dati

  • Un DTD puo’ essere usato per verificare la validita’ dei dati

  • Avvertenza: il DTD non e’ obbligatorio!

DTD


Dichiarazione di un dtd

Dichiarazione di un DTD

Interna al documento XML:

<!DOCTYPE root-element [element declarations]>

Esterna al documento XML :

<!DOCTYPE root-element SYSTEM “URI”>

N.B.: In XML il nome del DOCTYPE deve essere il nome del tag radice.

DTD


Esempio dtd interna

Esempio DTD Interna

DTD


Esempio dtd esterna

Esempio DTD Esterna

DTD


Dichiarazione di elemento

Dichiarazione di elemento

  • Per ogni tipo di elemento viene indicato il tipo di contenuto, che può essere:

    • Any content: indica che ogni contenuto è ammissibile.Es: <!ELEMENT memo ANY>

    • Empty content: un elemento vuoto non può contenere alcun testo tra il tag di inizio e quello di chiusura e può quindi essere rappresentato da un tag vuoto. Es: <!ELEMENT br EMPTY>

    • Simple content: è un elemento il cui contenuto è composto da testo. In questo caso #PCDATA è acronimo di “Parsed Character Data”.Es: <!ELEMENT message (#PCDATA)>

    • Element content: è il caso tipico in cui il contenuto è composto da sottoelementi.Es: <!ELEMENT note (to, from, title, message)>

    • Mixed content: sono elementi che contendono testo misto ad altri elementi

DTD


Sequenze

Sequenze

L’elemento , (chiamato sequenza)

specifica l’ordine in cui debbono presentarsi gli elementi

<!ELEMENT classe (insegnate,studente)>

Specifica che l’elemento classe deve contenere un solo elemento insegnate seguito daun solo elemento studente

L’elemento | (chiamato opzione)

specifica le opzioni con cui debbono presentarsi gli elementi

<!ELEMENT classe (insegnate|studente)>

Specifica che l’elemento classe deve contenere l’elemento insegnate o l’elemento studente non entrambi

L’elemento + (chiamato ricorrenza)

specifica le frequenze di ripetizione con cui debbono presentarsi gli elementi

<!ELEMENT classe (insegnate,studente+)>

Specifica che l’elemento classe deve contenere un solo elemento insegnate seguito dapiù elementi studente

DTD


Indicatori di ricorrenza

Indicatori di ricorrenza

<!ELEMENT libreria (libro*)>

Specifica che l’elemento libreria può contenere un numero qualsiasi di elemento libro che può anche non essere utilizzato

<!ELEMENT poltrona (persona?)>

Specifica che l’elemento poltrona può contenere al massimo un elemento persona che può anche non essere utilizzato

DTD


Esempi

ESEMPI

<!ELEMENT classe (numero, (istruttore | assistente+), (credito | nocredito) )>

soluzione

<!ELEMENT crostata (gelatina?, limone*,((crema | zucchero)+ | glassa))>

soluzione

<!ELEMENT fattoria (fattore+,(cane* | gatto?), maiale*, ( capra | mucca)?, (gallina+ | oca* ))>

soluzione

DTD


Contenuto misto

Contenuto misto

  • In XML il contenuto di testo #PCDATA ed il contenuto di elementi possono combinarsi solo nella forma seguente:<!ELEMENT para (#PCDATA | bold | italic)*>

  • Ogni paragrafo contiene un testo in cui si possono trovare, opzionalmente, degli elementi <bold> ed <italic>. Es:

<para>

<bold>Questo</bold> testo contiene delle sezioni in <bold>grassetto</bold> ed in <italic>corsivo</italic>, ma potrebbe anche non averne</para>

DTD


Empty

EMPTY

DTD


Dtd

ANY

DTD


Tipi di contenuto

Tipi di contenuto

Documento DTD  intro.dtd

<!ELEMENT myMessage ( message )>

Dichiara l’elemento myMessage come root con un unico child di nome message

<!ELEMENT message ( #PCDATA )>

Dichiara che l’elemento message deve contenere dati di caratteri riconosciuti dal parser XML

Contenuto MISTO

<!ELEMENT myMessage (#PCDATA | message )*>

Dichiara l’elemento myMessage come root con contenuto misto

MARKUP conforme alla dichiarazione

<?xml version = "1.0"?>

<!DOCTYPE myMessage SYSTEM "intro.dtd">

<myMessage> questo è un esempio; segue

<message> altro test </message>

e

<message> altro testo ancora </message>

</myMessage>

L’elemento myMessage contiene due elementi message e due istanze di dati e caratteri

Considerando la presenza dell’*, l’elemento myMessage potrebbe essere privo di contenuto

Documento XML  intro.xml

<?xml version = "1.0"?>

<!DOCTYPE myMessage SYSTEM "intro.dtd">

<myMessage>

<message>Welcome to XML!</message>

</myMessage>

DTD


Esempio di tipo di contenuto mixed xml

<?xml version = "1.0" ?><!-- Fig. 6.5: mixed.xml --><!-- Mixed content type elements -->

<!DOCTYPE format [ <!ELEMENT format ( #PCDATA | bold | italic )*> <!ELEMENT bold ( #PCDATA )> <!ELEMENT italic ( #PCDATA )>]><format> This is a simple formatted sentence. <bold>I have tried bold.</bold> <italic>I have tried italic.</italic> Now what?</format>

NOTARE LA SPECIFICA DELLA DTD INTERNA

Esempio di tipo di contenuto mixed.xml

DTD


Limitazioni

Limitazioni

DTD


Attributi

Attributi

  • In generale gli attributi vengono specificati con ATTLIST:<!ATTLIST elementoattributo1tipo1modificatore1attributo2tipo2modificatore2attributo-ntipo-nmodificatore-n>

  • I tipi definiscono l’insieme o la tipologia dei valori assumibili dall’attributo

  • I modificatori identificano le condizioni di obbligatorietà o opzionalità dell’attributo ed, eventualmente, un valore di default per lo stesso

DTD


Sintassi per la dichiarazione di attributo

Sintassi per la dichiarazione di attributo

  • Possibili valori di attribute-type:

    • CDATA character data

    • (n1|n2|…) uno fra gli n1, n2, …

    • ID un identificatore unico

    • IDREF riferimento ad un ID

DTD


Dtd

Note

DTD


Attributi stringa

Attributi stringa

<!ATTLIST message lang CDATA “Italiano”>

  • In questo caso l’attributo lang è una stringa

  • Se l’attributo è presente nel file il suo valore è quello specificato

  • Altrimenti viene assunto il valore di default “Italiano”

<note>

<message lang=“English”>

Remember the meeting

</message>

</note>

<note>

<message>

Ricordati l’appuntamento

</message>

</note>

DTD


Attributi per enumerazione

Attributi per enumerazione

<!ATTLIST person salutation (Mr | Mrs | Miss | Dr) “Mr”>

  • Il titolo di ogni persona assume valori nell’insieme indicato

  • In mancanza del parametro si assume per default “Mr”

<person salutation=“Dr”>

<name>Luke</name>

<surname>Brown</name>

</person>

DTD


Modificatori

Modificatori

  • Valore di default: espresso da una stringa indica il valore da assegnare all’attributo in mancanza di diverse indicazioni

  • Valore fisso: definito da #FIXED più il valore. L’attributo assume obbligatoriamente il valore assegnato e l’autore del documento XML non può modificarlo:<!ATTLIST persona numeroGambe CDATA #FIXED “2”>

  • Specifica di obbligatorietà: #REQUIRED. Indica che l’attributo deve essere sempre presente in ogni elemento<!ATTLIST misura val CDATA #REQUIRED>

  • Specifica di opzionalità: #IMPLIED. Indica che l’attributo è opzionale e può non essere specificato dall’autore del documento. Se combinato con ID indica che il sistema genererà un identificativo automaticamente

DTD


Entit

Entità

  • Le entità del DTD sono frammenti ricorrenti di contenuti testuali a cui vengono associati degli identificatori che possono essere “espansi” come macro all’interno del documento prima di procedere al parsing vero e proprio

  • La definizione avviene secondo lo schema:

    <!ENTITY nomeEntità valore>

  • L’utilizzo avviene inserendo nel testo la sequenza:

    &nomeEntità;

  • Esempio:

    <!ENTITY autore “Francesco De Angelis”>

    <document><title>Introduzione ad XML</title><author>&autore;</author>

    </document>

DTD


Entit esterne

Entità esterne

  • Le entità esterne vengono “recuperate” da un file esterno all’XML

    <!ENTITY nomeEntità SYSTEM “url del file”>

  • Es:<!ENTITY text SYSTEM “book.txt”>

  • E’ possibile specificare entità da non parsare, tipicamente come entità di dati binari

    <!ENTITY immagine SYSTEM “img.gif” NDATA gif>

<book>

<title>..</title>

<text>&text;</text>

</book>

DTD


Entit predefinite

Entità predefinite

  • Sono predefinire tutte le entità associabili ai singoli caratteri sulla base del codice (unicode) degli stessi. Ad esempio l’entità &#10; corrisponde al carattere ASCII 10.

  • Alcuni caratteri, tra cui ‘<‘ ed ‘&’, creano problemi quando vengono mischiati al testo. Per questo sono predefinire alcune entità che possono sostituire questi caratteri:

  • Equivalente a : <![CDATA [<]]>

DTD


Entit parametriche i

Entità parametriche (I)

  • Sono entità definite nel DTD ed utilizzate all’interno del DTD stesso

  • Vengono sostituite durante la lettura del DTD

  • Contengono frammenti ricorrenti del modello di contenuto

  • Es: volendo definire in un unico punto il tipo di testo che contiene sezioni in grassetto:

    <!ENTITY % testo “#PCDATA”>

    <!ENTITY % testoConBold “(%testo;|bold)*”>

    <!ELEMENT testo %testoConBold;>

DTD


Entit parametriche ii

Entità Parametriche (II)

<!ENTITY % common "

size (small | medium | large) 'medium'

color (red | blue | green | black | white) "'white'

price CDATA #REQUIRED">

<!ELEMENT shirt (#PCDATA)>

<!ELEMENT pants (#PCDATA)>

<!ELEMENT skirt (#PCDATA)>

<!ATTLIST shirt

%common;>

<!ATTLIST pants

%common;>

<!ATTLIST skirt

%common;>

DTD


Cosa c di sbagliato nelle dtd

Cosa c’è di sbagliato nelle DTD

  • Troppo “document oriented”

    • DTD è stato sviluppato per interfacciarsi con tool per il trattamento del testo

  • Limitato nella rappresentazione di strutture complesse

  • Non c’è la nozione di ereditarietà/sub-typing

  • Content-model ambiguo

  • Troppi modi per rappresentare la stessa cosa

  • I nomi sono globali, non locali

DTD


Utilizzo delle dtd

Utilizzo delle DTD

  • Validazione

  • Storage XML efficiente (persistenza, estensione, o database storage)

  • Documentazione

  • Parsing efficiente

  • Design di tool di supporto

DTD


Progettare una struttura dati xml

Progettare una struttura dati XML

DTD


Attributi o elementi scelte forzate

Attributi o Elementi : scelte forzate

DTD


Attributi o elementi scelte stilistiche

Attributi o elementi : scelte stilistiche

DTD


Case study agenda giornaliera definizione degli elementi

Case Study: Agenda giornalieraDefinizione degli elementi

DTD


Case study agenda giornaliera aggiunta di attributi

Case Study: Agenda giornalieraAggiunta di attributi

DTD


Case study agenda giornaliera dtd completo

Case Study: Agenda giornalieraDTD : Completo

DTD


Case study agenda giornaliera documento valido

Case Study: Agenda giornalieraDocumento Valido

DTD


Dtd

fine

DTD


Soluzione 1

Soluzione 1

L’elemento classedeve contenere un elemento numero, un elemento istruttore oppure un numero qualsiasi di elementi assistente e un elemento credito o un elemento nocredito,

<!ELEMENT classe (numero, (istruttore | assistente+), (credito | nocredito) )>

DTD


Soluzione 2

Soluzione 2

L’elemento crostatapuò avere o non avere l’elemento gelatina, seguito da zero o più elementi limone, uno o più elementi crema o zucchero, oppure un solo elemento glassa

<!ELEMENT crostata (gelatina?, limone*,((crema | zucchero)+ | glassa))>

DTD


Soluzione 3

Soluzione 3

L’elemento fattoriadeve avere almeno un elemento fattore, può avere un numero qualsiasi di elementi facoltativi cane o un elemento facoltativo gatto, un numero qualsiasi di elementi facoltativi maiale, un elemento facoltativo capra o mucca e uno o più elementi gallina oppure un numero qualsiasi di elementi facoltativi oca.

<!ELEMENT fattoria (fattore+,(cane* | gatto?), maiale*, ( capra | mucca)?, (gallina+ | oca* ))>

DTD


  • Login