Esempi di XML Fabio Vitali.

Slides:



Advertisements
Presentazioni simili
I Namespace Mario Arrigoni Neri.
Advertisements

WWW XML-Namespace Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u Lesigenza e il funzionamento dei Namespace in XML.
DTD Document Type Definition per XML
Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
A. FERRARI Alberto Ferrari. L'HyperText Markup Language (HTML) (traduzione letterale: linguaggio di marcatura per ipertesti) è un linguaggio usato per.
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Document Type Definition per XML Presentazione 8.1 Informatica Generale (Prof. Luca A. Ludovico)
HTML LE PAGINE WEB COME SI SA, INTERNET E UN SISTEMA MONDIALE DI RETI DI COMPUTER CHE PERMETTE DI UTILIZZARE UN SISTEMA DI CONNESSIONE TRA COMPUTER.
DTD Laurea Magistrale in Informatica Chapter 03 Modulo del corso Thecnologies for Innovation.
XSLT (eXtensible Stylesheet Language Transformation) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis
Query OQL e XQUERY a confronto
G. Mecca – – Università della Basilicata Tecnologie di Sviluppo per il Web XML: Dettagli e Approfondimenti versione 2.0 Questo lavoro è
Numerico-Vespignani, Informatica per le scienze umanistiche, Il Mulino, La rappresentazione dellinformazione testuale e i linguaggi di codifica.
XML Prof. Alfredo Pulvirenti. XML XML (eXtensible Markup Language) è un meta linguaggio. Può essere definito come un insieme di regole e convenzioni che.
TW Analisi dei documenti n Classificazione dei componenti n Selezione dei componenti, costruzione della gerarchia, dei blocchi informativi e degli elementi.
WWW Link in XML Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u XLink.
WWW Introduzione ad HTTP Fabio Vitali. WWW Fabio Vitali2 Introduzione Oggi esaminiamo in breve: HTTP (HyperText Transfer Protocol) Un protocollo stateless.
WWW Il problema Fabio Vitali. WWW Fabio Vitali2 Introduzione Oggi esaminiamo in breve: u Alcuni concetti sui portali u Una prima suddivisione del progetto.
Laboratorio di Applicazioni Informatiche II mod. A
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
XML Prof. Barbara Pernici Politecnico di Milano aggiornato 10/12/2002.
Componenti di un documento HTML Danilo Deana. Componenti di un documento HTML 2 Elementi HTML comprende elementi per rappresentare paragrafi, elenchi,
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Introduzione ad HTML prima parte
XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.
Codifica dei testi Entità. Danilo DeanaEntità2 Le entità Un documento XML è composto da un prologo e da un elemento radice che contiene tutti gli altri.
Lezione 5 Attributi, Entità, Parametri e Namespaces.
DTD, Entità, Parametri, Namespace
XML per documenti e applicazioni transazionali su Internet Alessio Saltarin Progetto XML Factory.
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
Esercizio 1 Convertire il seguente DTD (esercizio 1 sui DTD) in XML Schema:
Corso di PHP.
DBMS ( Database Management System)
Informatica Umanistica A.A. 2009/2010 eXtensible Markup Language (XML)
Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.
Linguaggi di codifica.
1 Documenti XML validi La Document Type Definition Dichiarazione di elementi.
DTD Schema W3C. Dichiarazione di elementi Dichiarazioni globali Dichiarazioni globali Dichiarazioni locali (figli di altri elementi)
1 IsaPress. 2 Obiettivo Realizzare uno strumento di facile uso per estrarre il contenuto da documenti binari di vario tipo in un formato utile per l'impaginazione.
1 IsaPress. 2 Obiettivo Realizzare uno strumento di facile uso per estrarre il contenuto da documenti binari di vario tipo in un formato utile per l'impaginazione.
HyperText Markup Language 17-23/6/08 Informatica applicata B Cristina Bosco.
HTML per iniziare Gianpaolo Cecere. 29 aprile Sintassi HTML I tag HTML sono direttive per i browser I tag sono contenitori per porzioni di documento.
Creare pagine web Xhtlm. Struttura di una pagina.
NIR Presentazione del DTD di NormeInRete Fabio Vitali Università di Bologna & IAT-CNR 31 ottobre 2000.
Introduzione a XML applicazioni in open archives Azalea III Incontro di Formazione, Roma 2-3 febbraio 2004.
Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi  Lezione 02: 06/03martedi  Lezione 03: 13/03martedi  Lezione 04:
HTML Gli elementi principali di una pagina Web. Titolo: 2  Attribuisce un titolo alla pagina  Il titolo è visibile nella “barra del titolo” del browser.
Roma, 16 giugno 2005 AZALEA Un sistema di conoscenza in oncologia a disposizione di pazienti e cittadini Gli aspetti informatici.
XHTML Corso linguaggi per il web a.s. 2011/2012 ITIS A. Righi – Corsico Relatore – Aldo Guastafierro.
Lezione 3 Struttura lessicale del linguaggio
WWW Link in XML Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u XLink.
Le mailing list Giugno Le mailing list Cos’e una mailing list La mailing list corrispondono a un indirizzo di posta elettronica al quale fanno riferimento.
Internet e HTML Diffusione di informazioni mediante la rete Internet.
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
MySQL Database Management System
CSS Cascading Style Sheet
WWW XML Schema Fabio Vitali. WWW Fabio Vitali2 Sommario Oggi esaminiamo in breve XML Schema u Perché non bastano i DTD u Tipi ed elementi u Definizione.
WWW SGML Fabio Vitali. WWW Fabio Vitali2 Introduzione Parliamo qui delle caratteristiche dei DTD di SGML che non è possibile utilizzare in XML. DTD SGML.
WWW La sintassi di SGML  XML Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo in breve tutti gli aspetti di SGML che sono in comune con XML:
WWW XML Schema Fabio Vitali. WWW Fabio Vitali2 Sommario Oggi esaminiamo in breve XML Schema u Perché non bastano i DTD u Tipi ed elementi u Definizione.
WWW Introduzione ad XML Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo alcuni aspetti di XML, in particolare sintattici e di filosofia d'uso:
WWW XML Schema Fabio Vitali. WWW A seguire: Motivazione (1)2/47 Sommario Oggi esaminiamo in breve XML Schema u Perché non bastano i DTD u Tipi ed elementi.
Master in Telemedicina HTML per iniziare Maria Simi, dicembre 2004 [da un tutorial di Rigget]
WWW Introduzione ad XML Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo alcuni aspetti di XML, in particolare sintattici e di filosofia d'uso:
Documenti XML ben formati Entità– Sezioni condizionali.
WWW Introduzione ad XML Da slide di Fabio Vitali.
Analisi matematica Introduzione ai limiti
HTML. Pagina HTML Struttura Titolo Hello World! Paragrafo apre il documento html contiene informazioni come il titolo della pagina, i meta tags, la codifica.
Transcript della presentazione:

Esempi di XML Fabio Vitali

Introduzione Qui esaminiamo in breve degli esempi delle varie caratteristiche di SGML e XML. Elementi Attributi Entità generali Entità parametriche Marked sections Fabio Vitali

Esempi di sviluppo del DTD Ricapitolando, ci sono quattro caratteristiche di SGML che vale la pena considerare a fondo: Elementi <A> … </A> Attributi <A HREF=“http://…”> … </A> Entità: <P>In HTML, si scrive entità</P> Marked sections Fabio Vitali

Elementi Il content model di un elemento definisce quali e quanti elementi possono essere contenuti in un elemento. Ci sono cinque famiglie di content model: Qualunque: un elemento può contenere qualunque elemento definito nel DTD Vuoto: un elemento non ha contenuto, e spesso ha solo il tag iniziale. Testo: un elemento può contenere solo testo (#PCDATA) Strutturato: un elemento può contenere solo altri elementi Misto: un elemento può contenere sia testo che altri elementi. XML ha solo UNA forma ammessa di content model misto. Fabio Vitali

Content model qualunque <!ELEMENT X ANY> L’elemento X può contenere qualunque altro elemento specificato nel DTD, o anche testo <X>adj<Y>dsb</Y>bdvb<Z>akbc</Z>bdkb</X> X adj Y bdvb Z bdkb dsb akbc Fabio Vitali

<!ELEMENT X - o EMPTY> Content model vuoto <!ELEMENT X - o EMPTY> L’elemento X non può contenere niente. E’ equivalente scrivere il solo tag iniziale, o tag iniziale e finale (per questo se il content model è EMPTY, il secondo tag deve essere segnato come omissibile. <X></X> <X> N.B. In XML il tag vuoto ha una sintassi diversa: <X></X> <X/> X Fabio Vitali

<!ELEMENT X #PCDATA> Content model testo <!ELEMENT X #PCDATA> L’elemento X può solo contenere testo. E’ proibito mettere altri elementi al suo interno <X>adjbdkb</X> X adjbdkb Fabio Vitali

Content model strutturato <!ELEMENT X (Y, (W | Z)+ , K*)> L’elemento X può contenere solo elementi secondo la specifica data, usando i separatori e gli operatori di ripetizione specificati. <X><Y>dsb</Y><Z>bdvb<Z><Z>akbc</Z><W>bdkb</W><K>eyiy</K></X> X Y Z Z W K dsb bdvb akbc bdkb eyiy Fabio Vitali

<!ELEMENT X (#PCDATA | Y | W | Z)*> Content model misto <!ELEMENT X (#PCDATA | Y | W | Z)*> L’elemento X può contenere sia testo sia altri elementi in maniera ed ordine specificati. L’unica forma accettabile di content model misto in XML è composta da una ripetizione di elementi alternativi, in cui il primo è #PCDATA. Cioè solo content model della forma qui sopra. <X>adj<Z>dsb</Z>bdvb<Y>akbc</Y>bdkb</X> X adj Z bdvb Y bdkb dsb akbc Fabio Vitali

Separatori e ripetizioni I separatori in SGML e XML sono due: La virgola indica elementi obbligatori e nel loro ordine. La barra verticale indica elementi alternativi Gli operatori di ripetizione sono quattro Niente: elemento obbligatorio e non ripetibile ?: elemento facoltativo e non ripetibile +: elemento obbligatorio e ripetibile *: elemento facoltativo e ripetibile Fabio Vitali

Un esempio semplice Una lettera commerciale è composta da un destinatario, un corpo e dei saluti. Il destinatario è composto di nome e ufficio interno. Il corpo è composto di paragrafi. I saluti sono testo semplice. <!DOCTYPE lettera SYSTEM “lettera.dtd”> <lettera> <destinatario> <nome>Mario Rossi</nome> <ufficio>Ufficio Acquisti</ufficio> </destinatario> <corpo> <para> Comprate tutto! </para> </corpo> <saluti> Arrivederci </saluti> </lettera> Fabio Vitali

Il DTD relativo <!ELEMENT lettera (destinatario, corpo, saluti)> <!ELEMENTI destinatario (nome, ufficio) > <!ELEMENT corpo (para)+> <!ELEMENT saluti #PCDATA> <!ELEMENT para #PCDATA> <!ELEMENT nome #PCDATA> <!ELEMENT ufficio #PCDATA> Fabio Vitali

Complichiamo l’esempio: alternative Se il destinatario è interno, è composto da nome e ufficio interno. Altrimenti è composto da nome, ditta, indirizzo e città. <!DOCTYPE lettera2 SYSTEM “lettera2.dtd”> <lettera2> <destinatario> <nome>Mario Rossi</nome> <ditta>ACME, Inc.</ditta> <indirizzo>Via Garibaldi 1</indirizzo> <citta>Bologna</citta> </destinatario> … </lettera2> Fabio Vitali

Il DTD relativo a lettera2 <!ELEMENT lettera2 (destinatario, corpo, saluti)> <!ELEMENTI destinatario (nome, (ufficio | (ditta, indirizzo, citta)))> <!ELEMENT corpo (para)+> <!ELEMENT saluti #PCDATA> <!ELEMENT para #PCDATA> <!ELEMENT ditta #PCDATA> <!ELEMENT indirizzo #PCDATA> <!ELEMENT citta #PCDATA> N.B.: le parentesi servono per evitare ambiguità. Allo stesso motivo “nome”, esistente in entrambe le possibilità, è stato estratto per evitare ambiguità di parsing. Fabio Vitali

Complichiamo l’esempio: ripetizioni L’indirizzo è composto da una o più righe. <!DOCTYPE lettera3 SYSTEM “lettera3.dtd”> <lettera2> <destinatario> <nome>Mario Rossi</nome> <ditta>ACME, Inc.</ditta> <indirizzo> <riga>c/o Associated Producers</riga> <riga>Via Rossi 1</riga> <riga>Casteldebole</riga> </indirizzo> <citta>Bologna</citta> </destinatario> … </lettera3> Fabio Vitali

Il DTD relativo a lettera3 <!ELEMENT lettera3 (destinatario, corpo, saluti)> <!ELEMENTI destinatario (nome, (ufficio | (ditta, indirizzo, citta)))> <!ELEMENT corpo (para)+> <!ELEMENT saluti #PCDATA> <!ELEMENT para #PCDATA> <!ELEMENT ditta #PCDATA> <!ELEMENT indirizzo (riga)+> <!ELEMENT citta #PCDATA> <!ELEMENT riga #PCDATA> Fabio Vitali

Complichiamo l’esempio: content model misto I paragrafi possono contenere anche corsivi e grassetti. <!DOCTYPE lettera4 SYSTEM “lettera4.dtd”> <lettera4> <destinatario> … </destinatario> <corpo> <para> Comprate <bold>tutto!</bold> </para> </corpo> <saluti> Arrivederci </saluti> </lettera4> Fabio Vitali

Il DTD relativo a lettera4 <!ELEMENT lettera4 (destinatario, corpo, saluti)> <!ELEMENTI destinatario (nome, (ufficio | (ditta, indirizzo, citta)))> <!ELEMENT corpo (para)+> <!ELEMENT saluti #PCDATA> <!ELEMENT para (#PCDATA | bold | italic)*> <!ELEMENT bold (#PCDATA | italic)*> <!ELEMENT italic (#PCDATA | bold)*> <!ELEMENT ditta #PCDATA> <!ELEMENT indirizzo (riga)+> <!ELEMENT citta #PCDATA> <!ELEMENT riga #PCDATA> Fabio Vitali

Attributi Gli attributi sono informazioni aggiuntive poste insieme all’elemento. Tecnicamente non fa parte del contenuto del documento, ma descrive e specifica l’elemento. Ci sono tre famiglie di attributi importanti: Qualunque stringa è lecita E’ possibile scegliere solo uno dei valori proposti (lista) Il valore deve essere unico su tutto il documento (ID) Il valore deve essere uguale a quello di un ID esistente Fabio Vitali

Attributi stringa <!ATTLIST X a CDATA “pippo” > Il tag iniziale di X può contenere un attributo chiamato “a”. Qualunque stringa è lecita. Se non viene specificata una stringa, il valore definito per default è “pippo” <X a=“pluto”>adj</X> <X>bfg</X> <!-- a vale “pippo” --> Fabio Vitali

Attributi lista <!ATTLIST X a (pippo|pluto|paperino) “pippo” > Il tag iniziale di X può contenere un attributo chiamato “a”. Sono leciti solo i valori descritti. Se non viene specificata una stringa, il valore definito per default è “pippo” <X a=“pluto”>adj</X> <X>bfg</X> <!-- a vale “pippo” --> <X a=“paperino”>ljdn</X> <X a=“topolino”>kdjbk</X> <!-- errore --> Fabio Vitali

Attributi ID <!ATTLIST X a ID #REQUIRED > Il tag iniziale di X può contenere un attributo chiamato “a”. Sono leciti solo valori unici su tutto il documento. L’elemento X assume un’identificabilità assoluta all’interno del documento: è un “luogo notevole” Poiché il valore deve essere sempre diverso, non è possibile specificare un valore di default. <X a=“pluto”>adj</X><X a=“pippo”>bfg</X> <X a=“pluto”>adj</X><X a=“pluto”>bfg</X> <!-- errore --> Fabio Vitali

Attributi IDREF <!ATTLIST X a ID #IMPLIED b IDREF #IMPLIED > Il tag iniziale di X può contenere un attributo chiamato “a” ed uno chiamato “b”. I valori di “a” debbono essere unici.I valori di “b” debbono essere uguali ad un valore di “a” esistente da qualche parte nel documento. <X a=“pluto”>adj</X><X b=“pluto”>bfg</X> <X a=“pluto”>adj</X><X b=“pippo”>bfg</X> <!-- errore --> Fabio Vitali

Valori di default negli attributi I valori di default importanti in SGML e XML sono di quattro tipi: Valore esplicito: un stringa tra virgolette Valore necessario: la keyword #REQUIRED. Valore facoltativo: la keyword #IMPLIED. Valore esplicito e non modificabile: la keyword #FIXED e una stringa tra virgolette. Usata per scopi particolari. La vedremo per XLink. Fabio Vitali

Complichiamo l’esempio: attributi testo e lista Ogni lettera deve avere una data di creazione e può avere un autore, che non fanno parte del contenuto della lettera. Inoltre è necessario specificare se il destinatario è interno o esterno. <!DOCTYPE lettera5 SYSTEM “lettera5.dtd”> <lettera5 data=“28/01/2000” autore=“FV”> <destinatario tipo=“esterno”> … </destinatario> <corpo> … </corpo> <saluti> … </saluti> </lettera5> Fabio Vitali

Il DTD relativo a lettera5 <!ELEMENT lettera5 (destinatario, corpo, saluti)> <!ATTLIST lettera5 data CDATA #REQUIRED autore CDATA #IMPLIED > <!ELEMENT destinatario (nome, (ufficio | (ditta, indirizzo, citta)))> <!ATTLIST destinatario tipo (interno | esterno) “interno” > <!ELEMENT corpo (para)+> <!ELEMENT saluti #PCDATA> … Fabio Vitali

Complichiamo l’esempio: attributi ID e IDREF Ogni paragrafo deve avere un identificativo univoco. L’elemento “link”, che può essere contenuto nei paragrafi, può creare un link ad un paragrafo precedente. <!DOCTYPE lettera6 SYSTEM “lettera6.dtd”> <lettera6 data=“28/01/2000” autore=“FV”> … <corpo> <para id=“P1”> Comprate tutto! </para> <para> Imparate il <link v=“P1”>paragrafo precedente</link> </para> </corpo> <saluti> … </saluti> </lettera6> Fabio Vitali

Il DTD relativo a lettera6 <!ELEMENT lettera6 (destinatario, corpo, saluti)> <!ELEMENT corpo (para)+> <!ELEMENT para (#PCDATA | bold | italic | link)*> <!ATTLIST para id ID #IMPLIED > <!ELEMENT link (#PCDATA | bold | italic)*> <!ATTLIST link v IDREF #REQUIRED … Fabio Vitali

Entità Le entità sono macro testuali a sostituire dei riferimenti brevi, univocamente associati al loro significato esteso. Ci sono due tipi di entità: Generali: definite in un DTD, possono essere usate nell’istanza di documento. Parametriche: definite in un DTD, possono essere usate nello stesso DTD, subito dopo. Fabio Vitali

<!ENTITY Z “pippo”> Entità generali <!ENTITY Z “pippo”> Ogni volta che scrivo il nome dell’entità, “&Z;” il processore sostituisce la stringa corrispondente, “pippo”. Un’entità della forma “&#NNN;”, dove NNN sono cifre decimali, viene sostituita con il carattere corrispondente nella tabella caratteri di default. <X>Oggi ho visto &Z; </X> <X>Che bella entità </X> Fabio Vitali

<!ENTITY % Z “#PCDATA | Y”> Entità parametriche <!ENTITY % Z “#PCDATA | Y”> Ogni volta che scrivo il nome dell’entità, “%Z;” il processore sostituisce la stringa corrispondente, “#CDATA | Y”. Posso usare questa notazione solo all’interno di un DTD <!ELEMENT X (%Z;)*> <!ELEMENT Y (%Z; | W)* > Fabio Vitali

Complichiamo l’esempio: entità generali Forniamo supporto per le lettere accentate e forniamo due o tre forme standard di saluto <!DOCTYPE lettera7 SYSTEM “lettera7.dtd”> <lettera7 data=“28/01/2000” autore=“FV”> … <corpo> <para> Olà! Comprate tutto! </para> … </corpo> <saluti> &CS; </saluti> </lettera7> In fase di elaborazione, “agrave” diventerà “à” e “CS” diventerà “Cordiali saluti”. Fabio Vitali

Il DTD relativo a lettera7 <!ELEMENT lettera7 (destinatario, corpo, saluti)> <!ELEMENT corpo (para)+> <!ELEMENT para (#PCDATA | bold | italic | link)*> … <!ENTITY agrave “à” > <!ENTITY CS “Cordiali saluti”> <!ENTITY AP “A presto”> Fabio Vitali

Complichiamo l’esempio: entità parametriche (I) Centralizziamo il content model misto, in modo da poterlo cambiare in un colpo solo. Perdiamo qualcosa, però. <!DOCTYPE lettera8 SYSTEM “lettera8.dtd”> <lettera8 data=“28/01/2000” autore=“FV”> … <corpo> <para> Olà! Comprate tutto! </para> … </corpo> <saluti> &CS; </saluti> </lettera8> (il documento è identico!!!) Fabio Vitali

Il DTD relativo a lettera8 <!ELEMENT lettera8 (destinatario, corpo, saluti)> <!ELEMENT corpo (para)+> … <!ENTITY % inline “(#PCDATA | bold | italic | link)*”> <!ELEMENT para %inline;> <!ELEMENT link %inline;> <!ELEMENT bold %inline;> <!ELEMENT italic %inline;> Cosa abbiamo perso? Fabio Vitali

Complichiamo l’esempio: entità parametriche (II) Raccogliamo e separiamo tutte le entità per le lettere strane, perché sono troppe e confondono le idee. Inoltre rendiamo il frammento di DTD compatibile sia con SGML che con XML (XML non ha le specifiche di minimizzazione!!!) <!DOCTYPE lettera9 SYSTEM “lettera9sgml.dtd”> <lettera9 data=“28/01/2000” autore=“FV”> … <corpo> <para> Olà! Comprate tutto! </para> … </corpo> <saluti> &CS; </saluti> </lettera9> Fabio Vitali

Il DTD relativo a lettera9 File “entities.dtd”: <!ENTITY agrave “à” > <!ENTITY egrave “è” > File “lettera9.dtd”: <!ENTITY % entities SYSTEM “entities.dtd”> %entities; <!ELEMENT lettera9 %min; (destinatario, corpo, saluti)> <!ELEMENT corpo %min; (para)+> File “lettera9sgml.dtd” <!ENTITY % min “- -”> <!ENTITY % dtd SYSTEM “lettera9.dtd”> %lettera9.dtd File “lettera9xml.dtd” <!ENTITY % min “”> <!ENTITY % dtd SYSTEM “lettera9.dtd”> %lettera9.dtd Fabio Vitali

Marked sections <![INCLUDE[ Roba da includere ]]> <![EXCLUDE[ Roba da escludere ]]> Permette di specificare parti del DTD che vengono considerate ed escluse in alternativa. Per esempio permettono di specificare due content model per lo stesso elemento, da attivare in alternativa. Fabio Vitali

Complichiamo l’esempio: Marked Section Creiamo due DTD, uno in cui certi elementi sono leciti, e l’altro in cui non lo sono. Questo deve essere fatto con un unico file, per gestire insieme tutte le evoluzioni successive. <!DOCTYPE lettera10 SYSTEM “lettera10.dtd”> <lettera10 data=“28/01/2000” autore=“FV”> … <corpo> <para> Comprate <bum>tutto!</bum></para> <para> Imparate il <link v=“P1”>paragrafo precedente</link> </para> </corpo> <saluti> &CS; </saluti> </lettera10> Fabio Vitali

Il DTD relativo a lettera10 File “lettera10.dtd”: <!ELEMENT lettera10 (destinatario, corpo, saluti)> <!ELEMENT corpo (para)+> <![%BUM;[ <!ENTITY % inline “(#PCDATA | italic | link | bum)*”> ]]> <![%NoBUM; [ <!ENTITY % inline “(#PCDATA | italic | link )*”> ]]> <!ELEMENT para %inline;> File “lettera10-bum.dtd” <!ENTITY % BUM “EXCLUDE”> <!ENTITY % NoBUM “INCLUDE”> <!ENTITY % dtd SYSTEM “lettera10.dtd”> %lettera10.dtd File “lettera10+bum.dtd” <!ENTITY % BUM “INCLUDE”> <!ENTITY % NoBUM “EXCLUDE”> <!ENTITY % dtd SYSTEM “lettera10.dtd”> %lettera10.dtd Fabio Vitali

Conclusioni Qui abbiamo fatto degli esempi di DTD XML e SGML. Elementi <A> … </A> Attributi <A HREF=“http://…”> … </A> Entità: <P>In HTML, si scrive entità</P> Marked sections Fabio Vitali

Riferimenti Wilde’s WWW, capitolo 4 Altri testi: E. Maler, J. Al Andaloussi, Developing SGML DTDs, from text to model to markup, Prentice Hall, 1997 Fabio Vitali