98
Linguaggi di markup Linguaggi di markup Marco Mesiti [email protected]

Linguaggi di markup

  • Upload
    maren

  • View
    42

  • Download
    0

Embed Size (px)

DESCRIPTION

Linguaggi di markup. Marco Mesiti [email protected]. Esempio: contatti in rubrica. Laura Papaleo 123.2342323232 [email protected] Franco Tallero Via degli Ulivi 19/19 Genova, 16100 010.28389239 (preferito) 346.92938281 [email protected]. Esempio: address book in XML. - PowerPoint PPT Presentation

Citation preview

Page 1: Linguaggi di markup

Linguaggi di markupLinguaggi di markup

Marco Mesiti [email protected]

Page 2: Linguaggi di markup

Esempio: contatti in rubricaEsempio: contatti in rubrica

Laura [email protected]

Franco TalleroVia degli Ulivi 19/19 Genova, 16100010.28389239 (preferito)[email protected]

Page 3: Linguaggi di markup

Esempio: address book in XMLEsempio: address book in XML<?xml version="1.0"?>

<address-book> <entry> <name>Laura Papaleo </name> <tel> 123.2342323232 </tel> <email href=" [email protected]"/> </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="[email protected] "/> </entry></address-book>

Page 4: Linguaggi di markup

XML Sintassi: ElementoXML 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>

ElementoElemento

Contenuto

Start-tagStart-tag

End-tagEnd-tag

Page 5: Linguaggi di markup

XML Sintassi: Tag (1/2)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><NOME_TAG> Laura Papaleo </NOME_TAG>

Il tag rappresenta il nome dell’elemento

Page 6: Linguaggi di markup

XML:XML:Struttura gerarchica degli elementiStruttura gerarchica degli elementi

LibroLibro

CapitoloCapitolosezionesezione

CapitoloCapitolosezionesezione

librolibro

CapitoloCapitolo CapitoloCapitolo

sezionesezione sezionesezione

Page 7: Linguaggi di markup

Struttura gerarchica degli elementiStruttura gerarchica degli elementi

Ogni elemento Ogni elemento deve essere deve essere

completamente completamente incluso da incluso da

un altro un altro elementoelemento

No!No! LibroLibro

CapitoloCapitolo

CapitoloCapitolosezionesezione

sezionesezione

Page 8: Linguaggi di markup

Contenuto di un ElementoContenuto 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>

Page 9: Linguaggi di markup

Elemento documento Elemento documento (Document Element) (Document Element)

E’ l’elemento più esterno in un documento XML

Viene anche detto elemento radiceelemento radice

Contiene tutti gli elementi del documento esempio:

<libro><libro> … … … … </libro> </libro>

Deve sempre esistere Deve sempre esistere

Page 10: Linguaggi di markup

Elemento documento Elemento documento (Document Element)(Document Element)

Non è possibile Non è possibile avere avere

più elementi a più elementi a livello radicelivello radice CapitoloCapitolo

sezionesezione

CapitoloCapitolosezionesezione

No!No!

Page 11: Linguaggi di markup

Elemento vuoto (Empty Elements)Elemento vuoto (Empty Elements)

E’ un elemento senza contenuto Non ha il tag finaleHa una particolare rappresentazione del Tag

iniziale

Esempio:<foto source=“ciao.gif”/> <foto source=“ciao.gif”/>

<email indirizzo=“[email protected]”/><email indirizzo=“[email protected]”/>

Page 12: Linguaggi di markup

XML: Definire gli attributiXML: Definire gli attributi

Un elemento può avere degli attributi

Gli attributi possono essere pensati come aggettivi che descrivono gli elementi

Ogni attributo ha nomenome e valorevalore

Tutti gli attributi di un elemento devono essere distinti

<AUTHOR <AUTHOR nome_attributo=”valore_attributo"nome_attributo=”valore_attributo"> >

Marco Mesiti Marco Mesiti</AUTHOR> </AUTHOR>

Page 13: Linguaggi di markup

Esempio di elemento con attributiEsempio di elemento con attributi<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”/>

Page 14: Linguaggi di markup

Elementi Vs AttributiElementi Vs Attributi

Un elementoUn elemento, quando: Si richiede di recuperare i

dati velocemente E’ visibile a tutti E’ rilevante per il

significato del documento

Un attributoUn attributo, quando: Esprime una scelta E’ utilizzato dal sistema Non è rilevante per il

significato del documento

Quando è meglio usare elementi o attributi per rappresentare un’informazione?

Sicuramente elementi se si tratta di informazione strutturata

Page 15: Linguaggi di markup

Un documento XMLUn documento XML

Un file XML è un semplice file di testo con tag XML al suo interno

Esso ha una estensione .xml.xml nome_file.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

Page 16: Linguaggi di markup

Un esempio di documento XML (1)Un esempio di documento XML (1)

<?xml version="1.0"?><?xml version="1.0"?><BOOKLIST> <BOOKLIST>

<BOOK><BOOK> <TITLE edition=”2000">XML Tutorial</TITLE><TITLE edition=”2000">XML Tutorial</TITLE>

<AUTHOR>Laura Papaleo</AUTHOR><AUTHOR>Laura Papaleo</AUTHOR></BOOK></BOOK>

……<BOOK><BOOK>

<TITLE edition=”2003" type=”XML"><TITLE edition=”2003" type=”XML">Strutturare le informazioni nel webStrutturare le informazioni nel web

</TITLE></TITLE><AUTHOR>Laura Papaleo</AUTHOR><AUTHOR>Laura Papaleo</AUTHOR><AUTHOR>Franco Tallero</AUTHOR><AUTHOR>Franco Tallero</AUTHOR><AUTHOR>Marco Mesiti</AUTHOR><AUTHOR>Marco Mesiti</AUTHOR>

</BOOK></BOOK></BOOKLIST> </BOOKLIST>

BOOKS.xmlBOOKS.xml

Page 17: Linguaggi di markup

Un esempio di documento XML (2)Un esempio di documento XML (2)<?xml version="1.0"?><?xml version="1.0"?> <Orders> <Orders>

<SalesOrder SONumber="12345"> <SalesOrder SONumber="12345"> <Customer CustNumber="543"> <Customer CustNumber="543"> <CustName>ABC Industries</CustName> <CustName>ABC Industries</CustName> <Street>123 Main St.</Street> <Street>123 Main St.</Street> <City>Chicago</City> <City>Chicago</City> <State>IL</State> <State>IL</State> <PostCode>60609</PostCode><PostCode>60609</PostCode> </Customer> </Customer> <OrderDate>981215</OrderDate> <OrderDate>981215</OrderDate> <Line LineNumber="1"> <Line LineNumber="1"> <Part PartNumber="123"><Part PartNumber="123"> <Description> Turkey wrench: Stainless steel, <Description> Turkey wrench: Stainless steel, one piece construction, lifetime guarantee. one piece construction, lifetime guarantee. </Description> </Description> <Price>9.95</Price> <Price>9.95</Price> </Part> </Part> <Quantity>10</Quantity> <Quantity>10</Quantity> </Line> </Line> </SalesOrder></SalesOrder>

</Orders> </Orders>

ORDERS.xmlORDERS.xml

Page 18: Linguaggi di markup

Un semplice esempio (3)Un semplice esempio (3)

<?xml version="1.0"?><?xml version="1.0"?><Lease><Lease>

<Leasee>ABC Industries </Leasee> <Leasee>ABC Industries </Leasee> agrees to lease the property at agrees to lease the property at <Address> <Address> 123, Main St., Chicago, IL 123, Main St., Chicago, IL </Address> </Address> from from <Lessor> <Lessor> XYZ Properties XYZ Properties </Lessor> </Lessor> for a term of not less than for a term of not less than <LeaseTerm TimeUnit=“Months”> 18 </LeaseTerm> <LeaseTerm TimeUnit=“Months”> 18 </LeaseTerm> at the cost of the at the cost of the <Price Currency=“USD” TimeUnit=“Months”> <Price Currency=“USD” TimeUnit=“Months”> 1000 1000 </Price> </Price>

</Lease></Lease>

LEASE.xmlLEASE.xml

Page 19: Linguaggi di markup

Dichiarazione di documento XML 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"?><?xml version="1.0"?>

Page 20: Linguaggi di markup

Dichiarazione di documento XMLDichiarazione di documento XML

Oltre all’indicazione della versione può essere inserito: il set di caratteri utilizzato attributo encodingencoding il fatto che l’interpretazione del documento dipende

da altri documenti attributo standalonestandalone

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

Questi sono i valori di default. E’ possibile non specificarli

Page 21: Linguaggi di markup

Dichiarazione della DTD del Dichiarazione della DTD del documentodocumento

Prima del root element (l’elemento radice) può essere dichiarata la DTD che verrà utilizzata

Es: <!DOCTYPE Libro SYSTEM “libro.dtd”><!DOCTYPE Libro SYSTEM “libro.dtd”>

Vedremo in seguito come può essere strutturata tale dichiarazione

Page 22: Linguaggi di markup

DTDDTDDocument Type DefinitionDocument Type Definition

Sintassi Di Una DTD

Page 23: Linguaggi di markup

DTD - Document Type DefinitionDTD - 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

Page 24: Linguaggi di markup

Perché è importante usare i DTD?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

Page 25: Linguaggi di markup

DTD - rappresentazione ad alberoDTD - 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

LibroLibro Capitolo +Capitolo +

SezioniSezioni

Par +Par +

Page 26: Linguaggi di markup

Document Type Definition: Elementi 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”

Page 27: Linguaggi di markup

Document Type Definition: Document Type Definition: occorrenza di un sottoelementooccorrenza 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 …)><!ELEMENT libro (… titolo …)>

titolotitolo

Page 28: Linguaggi di markup

Document Type Definition: Document Type Definition: Occorrenza di un sottoelementoOccorrenza 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? …)><!ELEMENT libro (… sottotitolo? …)>

sottotitolosottotitolo

Page 29: Linguaggi di markup

Document Type Definition: Document Type Definition: Occorrenza di un sottoelementoOccorrenza 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+ …)><!ELEMENT libro (… autore+ …)>

autoreautore

Page 30: Linguaggi di markup

DTD - occorrenza di un sottoelementoDTD - 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* …)><!ELEMENT libro (… traduttore* …)>

traduttoretraduttore

Page 31: Linguaggi di markup

DTD - Sequenze di sottoelementiDTD - 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?, …)><!ELEMENT libro (titolo, autore*, sottotitolo?, …)>

Nota: è rilevante l’ordine

titolotitolo sottotitolosottotitoloautoreautore

Page 32: Linguaggi di markup

DTD - Alternative di sottoelementiDTD - Alternative di sottoelementi

Un libro può avere un IBDN oppure un codice

Usando la grammatica della DTD <!ELEMENT libro (… ISBN | codice …)><!ELEMENT libro (… ISBN | codice …)>

ISBNISBN

codicecodice

Page 33: Linguaggi di markup

DTD - RiassumendoDTD - 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, D?)><!ELEMENT A (B | C+)><!ELEMENT A (B | C+)><!ELEMENT A (B, (C | D+)?, E*)><!ELEMENT A (B, (C | D+)?, E*)>

Page 34: Linguaggi di markup

DTD per una ricettaDTD per una ricetta

DTD ricettario.dtdDTD 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>

Page 35: Linguaggi di markup

Dichiarare unDichiarare unelemento non vuoto (1/2)elemento 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.

Page 36: Linguaggi di markup

Dichiarare unDichiarare unelemento non vuoto (2/2)elemento non vuoto (2/2)

<!ELEMENT nome (#PCDATA)>

Il nome è semplicemente una stringa di caratteri,

Eventuali entità presenti nella stringa vengono trasformate nei caratteri corrispondenti

Page 37: Linguaggi di markup

Dichiarazione di un elemento vuoto 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

Page 38: Linguaggi di markup

Dichiarazione di un elemento ANYDichiarazione 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

Page 39: Linguaggi di markup

DichiarazioneDichiarazioneelemento “mixed-content”elemento “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 regoleviene dichiarato una alternativa di sottoelementi il primo sottoelemento deve essere #PCDATAL’alternativa di sottoelementi deve essere

ripetibile

Page 40: Linguaggi di markup

DichiarazioneDichiarazioneelemento “mixed-content”elemento “mixed-content”

Vediamo un esempio:

<!ELEMENT emph (#PCDATA|sub|super)*><!ELEMENT emph (#PCDATA|sub|super)*><!ELEMENT sub (#PCDATA)><!ELEMENT sub (#PCDATA)><!ELEMENT super (#PCDATA)><!ELEMENT super (#PCDATA)>

<emph><emph> H <sub>2</sub> O è l’acqua H <sub>2</sub> O è l’acqua </emph></emph>

Page 41: Linguaggi di markup

Dichiarazione di attributi 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 cellulareil valore di default è 'casa’

Page 42: Linguaggi di markup

Tipi degli attributi (1/2)Tipi degli attributi (1/2)

CDATACDATA Stringhe di caratteri.

IDID nome che occorre unico all'interno dello stesso documento

IDREFIDREF E' un riferimento ad un elemento che ha un attributo di

tipo ID con valore IDREF

IDREFSIDREFS E' una lista di IDREF separati da uno spazio bianco

Page 43: Linguaggi di markup

Tipi degli attributi (2/2)Tipi degli attributi (2/2)

ENTITYENTITYnome di una entità dichiarata

ENTITIESENTITIES E' una lista di ENTITY separati da uno spazio bianco

NMTOKENNMTOKEN E' una stringa di una parola

NMTOKENSNMTOKENS E' una lista di NKTOKEN separati da uno spazio bianco

EnumerazioneEnumerazione E' una lista di nomi come valori che l'attributo può assumereI nomi sono separati da virgola e la lista è racchiusa tra par. tonde

Page 44: Linguaggi di markup

Valori di default per gli attributiValori di default per gli attributi

#REQUIREDREQUIRED Obbligatorio

#IMPLIEDIMPLIED Non obbligatorio e non viene assegnato un valore di default

"valorevalore" Non è obbligatorio specificare un valore per l'attributo

#FIXEDFIXED "valorevalore" Non è obbligatorio specificare un valore per l'attributo ma se

lo si specifica, il valore può essere solo quello prefissato

Page 45: Linguaggi di markup

Uso di identificatori e riferimentiUso di identificatori e riferimenti

<!ELEMENT <!ELEMENT biblioteca (autori,libri)>biblioteca (autori,libri)><!ELEMENT autori (autore)*><!ELEMENT autori (autore)*><!ELEMENT libri (libro)*><!ELEMENT libri (libro)*><!ELEMENT autore (nome,cognome,dataNascita)><!ELEMENT autore (nome,cognome,dataNascita)><!ATTLIST <!ATTLIST autore ident ID #REQUIRED>autore ident ID #REQUIRED>

<!-- … dichiarazione elementi di autore --><!-- … dichiarazione elementi di autore --><!ELEMENT libro (titolo, scrittoDa, data)><!ELEMENT libro (titolo, scrittoDa, data)><!ELEMENT scrittoDa (#PCDATA)><!ELEMENT scrittoDa (#PCDATA)><!-- … dichiarazione elementi di libro --><!-- … dichiarazione elementi di libro --><!ATTLIST <!ATTLIST scrittoDa autore IDREFS>scrittoDa autore IDREFS> … …

Page 46: Linguaggi di markup

Uso di identificatori e riferimentiUso di identificatori e riferimenti

<biblioteca> <biblioteca> <autori> <autori> <autore ident=“001”> … </autore><autore ident=“001”> … </autore> <autore ident=“002”> … </autore><autore ident=“002”> … </autore> <autore ident=“003”> … </autore><autore ident=“003”> … </autore> … … </autori></autori> <libri> <libri> <libro scrittoDa=“001”> … </libro><libro scrittoDa=“001”> … </libro> <libro scrittoDa=“002 003”> … </libro><libro scrittoDa=“002 003”> … </libro> <libro scrittoDa=“003 001 002”> z<libro scrittoDa=“003 001 002”> z … … </libro></libro>

… … </libri></libri>

Page 47: Linguaggi di markup

Un esempio completo - la DTDUn esempio completo - la DTD

DTD agenda.dtdDTD agenda.dtd<!ELEMENT agenda (contatto*)><!ELEMENT agenda (contatto*)><!ELEMENT contatto (nome, indirizzo+, <!ELEMENT contatto (nome, indirizzo+,

telefono*, email*,foto?)*>telefono*, email*,foto?)*><!ELEMENT nome (#PCDATA)><!ELEMENT nome (#PCDATA)><!ELEMENT indirizzo (via, numero, citta, <!ELEMENT indirizzo (via, numero, citta,

cap, provincia?)>cap, provincia?)><!ELEMENT via (#PCDATA)><!ELEMENT via (#PCDATA)><!ELEMENT numero (#PCDATA)><!ELEMENT numero (#PCDATA)><!ELEMENT citta (#PCDATA)> <!ELEMENT citta (#PCDATA)> <!ELEMENT cap (#PCDATA)><!ELEMENT cap (#PCDATA)><!ELEMENT provincia (#PCDATA)><!ELEMENT provincia (#PCDATA)><!ELEMENT telefono<!ELEMENT telefono (#PCDATA)>(#PCDATA)> Dati Dati

ParsedParsed

Page 48: Linguaggi di markup

Un esempio completo - la DTDUn esempio completo - la DTD

… … continuacontinua

<!ATTLIST <!ATTLIST telefono telefono tipo (casa |ufficio tipo (casa |ufficio | cellulare)'casa'>| cellulare)'casa'>

<!ELEMENT <!ELEMENT email (#PCDATA)>email (#PCDATA)><!ELEMENT <!ELEMENT foto foto EMPTY>EMPTY>

<!ATTLIST <!ATTLIST foto src foto src CDATA #REQUIRED desc CDATA #REQUIRED desc CDATA #IMPLIED>CDATA #IMPLIED>

<!ENTITY BO "40100"> <!ENTITY BO "40100"> <!ENTITY MO "41100"> <!ENTITY MO "41100"> <!ENTITY RE "42100"><!ENTITY RE "42100">

Elemento vuotoElemento vuoto

Valore Valore predefinitopredefinito

EntitàEntitàDichiarateDichiarate

Page 49: Linguaggi di markup

Un esempio completo - XMLUn esempio completo - XML

Agenda.xmlAgenda.xml<?XML version="1.0" encoding="ISO-8859-1"?><?XML version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE agenda SYSTEM "agenda.dtd"><!DOCTYPE agenda SYSTEM "agenda.dtd">

<agenda><agenda> <contatto> <contatto> <nome>Pinco Pallino</nome> <nome>Pinco Pallino</nome> <indirizzo> <indirizzo> <via>Via Incognita</via><via>Via Incognita</via><numero>10</numero><numero>10</numero><citta>Bologna</citta><citta>Bologna</citta><cap>&BO;</cap><cap>&BO;</cap> </indirizzo> </indirizzo>

…continua…continua

RadiceRadice DTD associataDTD associata

Richiamo entità Richiamo entità della DTDdella DTD

Page 50: Linguaggi di markup

Un esempio completo - XMLUn esempio completo - XML

… … continuacontinua

<telefono>051-123456</telefono><telefono>051-123456</telefono><telefono tipo="ufficio"><telefono tipo="ufficio">

051-654321</telefono> 051-654321</telefono> <email> [email protected] </email><email> [email protected] </email><foto src="pinco.gif" <foto src="pinco.gif"

desc="Una foto di Pinco Pallino"/> desc="Una foto di Pinco Pallino"/></contatto></contatto>

</agenda></agenda>

Elemento vuoto fotoElemento vuoto foto

Page 51: Linguaggi di markup

Un altro esempioUn altro esempio<!DOCTYPE Orders[<!DOCTYPE Orders[<!ELEMENT Orders(SalesOrder)+><!ELEMENT Orders(SalesOrder)+><!ELEMENT SalesOrder(Customer,OrderDate,Line*)><!ELEMENT SalesOrder(Customer,OrderDate,Line*)><!ELEMENT <!ELEMENT

Customer(CustName,Street,City,State,PostCode,tel*)>Customer(CustName,Street,City,State,PostCode,tel*)><!ELEMENT CustName (#PCDATA)><!ELEMENT CustName (#PCDATA)><!ELEMENT Street (#PCDATA)><!ELEMENT Street (#PCDATA)><!ELEMENT State (#PCDATA)><!ELEMENT State (#PCDATA)><!ELEMENT PostCode (#PCDATA)><!ELEMENT PostCode (#PCDATA)><!ELEMENT tel (#PCDATA)><!ELEMENT tel (#PCDATA)><!ELEMENT OrderDate (#PCDATA)><!ELEMENT OrderDate (#PCDATA)><!ELEMENT Line (Part,Quantity)><!ELEMENT Line (Part,Quantity)><!ELEMENT Part(Description,Price)><!ELEMENT Part(Description,Price)><!ELEMENT Quantity (#PCDATA)><!ELEMENT Quantity (#PCDATA)><!ELEMENT Description (#PCDATA)><!ELEMENT Description (#PCDATA)><!ELEMENT Price (#PCDATA)><!ELEMENT Price (#PCDATA)><!ATTLIST SalesOrder SONumber CDATA #REQUIRED><!ATTLIST SalesOrder SONumber CDATA #REQUIRED><!ATTLIST Customer CustNumer CDATA #REQUIRED><!ATTLIST Customer CustNumer CDATA #REQUIRED><!ATTLIST Line LineNumber CDATA #IMPLIED><!ATTLIST Line LineNumber CDATA #IMPLIED><!ATTLIST Part PartNumber CDATA #REQUIRED><!ATTLIST Part PartNumber CDATA #REQUIRED>

Page 52: Linguaggi di markup

Un altro esempio 2Un altro esempio 2

<!DOCTYPE WorldLawBulletin[<!DOCTYPE WorldLawBulletin[ <!ELEMENT WorldLawBulletin (Law*,BluePageReport?)><!ELEMENT WorldLawBulletin (Law*,BluePageReport?)> <!ELEMENT Law (Topic,Summary)> <!ELEMENT Law (Topic,Summary)> <!ELEMENT Topic (#PCDATA)><!ELEMENT Topic (#PCDATA)> <!ELEMENT Summary ANY> <!ELEMENT Summary ANY> <!ELEMENT BluePageReport (Section+)><!ELEMENT BluePageReport (Section+)> <!ELEMENT Section (Law+)><!ELEMENT Section (Law+)>

<!ATTLIST WorldLawBulletin Date CDATA <!ATTLIST WorldLawBulletin Date CDATA #REQUIRED> #REQUIRED>

<!ATTLIST Law Id ID #REQUIRED <!ATTLIST Law Id ID #REQUIRED Country CDATA #REQUIRED Country CDATA #REQUIRED RelatedLaws IDREFS #IMPLIED>RelatedLaws IDREFS #IMPLIED>

<!ATTLIST Section GeoArea CDATA #REQUIRED><!ATTLIST Section GeoArea CDATA #REQUIRED>]>]>

Page 53: Linguaggi di markup

Un altro esempio 2Un altro esempio 2<WorldLawBulletin Date=“8/8/1999”><WorldLawBulletin Date=“8/8/1999”>

<Law Country=“USA” RelatedLaws = “LK75”/><Law Country=“USA” RelatedLaws = “LK75”/> <Topic>Taxation</Topic> <Summary>...</Summary><Topic>Taxation</Topic> <Summary>...</Summary>

</Law></Law><Law Id=“LK75” Country=“Italy”/><Law Id=“LK75” Country=“Italy”/> <Topic>Import-Export</Topic> <Summary>...</Summary><Topic>Import-Export</Topic> <Summary>...</Summary>

</Law></Law><BluePageReport><BluePageReport> <Section GeoArea=“Europe”><Section GeoArea=“Europe”>

<Law Country=“Germany”/><Law Country=“Germany”/> <Topic>Guns</Topic> <Summary>...</Summary><Topic>Guns</Topic> <Summary>...</Summary>

</Law>...</Law>... </Section></Section> <Section GeoArea=“NorthAmerica”><Section GeoArea=“NorthAmerica”> <Law Country=“USA”/><Law Country=“USA”/> <Topic>Transportation</Topic> <Summary>...</Summary><Topic>Transportation</Topic> <Summary>...</Summary>

</Law> ...</Law> ... </Section></Section></BluePageReport></BluePageReport>

</WorldLawBulletin></WorldLawBulletin>

Page 54: Linguaggi di markup

Struttura fisica di un Struttura fisica di un documento XMLdocumento XML

Le entità

Page 55: Linguaggi di markup

XML: XML: Dichiarazione ed utilizzo di Entità Dichiarazione ed utilizzo di Entità

Abbiamo visto come organizzare logicamente logicamente l’informazione

Al fine di razionalizzare, riusare e rendere modularemodulare l’informazione dal punto di vista fisico, vengono introdotte le entitàentità

Inoltre, le entità vengono utilizzate per rappresentare dati non XML (ad esempio: dati binari) caratteri non standard abbreviazioni per frasi e markup

Generalizzando le entità possono essere viste come delle macromacro

Page 56: Linguaggi di markup

XML: XML: Dichiarazione ed utilizzo di EntitàDichiarazione ed utilizzo di Entità

Le entità risultano utili quando l’informazione:

è utilizzata in posti diversi e la duplicazione può causare errori e spreco di tempo

può essere rappresentata differentemente in sistemi eterogenei

è parte di un documento di grandi dimensioni e per ragioni pratiche è meglio spezzarla in più parti

è di un formato diverso da quello di XML

Page 57: Linguaggi di markup

XML: XML: Definizione di EntitàDefinizione di Entità

EntitàEntitàUnità di informazione identificata da un nome

Entità documento Entità documento (document entity)file utilizzato per rappresentare l’intero documento

L’entità documento, a differenza delle altre entità, non ha nome

L’entità documento può: essere un contenitore di altre entità (entità componenti) contenere direttamente tutto il documento

Page 58: Linguaggi di markup

XML: XML: Dichiarazione ed utilizzo di EntitàDichiarazione ed utilizzo di Entità

Dichiarare entità all'interno di una DTD

<!ENTITY xml "eXtensible Markup Language"><!ENTITY xml "eXtensible Markup Language">

Ogni qual volta il parser incontra l'entità &xml; questa viene sostituita con la stringa associata.

<!ENTITY cap1 SYSTEM ”/book/capitolo1.xml"><!ENTITY cap1 SYSTEM ”/book/capitolo1.xml">

Ogni qual volta il parser incontra l'entità &cap1; al suo posto viene inserito il contenuto del file specificato

Dichiarazione di entità Vs riferimento ad entità

nomenome valorevalore

Page 59: Linguaggi di markup

XML: Nome di un’entitàXML: Nome di un’entità

Il nome di un’entità deve seguire la seguente grammatica

[ L | - | : ]{ L | . | _ | - | : | D }*

dove L è un lettera dell’alfabeto e D un digit

Es: :myEnt, my.Ent12 Il nome è case-sensitive Es: myEnt è diverso da MyEnt

Page 60: Linguaggi di markup

XML: Valore di un’entitàXML: Valore di un’entità

Il valore di un’entità è racchiuso tra“ ” oppure ‘ ’

Esempio“World Wide Web” o ‘World Wide Web’

Si usano ‘ ’ quando all’interno si usano “ ”

Esempio‘Egli disse “Arrivederci” e se ne andò’

Page 61: Linguaggi di markup

XML: Entità built-inXML: Entità built-in

Ogni processore XML ha un piccolo insieme di entità predefinite

Ad esempio:&lt; ‘<’&gt; ‘>’&amp; ‘&’&apos; ‘ ‘ ’&quot; ‘ “ ’

Queste entità sono usate per non creare problemi al processore XML

Page 62: Linguaggi di markup

XML: Entità carattereXML: Entità carattere

Una entità carattere viene introdotta per rappresentare un carattere in un certo set di caratteri

Un riferimento ad entità carattere ha lo stesso formato di un riferimento ad entità testuale

Viene aggiunto un # tra & e il nome dell’entità Es: &#60 è uguale a ‘<’ in ASCII; &nbsp = blank_space

Page 63: Linguaggi di markup

XML: Entità testuali interneXML: Entità testuali interne

DTD

<!ENTITY WWW "World Wide Web"><!ENTITY WWW "World Wide Web">

XML

<p>We all use the &WWW;.</p><p>We all use the &WWW;.</p>

<p>We all use the World Wide Web.</p><p>We all use the World Wide Web.</p>

Internal Text Entity DeclarationInternal Text Entity Declaration

Logically equivalent to Logically equivalent to actually appearingactually appearing

Entity ReferenceEntity Reference

Page 64: Linguaggi di markup

External Text Entities External Text Entities

Gli elementi logiciGli elementi logicipossono esserepossono essere

divisidivisiin entità fisichein entità fisiche

distintedistinte

Mylife.xmlMylife.xml

DTDDTD……<mylife><mylife>Chap1.xmlChap1.xml

Chap2.xmlChap2.xml

</mylife></mylife>

<teen>yada yada</teen><teen>yada yada</teen>

<adult>… … … … </adult><adult>… … … … </adult>

Page 65: Linguaggi di markup

External Text EntitiesExternal Text Entities

DTD

<!ENTITY chap1 SYSTEM "http://...chap1.xml"> <!ENTITY chap1 SYSTEM "http://...chap1.xml">

XML

<mylife> &chap1; &chap2;</mylife><mylife> &chap1; &chap2;</mylife>

<mylife> <mylife>

<teen>yada yada</teen> <teen>yada yada</teen> <adult> blah blah</adult><adult> blah blah</adult>

</mylife></mylife>

External Text Entity DeclarationExternal Text Entity Declaration

Entity ReferenceEntity Reference

Logically equivalent toLogically equivalent toinlining file contentsinlining file contents

URLURL

Page 66: Linguaggi di markup

Entità: Unparsed (& "Binary")Entità: Unparsed (& "Binary")

DTD<!ENTITY fusion SYSTEM "http://... <!ENTITY fusion SYSTEM "http://... fusion.ps" NDATA ps>fusion.ps" NDATA ps>

<!attlist fullPaper source ENTITY #REQUIRED><!attlist fullPaper source ENTITY #REQUIRED>

<!NOTATION ps SYSTEM "ghostview.exe"><!NOTATION ps SYSTEM "ghostview.exe">

XML<fullPaper source="fusion"/><fullPaper source="fusion"/>

Page 67: Linguaggi di markup

XML Entità:XML Entità:Dichiarazione di notazioni Dichiarazione di notazioni

<!NOTATION GIF SYSTEM "GIF">

Quando ci si riferisce a dati binari esterni, occorre dichiarare una notation che identifichi il tipo di dati a cui ci si riferisce

L'applicazione che riceve l'informazione di notazione provvederà ad utilizzarla per interpretare correttamente l'entità esterna

Page 68: Linguaggi di markup

XML Entità:XML Entità:Dichiarazione Entità ParametricheDichiarazione Entità Parametriche

Vengono espanse e interpretate nella DTD e non espanse e passate all’applicazione

Presenti solo nella DTD con % davanti

<!ENTITY % indr_corto ‘<!ELEMENT indirizzo (via, <!ENTITY % indr_corto ‘<!ELEMENT indirizzo (via, citta)>’>citta)>’>

<!ENTITY % indr_lungo ‘<!ELEMENT indirizzo (via, <!ENTITY % indr_lungo ‘<!ELEMENT indirizzo (via, numero, citta, cap, provincia)>’>numero, citta, cap, provincia)>’>

poi utilizzo... <!ELEMENT contatto (nome, cognome,%indr_corto;)> …<!ELEMENT contatto (nome, cognome,%indr_corto;)> …

Page 69: Linguaggi di markup

XML Entità:XML Entità:Esempio di entità parametricheEsempio di entità parametriche

<!ENTITY % alarmStatusType "UnderRepair | Critical | … "><!ENTITY % alarmStatusType "UnderRepair | Critical | … ">

<!ENTITY % availabilityStatusType "InTest | Failed | <!ENTITY % availabilityStatusType "InTest | Failed | PowerOff | OffLine | … ">PowerOff | OffLine | … ">

… … … … <!ENTITY % statusAttributes <!ENTITY % statusAttributes "alarmStatus (%alarmStatusType;) #REQUIRED "alarmStatus (%alarmStatusType;) #REQUIRED

availabilityStatus (%availabilityStatusType;) #REQUIREDavailabilityStatus (%availabilityStatusType;) #REQUIRED

controlStatus (%controlStatusType;) #REQUIREDcontrolStatus (%controlStatusType;) #REQUIRED

standByStatus (%standByStatusType;) #REQUIREDstandByStatus (%standByStatusType;) #REQUIRED

unknownStatus (%boolean;) #REQUIRED">unknownStatus (%boolean;) #REQUIRED">

Common.dtdCommon.dtd

Page 70: Linguaggi di markup

Character SetCharacter Set

Page 71: Linguaggi di markup

Set di caratteriSet di caratteri

I markup di XML e il contenuto dei documenti possono essere riconosciuti solo quando i caratteri utilizzati conformano a uno schema di codifica standard

Gli standard più importanti: ASCII ISO 8859 UNICODE ISO 10646

Page 72: Linguaggi di markup

Documento XML: I CaratteriDocumento XML: I Caratteri

Un documento XML è una sequenza di caratteri (characters) che descrivono:Contenuto del documentoTags

Le macchine “non capiscono” i caratteri

Per memorizzare i caratteri si usano codici

TT 8484

Page 73: Linguaggi di markup

Character SetCharacter Set

Character setinsieme di corrispondenze numero-carattere

Fontinsieme di corrispondenze

numero-“formato carattere”

Ci possono essere dei problemi quando si passa da una macchina all’altra perché cambia il legame numero-carattere

Page 74: Linguaggi di markup

ASCII: American Standard ASCII: American Standard Code for Information InterchangeCode for Information Interchange

Standard per un set di caratteri

Assegna un significato comune per i caratteri utilizzati

Esempioin ASCII il numero 84 rappresenta la ‘T’

ASCII definisce un valore per solo 127 caratteri (rappresentazione a 7-bit)

Page 75: Linguaggi di markup

American Standard American Standard Code for Information InterchangeCode for Information Interchange

L’ottavo bit viene lasciato come check-bit

ASCII è uno standard ISO/IEC 646

Problema: Come faccio a rappresentare altri caratteri, oltre ai 127?

Page 76: Linguaggi di markup

Extended ASCIIExtended ASCII

Nei sistemi più moderni non è necessario un bit di controllo

rappresentazione a 8 bit (255 caratteri)

Nuovo problemanon c’era accordo su quali caratteri rappresentare con i “nuovi” 128 numeri

Esempio:

Apple: è – 142MS-DOS: è – 130

Page 77: Linguaggi di markup

Extended ASCIIExtended ASCII

Questo problema è stato affrontato da ISO 8859 che definisce (tra gli altri) un character set standard per l’alfabeto latino (chiamato 8859/1)

Questo standard è utilizzato da Web browsers, Microsoft Windows, Sun OS UNIX

Compatibile con ISO 646. L’ottavo bit è 0 per i primi 127 caratteri

Page 78: Linguaggi di markup

Extended ASCIIExtended ASCII

‘/1’ identifica solo una versione di 8859

Ci sono però altre varianti per coprire i requisiti di altre lingue

Esempio:

ISO 8859/6 ASCII + ArabicISO 8859/7 ASCII + Greco moderno

Problema:Problema:Si riescono a rappresentare ancora “pochi caratteri”

Page 79: Linguaggi di markup

UNICODE e ISO/IEC 10646UNICODE e ISO/IEC 10646

Per affrontare i problemi dei precedenti standard si è pensato di usare più di un byte per codificare ogni carattere

Nascono così due nuovi standardnuovi standard:

UNICODE

ISO/IEC 10646

Page 80: Linguaggi di markup

Standard UNICODE: CaratteristicheStandard UNICODE: Caratteristiche

Versione attuale 2.1

Primo tentativo ad usare 2 byte per rappresentare caratteri (65.535 caratteri)

...ma continua ad avere problemi per rappresentare il cinese

viene introdotto ISO/IEC 10646: usa fino a 4 byte (oltre 2 milioni di caratteri)

XML ha adottato lo standard ISO 10646 come formato di codifica dei caratteri

Page 81: Linguaggi di markup

ISO/IEC 10646ISO/IEC 10646

ISO 10646 è formato da un insieme di schemi di codifica:

UCS (Universal Character Set)

BMP (Basic Multilanguage Plane)

UTF (UCS Trasformation Format)

UTF-8

UTF-16

SchemaSchemafissofisso

SchemaSchemavariabilevariabile

Page 82: Linguaggi di markup

Dichiarazione set di caratteri in XMLDichiarazione set di caratteri in XML

Nella dichiarazione di “documento XML”

<?xml ... encoding=“UTF-8” ... ?>

Questo è il formato di default (questo attributo non è obbligatorio)

Curiositàsi assume che il formato di un documento è XML se i primi 4 byte del file sono

‘3C 3F 78 6D’ (corrispondono a ‘<?xm’)

Page 83: Linguaggi di markup

Dichiarazione set di caratteri in XMLDichiarazione set di caratteri in XML

Si richiede la dichiarazione della codifica del documento per gli standard diversi da UTF-8 e UTF-16

EsempioPer dichiarare ISO 8859 occorre:

<?xml ... encoding=“ISO-8859-1” ... ?><?xml ... encoding=“ISO-8859-1” ... ?>

Page 84: Linguaggi di markup

Riferimenti per gli standard di codificaRiferimenti per gli standard di codifica

ISO (International Organization for Standardization). ISO/IEC 10646-1993 (E). Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Geneva]: International Organization for Standardization, 1993 (plus amendments AM 1 through AM 7). ISO/IEC 10646-2000

ISO (International Organization for Standardization). ISO/IEC 10646-1:2000. Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Geneva]: International Organization for Standardization, 2000. Unicode

The Unicode Consortium. The Unicode Standard, Version 2.0. Reading, Mass.: Addison-Wesley Developers Press, 1996. Unicode3

The Unicode Consortium. The Unicode Standard, Version 3.0. Reading, Mass.: Addison-Wesley Developers Press, 2000. ISBN 0-201-61633-5.

Page 85: Linguaggi di markup

Documenti well-formedDocumenti well-formede documenti validie documenti validi

Page 86: Linguaggi di markup

Documento XML ben formato (1/2)Documento XML ben formato (1/2)

Presenza “elemento radice”cioè un elemento che contiene tutti gli elementi

del documento

Bilanciamento dei marcatoriAd ogni marcatore di apertura deve

corrisponderne uno di chiusura a meno di un elemento vuoto --> in questo caso <tagvuoto/>

Valori degli attributi tra virgolette<img src="image.gif" width="50" height="40"

border="0"/>

Page 87: Linguaggi di markup

Documento XML ben formato (2/2)Documento XML ben formato (2/2)

Uso di entità dichiarate L'utilizzo di entità è consentito solo previa

dichiarazione delle stesse all'inizio del documento XML o nella DTD

Al posto dei caratteri speciali &, <, >, ', ", devono essere usate le entità interne predefinite

&amp; &lt; &gt; &apos; &quot;

Tutti gli altri caratteri speciali devono essere dichiarati prima di poter essere usati

Page 88: Linguaggi di markup

Un esempio SI!Un esempio SI!

<?XML version="1.0"?><?XML version="1.0"?><!DOCTYPE ricettario<!DOCTYPE ricettario[[

<!ENTITY g "grammi"><!ENTITY g "grammi">]>]>

<ricettario><ricettario><ricetta numero="1"><ricetta numero="1">

<titolo>...</titolo><titolo>...</titolo><ingred>200 &g; di ... </ingred><ingred>200 &g; di ... </ingred><ingred>...</ingred><ingred>...</ingred><passo numero="1">...</passo><passo numero="1">...</passo><passo numero="2">...</passo><passo numero="2">...</passo>

</ricetta></ricetta></ricettario></ricettario>

Page 89: Linguaggi di markup

Un esempio NO!Un esempio NO!

<?XML version="1.0"?><?XML version="1.0"?><!DOCTYPE ricettario SYSTEM “ricettario.dtd”><!DOCTYPE ricettario SYSTEM “ricettario.dtd”>

<ricettario><ricettario><ricetta numero="1"><ricetta numero="1">

<titolo>...<titolo>... <ingred>200 &g; di ... </ingred> <ingred>200 &g; di ... </ingred> <ingred>...</ingred> <ingred>...</ingred> <passo numero=1>...</passo> <passo numero=1>...</passo> <passo numero=2>...</passo> <passo numero=2>...</passo>

</ricetta></ricetta></ricettario></ricettario>

Tag non Tag non chiusochiuso

Entità speciale Entità speciale non dichiaratanon dichiarata

Valori non tra Valori non tra virgolettevirgolette

Page 90: Linguaggi di markup

Documento XML ValidoDocumento XML Valido

Un documento XML è valido se

E’ ben formato

Rispetta una struttura descritta in una Document Type Definition

I documenti XML devono essere validi nel caso di strutturazione di documenti di una certa importanza

Esempio: in una azienda dove è fondamentale mantenere una stessa struttura

Page 91: Linguaggi di markup

Document Type Definitions (DTDs)Document Type Definitions (DTDs)

Quando un documento XML viene processato, esso viene confrontato con la DTD associata (se ce ne è una)

Questo confronto è un processo che viene definito validazione e viene attuato dal parser

Un parser è un software che fa un check per assicurarsi che il documento XML segua una particolare sintassi

Page 92: Linguaggi di markup

Parser per XMLParser per XML

Un non-validating parsernon-validating parser controlla che un documento segua le regole di sintassi XML costruisce un albero dai TAG del documento

Un validatingvalidating parserparser controlla la sintassi corretta del documento costruisce l'albero dei tag confronta l'uso dei tag nel documento per essere

conforme alle regole della DTD

la DTD è necessaria solo nel caso in cui si voglia creare un documento XML valido

Page 93: Linguaggi di markup

NamespaceNamespace

Page 94: Linguaggi di markup

XML:XML:Namespace (Namespace (Raccom.Raccom. W3C 1999) W3C 1999)

Attraverso i Namespace è possibile dichiarare un insieme di nomi il cui significato non è ambiguo, cioè tutti sono d’accordo sul loro significato

i Namespace permettono di distinguere 2 elementi con stesso nome, ma con significato diverso

Un Namespace XML è una collezione di nomi identificati da un URL

vengono usati nel doc. XML come nomi di elementi e di attributi

Page 95: Linguaggi di markup

XML: NamespaceXML: Namespace

Identificare i namespaces che verranno usati

Identificare dove i tag che hanno bisogno di namespace sono posizionati

Il tag lo si fa precedere dal namespace relativo

Il nome di un elemento/attributo è composto da 2 parti: prefix:name

Page 96: Linguaggi di markup

Dichiarare e usare i NamespacesDichiarare e usare i Namespaces

A livello di documento

<document xmlns:name_sp=“fixed_URL”><document xmlns:name_sp=“fixed_URL”><name_sp:tag_nm> content </tag_nm><name_sp:tag_nm> content </tag_nm>

<Info><Info><person><person><name>Rosalie Panelli</name><name>Rosalie Panelli</name><address>33 Terry Dr.</address><address>33 Terry Dr.</address></person></person><webSite><webSite><name>XML Italia</name><name>XML Italia</name><address>http://www.xml.it</address><address>http://www.xml.it</address></webSite></webSite>

</Info></Info>

ambiguitàambiguità

Page 97: Linguaggi di markup

Dichiarare e usare i NamespacesDichiarare e usare i NamespacesSoluzione all’esempioSoluzione all’esempio

<Info><Info><person xmlns:person=“http://namespaces.xml.it/person”><person xmlns:person=“http://namespaces.xml.it/person”>

<person:name>Rosalie Panelli</person:name><person:name>Rosalie Panelli</person:name><person:address>33 Terry Dr.</person:address><person:address>33 Terry Dr.</person:address>

</person></person><webSite <webSite xmlns:webSite=“http://namespaces.xml.it/webSite”> xmlns:webSite=“http://namespaces.xml.it/webSite”>

<webSite:name> <webSite:name> XML Italia XML Italia </webSite:name> </webSite:name>

<webSite:address><webSite:address> http://www.xml.ithttp://www.xml.it

</webSite:address> </webSite:address></webSite></webSite>

</Info></Info>

Page 98: Linguaggi di markup

Dichiarare e usare Dichiarare e usare i Namespaces all’interno di DTDi Namespaces all’interno di DTD

Il namspace può essere dichiarato a livello di DTD

Tutti i documenti che conformano con il DTD usano tale namespace<!ELEMENT person <!ELEMENT person (person:name, person:address)> (person:name, person:address)>

<!ATTLIST person xmlns:person CDATA #FIXED <!ATTLIST person xmlns:person CDATA #FIXED “http://namespaces.xml.it/person”>“http://namespaces.xml.it/person”>

<!ELEMENT person:name (#PCDATA)><!ELEMENT person:name (#PCDATA)><!ELEMENT person:address (#PCDATA)><!ELEMENT person:address (#PCDATA)>