21
Namespaces Tecnologie di Internet Dott. Nicola Dragoni XML Namespaces XML Namespaces Problema: conflitto di nomi Soluzione: Namespaces Namespaces in XML RIASSUNTO DELLE PUNTATE PRECEDENTI Perchè esiste XML e le sue principali differenze con HTML Principali caratteristiche e benefici di XML Sintassi di XML (elementi , entità (tag), attributi ) Documento XML ben formato e parser XML Visualizzazione di un file XML (ad esempio con un browser) senza foglio di stile

XML Namespaces

  • Upload
    maia

  • View
    54

  • Download
    0

Embed Size (px)

DESCRIPTION

XML Namespaces. RIASSUNTO DELLE PUNTATE PRECEDENTI Perchè esiste XML e le sue principali differenze con HTML Principali caratteristiche e benefici di XML Sintassi di XML ( elementi , entità (tag), attributi ) Documento XML ben formato e parser XML - PowerPoint PPT Presentation

Citation preview

Page 1: XML Namespaces

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

XML NamespacesXML Namespaces

Problema: conflitto di nomi Soluzione: Namespaces Namespaces in XML

RIASSUNTO DELLE PUNTATE PRECEDENTI

Perchè esiste XML e le sue principali differenze con HTML

Principali caratteristiche e benefici di XML

Sintassi di XML (elementi, entità (tag), attributi)

Documento XML ben formato e parser XML

Visualizzazione di un file XML (ad esempio con un browser)

senza foglio di stile

RIASSUNTO DELLE PUNTATE PRECEDENTI

Perchè esiste XML e le sue principali differenze con HTML

Principali caratteristiche e benefici di XML

Sintassi di XML (elementi, entità (tag), attributi)

Documento XML ben formato e parser XML

Visualizzazione di un file XML (ad esempio con un browser)

senza foglio di stile

Page 2: XML Namespaces

2

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

Conflitto di nomiConflitto di nomi

Sulla base di quanto visto finora sembra che la produzione di documenti XML lasci molto spazio al libero arbitrio, in particolare se pensiamo ai nomi che si possono assegnare ai tag e agli attributi.

In effetti, a patto che si rispettino le regole viste nei lucidi precedenti, i nomi dei tag e degli attributi li possiamo davvero inventare a nostro piacere!Nasce quindi un problema: cosa succede se inventiamo dei nomi a cui ha già pensato qualcun altro?

CONFLITTO DI NOMI!!!(elementi semanticamente differenti con lo stesso nome)

Page 3: XML Namespaces

3

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

Conflitto di nomi: esempioConflitto di nomi: esempio

<?xml version=“1.0”?><Prodotto>

<Codice>PP2305</Codice><Prezzo Valuta=“Euro”>347</Prezzo>

</Prodotto>

<?xml version=“1.0”?><Cliente>

<Codice>GC1234</Codice><Nome>Giulio</Nome><Cognome>Rossi</Cognome>

</Cliente>

Rappresenta un codice di un prodotto.

Rappresenta un codice di un cliente.

Page 4: XML Namespaces

4

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

Soluzione: NamespacesSoluzione: Namespaces• Per Namespace in generale si intende un insieme di parole e quindi di nomi. Nel caso dell’XML, per Namespace si intende l’insieme delle parole chiave che si utilizzano per denominare i tag e gli attributi.

IDEA: se nel momento in cui produciamo un documento XML associamo le parole chiave a un Namespace, allora possiamo evitare confusione e conflitti!

• Esempio: ogni volta che dobbiamo parlare di un cliente, dobbiamo indicare che stiamo utilizzando le parole chiave che per noi riguardano la descrizione di un cliente.

• Quindi il problema di rendere distinguibili le parole chiave si sposta alla sola distinzione dei Namespace a cui le parole appartengono.

Page 5: XML Namespaces

5

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

giornalismoscienza

grammaticaprodotti

<articolo>A Relational Model of Data for Large Shared Data Banks </articolo>

<articolo>La Ferrari trionfa ancora!</articolo>

<articolo>Aspirapolvere WS-02</articolo>

<articolo>Un</articolo>

Soluzione: Namespaces Soluzione: Namespaces (1)(1)

Page 6: XML Namespaces

6

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

<?xml version="1.0"?><notizia><articolo>La Ferrari trionfa ancora!</articolo>Grazie al nuovo <articolo>alettone</articolo> descritto in <articolo>Improving F2003-GA performance</articolo>la rossa…</notizia>

giornalismo scienza

prodotti

Soluzione: Namespaces Soluzione: Namespaces (2)(2)

Page 7: XML Namespaces

7

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

NamespacesNamespacesCome rendere unico un Namespace?Come rendere unico un Namespace?

Tramite il suo nome! E’ sufficiente assegnare un nome unico e privo di ambiguità alla nostra famiglia di parole chiave per rendere riconoscibili anche le sue parole.

Tramite il suo nome! E’ sufficiente assegnare un nome unico e privo di ambiguità alla nostra famiglia di parole chiave per rendere riconoscibili anche le sue parole.

• Il gruppo di lavoro del W3C che ha elaborato i Namespace si è preoccupato di definire come questi debbano essere utilizzati nei documenti ed ha adottato come tecnica di denominazione quella degli URI (Uniform Resource Identifier).

Page 8: XML Namespaces

8

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

URIs in XML Namespaces URIs in XML Namespaces (1)(1)

• Un URI può avere la forma di un URL (Uniform Resource Locator) o URN (Uniform Resource Name)

• Un URI viene utilizzato per identificare univocamente un Namespace

• Per essere sicuri di identificare in maniera unica un Namespace si preferisce usare gli URLs

Nota importante: l’uso di un URL potrebbe confondere perchè sembra un indirizzo Web, ma non è così! Il processore XML NON va a controllare questo indirizzo!! Infatti, in molti casi, l’URL è un indirizzo fittizio e non c’è nessun documento all’indirizzo Web referenziato dall’URL.

L’URL serve solamente come identificatore unico per un NamespaceL’URL serve solamente come identificatore unico per un Namespace

Page 9: XML Namespaces

9

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

URIs in XML Namespaces URIs in XML Namespaces (2)(2)

La ragione principale per la quale vengono utilizzati gli URLs come URIs per i Namespaces è che gli URLs sono unici!

Molti autori di documenti XML solitamente posseggono nomi di domini per i quali hanno diritti esclusivi. Questo significa che costruendo URLs fittizi basati su questi nomi di domini, gli autori possono garantire che i loro identificatori di Namespace saranno unici.

Gli URIs devono essere unici per assicurare che nessuna dichiarazione abbia lo stesso URI.

Page 10: XML Namespaces

10

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

Utilizzare i Namespaces Utilizzare i Namespaces (1)(1)

http://www.giornalismo.it/schema

In XML un namespace viene identificato da un URI (URL o URN).

In XML un namespace viene identificato da un URI (URL o URN).

Per brevità e comodità, questo URI può essere associato a un nome più breve (alias o prefisso) per poi utilizzarlo all’interno del documento.

Per brevità e comodità, questo URI può essere associato a un nome più breve (alias o prefisso) per poi utilizzarlo all’interno del documento.

http://www.giornalismo.it/schemanews

Page 11: XML Namespaces

11

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

Utilizzare i Namespaces Utilizzare i Namespaces (2)(2)

Infine, il nome che si riferisce al namespace viene associato agli elementi (o attributi) che si vuole caratterizzare.

Infine, il nome che si riferisce al namespace viene associato agli elementi (o attributi) che si vuole caratterizzare.

http://www.giornalismo.it/schema

news : articolo

Page 12: XML Namespaces

12

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

Namespaces e XML Namespaces e XML (1)(1)

In XML un namespace viene identificato da un URI.In XML un namespace viene identificato da un URI.

<?xml version=“1.0”?><notizia xmlns='http://www.giornalismo.it/schema'> <articolo>…</articolo></notizia>

L’attributo xmlns indica all’intero documento che qualsiasi tag o attributo dovrà essere ricondotto al Namespace che ha nome http://www.giornalismo.it/schema (salvo che non vi siano indicazioni diverse su tag a livello di profondità maggiore).

Page 13: XML Namespaces

13

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

<?xml version=“1.0”?><notizia xmlns:news='http://www.giornalismo.it/schema'> <articolo>…</articolo></notizia>

Per brevità e comodità, questo URI può essere associato a un nome più breve (alias o prefisso) per poi utilizzarlo all’interno del documento.

Per brevità e comodità, questo URI può essere associato a un nome più breve (alias o prefisso) per poi utilizzarlo all’interno del documento.

Namespaces e XML Namespaces e XML (2)(2)

Page 14: XML Namespaces

14

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

<?xml version=“1.0”?><notizia xmlns:news=‘http://www.giornalismo.it/schema’ xmlns:sport=‘http://www.giornalismo.it/sport’> <news:articolo>…</news:articolo> <sport:risultato>…</sport:risultato></notizia>

Namespaces e XML Namespaces e XML (3)(3)

Infine, il nome che si riferisce al namespace viene associato agli elementi (o attributi) che si vuole caratterizzare.

Infine, il nome che si riferisce al namespace viene associato agli elementi (o attributi) che si vuole caratterizzare.

Ogni tag o attributo che ha davanti il nome news: fa parte del Namespace indicato con la sintassi xmlns:news, mentre qualsiasi tag o attributo preceduto da sport: è da riferire a xmlns:sport.

Page 15: XML Namespaces

15

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

Dichiarazioni di NamespacesDichiarazioni di Namespaces

<doc xmlns=“http://www.cs.unibo.it/articoli” xmlns:lib=“http://libri.org”> ... </doc>

Abbiamo visto due modi per dichiarare un Namespace:

1) Dichiarazione di default Namespace: si usa l’attributo xmlns.

2) Dichiarazione di Namespace con alias (o prefisso): si usa l’attributo xmlns seguito da : e da un alias che sarà poi utilizzato come prefisso del nome di tag o attributo.

<doc xmlns=“http://www.cs.unibo.it/articoli”> ... </doc>

Page 16: XML Namespaces

16

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

EsempioEsempio<?xml version=“1.0”?><Ordine xmlns=“http://www.xmltascabile.it/NS/Ordine”

xmlns:prodotto=“http://www.xmltascabile.it/NS/Prodotto” xmlns:cliente=“http://www.xmltascabile.it/NS/Cliente”>

<prodotto:Prodotto><prodotto:Codice>PP2305</prodotto:Codice><prodotto:Prezzo Valuta=“Euro”>347</prodotto:Prezzo>

</prodotto:Prodotto><cliente:Cliente>

<cliente:Codice>GC1234</cliente:Codice><cliente:Nome>Giulio</cliente:Nome><cliente:Cognome>Rossi</cliente:Cognome>

</cliente:Cliente></Ordine>

Page 17: XML Namespaces

17

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

Visibilità dei Namespaces Visibilità dei Namespaces (1)(1)

Il Namespace di default si applica:

• All’elemento in cui è dichiarato, se non c’è una associazione esplicita con altro Namespace.

• Agli elementi discendenti, se non ci sono associazioni esplicite con altri Namespace.

<doc xmlns=“http://www.cs.unibo.it/articoli” xmlns:lib=“http://libri.org”> <titolo>Guida a WinMX</titolo> <lib:autori lib:id-gruppo=“g03”> <autore id=“001”>Pinco Palla</autore> </lib:autori> </doc>

Page 18: XML Namespaces

18

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

Il Namespace con alias si applica:

• Agli elementi discendenti (compreso sè stesso), ove sia presente il prefisso.

• Agli attributi di elementi discendenti (compresi i propri), ove sia presente il prefisso.

<doc xmlns=“http://www.cs.unibo.it/articoli” xmlns:lib=“http://libri.org”> <titolo>Guida a WinMX</titolo> <lib:autori lib:id-gruppo=“g03”> <autore id=“001”>Pinco Palla</autore> </lib:autori> </doc>

Visibilità dei Namespaces Visibilità dei Namespaces (2)(2)

Page 19: XML Namespaces

19

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

EsempioEsempio<?xml version=“1.0”?><!-- Uso dei namespace -->

<directory xmlns:text = “urn:deitel:textInfo” xmlns:image = “urn:deitel:imageInfo”><text:file filename = “book.xml”>

<text:description> Un libro ...</text:description></text:file><image:file filename = “funny.jpg”>

<image:description> Una figura ...</image:description><image:size width = “200” height = “100” />

</image:file></directory>

Page 20: XML Namespaces

20

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

OsservazioneOsservazione

E’ sempre una buona idea assegnare Namespaces ai propri documenti XML! Anche se apparentemente non ci sono conflitti di nomi all’interno dei vostri documenti (o con altri documenti), un altro autore potrebbe in futuro aggiungere o cambiare elementi in un proprio documento XML. Queste modifiche potrebbero creare conflitti di nomi che inizialmente non erano presenti nei vostri documenti.

Page 21: XML Namespaces

21

NamespacesTecnologie di Internet

Dott. Nicola Dragoni

NamespacesNamespacesSommarioSommario

In questa lezione abbiamo appreso:• il problema del “conflitto dei nomi”• la sua soluzione: utilizzo di Namespaces• utilizzare i Namespaces in XML• visibilità dei Namespaces in documenti XML

Passi successivi:la prossima lezione sarà dedicata al Document Type Definition (DTD).