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