1 / 98

Linguaggi di markup

Linguaggi di markup. Marco Mesiti mesiti@disi.unige.it. Esempio: contatti in rubrica. Laura Papaleo 123.2342323232 papaleo@disi.unige.it Franco Tallero Via degli Ulivi 19/19 Genova, 16100 010.28389239 (preferito) 346.92938281 tallero@mioindirizzo.com. Esempio: address book in XML.

maren
Download Presentation

Linguaggi di markup

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linguaggi di markup Marco Mesiti mesiti@disi.unige.it

  2. Esempio: contatti in rubrica Laura Papaleo123.2342323232papaleo@disi.unige.itFranco TalleroVia degli Ulivi 19/19 Genova, 16100010.28389239 (preferito)346.92938281tallero@mioindirizzo.com

  3. Esempio: address book in XML <?xml version="1.0"?><address-book> <entry> <name>Laura Papaleo </name> <tel> 123.2342323232 </tel> <email href=" papaleo@disi.unige.it"/> </entry> <entry> <name>Franco Tallero</name> <address> <street>Via degli Ulivi 19/19</street> <postal-code>16100</postal-code> <locality> Genova</locality> </address> <tel preferred="true"> 010.28389239</tel> <tel> 346.92938281</tel> <email href="tallero@mioindirizzo.com "/> </entry></address-book>

  4. XML Sintassi: Elemento • Un elemento è un blocco elementare dei documenti XML • Un elemento è una parte del documento delimitata da 2 TAG • Esempio: <AUTHOR> Laura Papaleo </AUTHOR> Elemento Start-tag Contenuto End-tag

  5. XML Sintassi: Tag (1/2) • I tag appaiono, normalmente, in coppia, • tag di apertura (start-tag) • tag di chiusura (end-tag) <NOME_TAG> Laura Papaleo </NOME_TAG> • Il tag rappresenta il nome dell’elemento

  6. XML:Struttura gerarchica degli elementi Libro libro Capitolo sezione Capitolo Capitolo Capitolo sezione sezione sezione

  7. Struttura gerarchica degli elementi No! Ogni elemento deve essere completamente incluso da un altro elemento Libro Capitolo sezione Capitolo sezione

  8. Contenuto di un Elemento • altri elementi (sub-elements) <address> <street> 33, Terry Dr.</street> <city> Morristown </city> </address> • testo (data content) <street> 33, Terry Dr.</street> • contenuto misto (mixed content) <par>Today, <date>05-06-2000</date> Mr. <name>Bill Gates</name> is in California to talk to ... </par>

  9. Elemento documento (Document Element) • E’ l’elemento più esterno in un documento XML • Viene anche detto elemento radice • Contiene tutti gli elementi del documento esempio: <libro> … … </libro> • Deve sempre esistere

  10. Elemento documento (Document Element) No! Non è possibile avere più elementi a livello radice Capitolo sezione Capitolo sezione

  11. Elemento vuoto (Empty Elements) • E’ un elemento senza contenuto • Non ha il tag finale • Ha una particolare rappresentazione del Tag iniziale Esempio: <foto source=“ciao.gif”/> <email indirizzo=“pippo@pippo.com”/>

  12. XML: Definire gli attributi • Un elemento può avere degli attributi • Gli attributi possono essere pensati come aggettivi che descrivono gli elementi • Ogni attributo ha nomee valore • Tutti gli attributi di un elemento devono essere distinti <AUTHOR nome_attributo=”valore_attributo"> Marco Mesiti</AUTHOR>

  13. <AUTHOR laurea=”informatica"> Laura Maria Rita</AUTHOR> <AUTHOR laurea=”informatica"> <name>Laura</name> <name>Maria Rita</name> <lastname>Papaleo</lastname> </AUTHOR><AUTHOR laurea=”informatica” name1=”Laura” name2=”Maria Rita” lastname=”Papaleo”/> Esempio di elemento con attributi

  14. Un elemento, quando: Si richiede di recuperare i dati velocemente E’ visibile a tutti E’ rilevante per il significato del documento Un attributo, quando: Esprime una scelta E’ utilizzato dal sistema Non è rilevante per il significato del documento Elementi Vs Attributi Quando è meglio usare elementi o attributi per rappresentare un’informazione? Sicuramente elementi se si tratta di informazione strutturata

  15. Un documento XML • Un file XML è un semplice file di testo con tag XML al suo interno • Esso ha una estensione .xml • nome_file.xml • Un file XML contiene tre sezioni • Una dichiarazione che si tratta di un file XML • Una dichiarazione (opzionale) del tipo di documento e sul nome della DTD associata • Il contenuto del documento con tag XML

  16. Un esempio di documento XML (1) <?xml version="1.0"?> <BOOKLIST> <BOOK> <TITLE edition=”2000">XML Tutorial</TITLE> <AUTHOR>Laura Papaleo</AUTHOR> </BOOK> … <BOOK> <TITLE edition=”2003" type=”XML"> Strutturare le informazioni nel web </TITLE> <AUTHOR>Laura Papaleo</AUTHOR> <AUTHOR>Franco Tallero</AUTHOR> <AUTHOR>Marco Mesiti</AUTHOR> </BOOK> </BOOKLIST> BOOKS.xml

  17. Un esempio di documento XML (2) ORDERS.xml <?xml version="1.0"?> <Orders> <SalesOrder SONumber="12345"> <Customer CustNumber="543"> <CustName>ABC Industries</CustName> <Street>123 Main St.</Street> <City>Chicago</City> <State>IL</State> <PostCode>60609</PostCode> </Customer> <OrderDate>981215</OrderDate> <Line LineNumber="1"> <Part PartNumber="123"> <Description> Turkey wrench: Stainless steel, one piece construction, lifetime guarantee. </Description> <Price>9.95</Price> </Part> <Quantity>10</Quantity> </Line> </SalesOrder> </Orders>

  18. Un semplice esempio (3) <?xml version="1.0"?> <Lease> <Leasee>ABC Industries </Leasee> agrees to lease the property at <Address> 123, Main St., Chicago, IL </Address> from <Lessor> XYZ Properties </Lessor> for a term of not less than <LeaseTerm TimeUnit=“Months”> 18 </LeaseTerm> at the cost of the <Price Currency=“USD” TimeUnit=“Months”> 1000 </Price> </Lease> LEASE.xml

  19. Dichiarazione di documento XML • Un file XML comincia sempre con una dichiarazione XML • Sta ad indicare che • il documento è un file XML • la versione di XML usata (attualmente sempre 1.0) • La dichiarazione XML è del tipo: <?xml version="1.0"?>

  20. Dichiarazione di documento XML • Oltre all’indicazione della versione può essere inserito: • il set di caratteri utilizzato  attributo encoding • il fatto che l’interpretazione del documento dipende da altri documenti  attributo standalone <?xml version="1.0” encoding = “UTF-8” standalone = “no”?> • Questi sono i valori di default. E’ possibile non specificarli

  21. Dichiarazione della DTD del documento • Prima del root element (l’elemento radice) può essere dichiarata la DTD che verrà utilizzata • Es: <!DOCTYPE Libro SYSTEM “libro.dtd”> • Vedremo in seguito come può essere strutturata tale dichiarazione

  22. DTDDocument Type Definition Sintassi Di Una DTD

  23. DTD - Document Type Definition • E’ opzionale, ma è consigliabile la presenza • E’ un insieme di regole per definire la struttura di un documento XML • Tali regole: • stabiliscono gli elementi che possono essere usati • stabiliscono gli attributi da inserire negli elementi • impongono vincoli sulle relazioni tra gli elementi (fratelli, elemento-sottoelemento,...) • Il DTD è un modo per fare un check sulla strutturazione corretta di un documento XML

  24. Perché è importante usare i DTD? • Sono utili per i programmatori. E’ la definizione del tipo di documento che andranno a processare • Utili per definire fogli di stile • Utile per creare documenti “corretti”. Il DTD può essere visto come un vincolo sull’informazione da inserire nel documento • Utili per creare interfacce dinamiche per i documenti XML

  25. DTD - rappresentazione ad albero • Un DTD può essere visto come un albero • I nodi dell’albero rappresentano: • elementi • attributi • I nomi di elementi e attributi possono essere seguiti da caratteri speciali (+,*,?) • Gli archi dell’albero permettono di rappresentare la relazione • elemento-sottoelemento, elemento-attributo Libro Capitolo + Par + Sezioni

  26. Document Type Definition: Elementi • Gli elementi possono essere contenitori o essere vuoti • Gli elementi contenitori possono contenere: • testo • altri elementi (sottoelementi) • un mix dei precedenti • Nel caso di elementi che contengono sottoelementi, con il DTD si può specificare come i “sottoelementi occorrono”

  27. titolo Document Type Definition: occorrenza di un sottoelemento • Un sottoelemento potrebbe essere obbligatorio • Ad esempio un libro deve avere un titolo, quindi l’elemento libro deve avere un sottoelemento titolo • Usando la grammatica della DTD <!ELEMENT libro (… titolo …)>

  28. sottotitolo Document Type Definition: Occorrenza di un sottoelemento • Un sottoelemento può essere opzionale • Ad esempio, un libro può avere un sottotitolo, quindi l’elemento sottotitolo è opzionale per l’elemento libro • Usando la grammatica della DTD <!ELEMENT libro (… sottotitolo? …)>

  29. Document Type Definition: Occorrenza di un sottoelemento • Un sottoelemento può essere ripetibile • Ad esempio, un libro ha degli autori, almeno uno • Quindi l’elemento libro può avere una lista di elementi autore, comunque almeno uno • Usando la grammatica della DTD <!ELEMENT libro (… autore+ …)> autore

  30. traduttore DTD - occorrenza di un sottoelemento • Un sottoelemento può essere ripetibile e opzionale • Ad esempio, un libro può avere dei traduttori, oppure no • Quindi l’elemento libro può avere una lista di elementi traduttore, ma anche nessuno • Usando la grammatica della DTD<!ELEMENT libro (… traduttore* …)>

  31. DTD - Sequenze di sottoelementi • Un libro presenta diverse informazioni: gli autori, il titolo, eventualmente i traduttori e così via. L’elemento libro può contenere quindi una sequenza di sottoelementi Usando la grammatica della DTD <!ELEMENT libro (titolo, autore*, sottotitolo?, …)> Nota: è rilevante l’ordine sottotitolo autore titolo

  32. DTD - Alternative di sottoelementi • Un libro può avere un IBDN oppure un codice • Usando la grammatica della DTD <!ELEMENT libro (… ISBN | codice …)> ISBN codice

  33. DTD - Riassumendo • I costrutti visti possono essere combinati nel modo preferito, al fine di modellare l’informazione <!ELEMENT A (B*, C, D?)><!ELEMENT A (B | C+)><!ELEMENT A (B, (C | D+)?, E*)>

  34. DTD per una ricetta • DTD ricettario.dtd <!ELEMENT ricettario (ricetta)*> <!ELEMENT ricetta (titolo, ingred+, passo+, note?)> <!ATTLIST ricetta numero ID #REQUIRED> <!ELEMENT titolo (#PCDATA)> <!ELEMENT ingred (#PCDATA)> <!ELEMENT passo (#PCDATA)> <!ELEMENT note ANY> <!ATTLIST passo numero ID #REQUIRED>

  35. Dichiarare unelemento non vuoto (1/2) <!ELEMENT agenda (contatto*)> <!ELEMENT contatto (nome, indirizzo+, telefono*, email*, foto?)> • L'agenda sarà composta da zero o più contatti con: • un nome; • uno o più (simbolo +) indirizzi; • zero o più numeri di telefono; • zero o più indirizzi di email; • una o nessuna (simbolo ?) fotografia.

  36. Dichiarare unelemento non vuoto (2/2) <!ELEMENT nome (#PCDATA)> • Il nome è semplicemente una stringa di caratteri, • Eventuali entità presenti nella stringa vengono trasformate nei caratteri corrispondenti

  37. Dichiarazione di un elemento vuoto <!ELEMENT foto EMPTY> • Ad esempio l’oggetto foto potrebbe pensarsi equivalente al tag HTML <IMG> • Pertanto non ha un marcatore di chiusura né tantomeno un contenuto • Possiede solo degli attributi

  38. Dichiarazione di un elemento ANY <!ELEMENT note ANY> • Indica che il contenuto dell’elemento può essere arbitrario • In altre parole, non viene fissato alcun vincolo sul contenuto dell’elemento

  39. Dichiarazioneelemento “mixed-content” • Abbiamo detto che un elemento può avere un contenuto misto • Questo può essere richiesto a livello di DTD • La dichiarazione di un elemento a contenuto misto deve seguire le seguenti regole • viene dichiarato una alternativa di sottoelementi • il primo sottoelemento deve essere #PCDATA • L’alternativa di sottoelementi deve essere ripetibile

  40. Dichiarazioneelemento “mixed-content” • Vediamo un esempio: <!ELEMENT emph (#PCDATA|sub|super)*><!ELEMENT sub (#PCDATA)><!ELEMENT super (#PCDATA)><emph> H <sub>2</sub> O è l’acqua </emph>

  41. Dichiarazione di attributi <!ATTLIST foto src CDATA #REQUIRED desc CDATA #IMPLIED> • src, nome del file bitmap necessario (#REQUIRED) • desc, descrizione è opzionale (#IMPLIED) <!ATTLIST telefono tipo (casa | ufficio | cellulare) 'casa'> • l’elemento telefono ha un attributo tipo, • che indica se il numero è di casa, dell'ufficio o di un cellulare • il valore di default è 'casa’

  42. Tipi degli attributi (1/2) CDATA Stringhe di caratteri. ID nome che occorre unico all'interno dello stesso documento IDREF E' un riferimento ad un elemento che ha un attributo di tipo ID con valore IDREF IDREFS E' una lista di IDREF separati da uno spazio bianco

  43. Tipi degli attributi (2/2) ENTITY nome di una entità dichiarata ENTITIES E' una lista di ENTITY separati da uno spazio bianco NMTOKEN E' una stringa di una parola NMTOKENS E' una lista di NKTOKEN separati da uno spazio bianco Enumerazione E' una lista di nomi come valori che l'attributo può assumere I nomi sono separati da virgola e la lista è racchiusa tra par. tonde

  44. Valori di default per gli attributi #REQUIRED Obbligatorio #IMPLIED Non obbligatorio e non viene assegnato un valore di default "valore" Non è obbligatorio specificare un valore per l'attributo #FIXED "valore" Non è obbligatorio specificare un valore per l'attributo ma se lo si specifica, il valore può essere solo quello prefissato

  45. Uso di identificatori e riferimenti <!ELEMENT biblioteca (autori,libri)> <!ELEMENT autori (autore)*> <!ELEMENT libri (libro)*> <!ELEMENT autore (nome,cognome,dataNascita)> <!ATTLIST autore ident ID #REQUIRED> <!-- … dichiarazione elementi di autore --> <!ELEMENT libro (titolo, scrittoDa, data)> <!ELEMENT scrittoDa (#PCDATA)> <!-- … dichiarazione elementi di libro --> <!ATTLIST scrittoDa autore IDREFS> …

  46. Uso di identificatori e riferimenti <biblioteca> <autori> <autore ident=“001”> … </autore> <autore ident=“002”> … </autore> <autore ident=“003”> … </autore> … </autori> <libri> <libro scrittoDa=“001”> … </libro> <libro scrittoDa=“002 003”> … </libro> <libro scrittoDa=“003 001 002”> z … </libro> … </libri>

  47. Un esempio completo - la DTD DTD agenda.dtd <!ELEMENT agenda (contatto*)> <!ELEMENT contatto (nome, indirizzo+, telefono*, email*,foto?)*> <!ELEMENT nome (#PCDATA)> <!ELEMENT indirizzo (via, numero, citta, cap, provincia?)> <!ELEMENT via (#PCDATA)> <!ELEMENT numero (#PCDATA)> <!ELEMENT citta (#PCDATA)> <!ELEMENT cap (#PCDATA)> <!ELEMENT provincia (#PCDATA)> <!ELEMENT telefono (#PCDATA)> Dati Parsed

  48. Un esempio completo - la DTD … continua <!ATTLIST telefono tipo (casa |ufficio | cellulare)'casa'> <!ELEMENT email (#PCDATA)> <!ELEMENT foto EMPTY> <!ATTLIST foto src CDATA #REQUIRED desc CDATA #IMPLIED> <!ENTITY BO "40100"> <!ENTITY MO "41100"> <!ENTITY RE "42100"> Valore predefinito Elemento vuoto EntitàDichiarate

  49. Un esempio completo - XML Agenda.xml <?XML version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE agenda SYSTEM "agenda.dtd"><agenda> <contatto> <nome>Pinco Pallino</nome> <indirizzo> <via>Via Incognita</via> <numero>10</numero> <citta>Bologna</citta> <cap>&BO;</cap> </indirizzo> …continua Radice DTD associata Richiamo entità della DTD

  50. Un esempio completo - XML … continua <telefono>051-123456</telefono> <telefono tipo="ufficio"> 051-654321</telefono> <email> pinco@pallino.org </email> <foto src="pinco.gif" desc="Una foto di Pinco Pallino"/></contatto> </agenda> Elemento vuoto foto

More Related