1 / 21

XML Namespaces

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

maia
Download Presentation

XML Namespaces

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. 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 • Visualizzazione di un file XML (ad esempio con un browser) senza foglio di stile Problema: conflitto di nomi Soluzione: Namespaces Namespaces in XML

  2. 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)

  3. 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.

  4. 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.

  5. Soluzione: Namespaces (1) scienza giornalismo prodotti grammatica <articolo> La Ferrari trionfa ancora! </articolo> <articolo> Un </articolo> <articolo> Aspirapolvere WS-02 </articolo> <articolo> A Relational Model of Data for Large Shared Data Banks </articolo>

  6. 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>

  7. 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).

  8. Un URI può avere la forma di un URL (Uniform Resource Locator) o URN (Uniform Resource Name) URIs in XML Namespaces (1) • 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 Namespace

  9. 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.

  10. 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. http://www.giornalismo.it/schema news

  11. http://www.giornalismo.it/schema news : articolo Utilizzare i Namespaces (2) Infine, il nome che si riferisce al namespaceviene associato agli elementi (o attributi) che si vuole caratterizzare.

  12. 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).

  13. 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>

  14. Namespaces e XML (3) Infine, il nome che si riferisce al namespaceviene 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.

  15. Dichiarazioni di Namespaces Abbiamo visto due modi per dichiarare un Namespace: • Dichiarazione di default Namespace: si usa l’attributo xmlns. <doc xmlns=“http://www.cs.unibo.it/articoli”> ... </doc> • 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>

  16. 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>

  17. 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>

  18. 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>

  19. 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>

  20. 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.

  21. NamespacesSommario • 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 Esempi • Passi successivi: • la prossima lezione sarà dedicata al Document Type Definition (DTD).

More Related