Tecnologie di Internet
Namespaces
RIASSUNTO DELLE PUNTATE PRECEDENTI
 Perchè esiste XML e le sue principali differenze con HTML
XML Namespaces
 Principali caratteristiche e benefici di XML
 Sintassi di
(elementi,conflitto
entità (tag),di
attributi)
XML
Problema:
nomi
 Documento XML ben formato e parser XML

 Soluzione: Namespaces
Visualizzazione di un file XML (ad esempio con un browser)
 Namespaces in XML
senza foglio di stile
Dott. Nicola Dragoni
Tecnologie di Internet
Namespaces
Conflitto 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)
Dott. Nicola Dragoni
2
Tecnologie di Internet
Namespaces
Conflitto di nomi: esempio
<?xml version=“1.0”?>
<Prodotto>
<Codice>PP2305</Codice>
<Prezzo Valuta=“Euro”>347</Prezzo>
</Prodotto>
Rappresenta un codice
di un prodotto.
<?xml version=“1.0”?>
<Cliente>
<Codice>GC1234</Codice>
<Nome>Giulio</Nome>
<Cognome>Rossi</Cognome>
</Cliente>
Rappresenta un codice
di un cliente.
Dott. Nicola Dragoni
3
Tecnologie di Internet
Namespaces
Soluzione: 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.
Dott. Nicola Dragoni
4
Tecnologie di Internet
Namespaces
Soluzione: Namespaces (1)
scienza
giornalismo
grammatica
<articolo>
La Ferrari trionfa ancora!
</articolo>
<articolo>
Un
</articolo>
prodotti
<articolo>
Aspirapolvere WS-02
</articolo>
<articolo>
A Relational Model of Data for Large Shared Data Banks
</articolo>
Dott. Nicola Dragoni
5
Tecnologie di Internet
Namespaces
Soluzione: Namespaces (2)
giornalismo
scienza
prodotti
<?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>
Dott. Nicola Dragoni
6
Tecnologie di Internet
Namespaces
Namespaces
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.
• 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).
Dott. Nicola Dragoni
7
Tecnologie di Internet
Namespaces
URIs in XML Namespaces (1)
• Un URI viene utilizzato per identificare univocamente un Namespace
• Un URI può avere la forma di un URL (Uniform Resource Locator) o
URN (Uniform Resource Name)
• 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 Namespace
Dott. Nicola Dragoni
8
Tecnologie di Internet
Namespaces
URIs in XML Namespaces (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.
Dott. Nicola Dragoni
9
Tecnologie di Internet
Namespaces
Utilizzare i Namespaces (1)
In XML un namespace viene identificato da un URI (URL o
URN).
http://www.giornalismo.it/schema
Per brevità e comodità, questo URI può essere associato a un
nome più breve (alias o prefisso) per poi utilizzarlo all’interno
del documento.
news
http://www.giornalismo.it/schema
Dott. Nicola Dragoni
10
Tecnologie di Internet
Namespaces
Utilizzare i Namespaces (2)
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
Dott. Nicola Dragoni
11
Tecnologie di Internet
Namespaces
Namespaces e XML (1)
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).
Dott. Nicola Dragoni
12
Tecnologie di Internet
Namespaces
Namespaces e XML (2)
Per brevità e comodità, questo URI può essere associato a un
nome più breve (alias o prefisso) per poi utilizzarlo all’interno
del documento.
<?xml version=“1.0”?>
<notizia xmlns:news='http://www.giornalismo.it/schema'>
<articolo>…</articolo>
</notizia>
Dott. Nicola Dragoni
13
Tecnologie di Internet
Namespaces
Namespaces e XML (3)
Infine, il nome che si riferisce al namespace viene associato
agli elementi (o attributi) che si vuole caratterizzare.
<?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>
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.
Dott. Nicola Dragoni
14
Tecnologie di Internet
Namespaces
Dichiarazioni di Namespaces
Abbiamo visto due modi per dichiarare un Namespace:
1) Dichiarazione di default Namespace: si usa l’attributo xmlns.
<doc xmlns=“http://www.cs.unibo.it/articoli”>
...
</doc>
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” xmlns:lib=“http://libri.org”>
...
</doc>
Dott. Nicola Dragoni
15
Tecnologie di Internet
Namespaces
Esempio
<?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>
Dott. Nicola Dragoni
16
Tecnologie di Internet
Namespaces
Visibilità dei Namespaces (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>
Dott. Nicola Dragoni
17
Tecnologie di Internet
Namespaces
Visibilità dei Namespaces (2)
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>
Dott. Nicola Dragoni
18
Tecnologie di Internet
Namespaces
Esempio
<?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>
Dott. Nicola Dragoni
19
Tecnologie di Internet
Namespaces
Osservazione
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.
Dott. Nicola Dragoni
20
Tecnologie di Internet
Namespaces
Namespaces
Sommario

•
•
•
•
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).
Dott. Nicola Dragoni
21
Scarica

Corso Integrativo XML 5