Perché abbiamo bisogno degli URI per gli spazi dei nomi XML?


23

Sto cercando di capire perché abbiamo bisogno di URI per gli spazi dei nomi XML e non riesco a trovare uno scopo per questo. Qualcuno può illuminarmi un po 'mostrando il loro uso su un esempio concreto?

MODIFICARE:

Ok, ad esempio: ho questo da w3schools

<root
xmlns:h="http://www.w3.org/TR/html4/"
 xmlns:f="http://www.w3schools.com/furniture">

 <h:table>
   <h:tr>
     <h:td>Apples</h:td>
     <h:td>Bananas</h:td>
   </h:tr>
 </h:table>

 <f:table>
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
 </f:table>

 </root>

Quindi cosa dovrebbe http://www.w3schools.com/furniturecontenere?



7
Commento obbligatorio su w3fools .
yannis,

Quindi gli spazi dei nomi XML devono essere in un formato URI? O posso semplicemente usare qualsiasi stringa come 'My.Namespace.Foo'?
Mas

Risposte:


20

Uno spazio dei nomi è un modo di dire "Questo tipo di Foo" è diverso da "Quel tipo di Foo", anche se sono scritti allo stesso modo. Oppure, se preferisci " MY kind of Foo" è diverso da " Everybody elses kind of Foo".

Il modo tecnico di dire questo è "L'URI del mio spazio dei nomi per Foo" è diverso da quello di tutti gli altri URI per il loro spazio dei nomi per Foo. In altre parole, gli URI sono solo stringhe che ti permettono di dirlo.

Il trucco è quindi dire "Ehi, gli URL sono URI validi" e quindi utilizzare un URI corrispondente a un URL sotto il tuo controllo. Se lo fanno tutti, eviti collisioni accidentali dello spazio dei nomi. Avresti anche potuto dire lo spazio dei nomi "A" e lo spazio dei nomi "B", ma rischi che anche qualcun altro userebbe lo stesso spazio dei nomi, e quindi il tuo tipo di Foo non è più diverso dal loro Foo che è esattamente ciò che vuoi evitare .

È quindi possibile aggiungere ulteriori convenzioni agli URL utilizzati come URI, ad esempio l'URL deve corrispondere a una pagina contenente documentazione o XSD o simili, ma ciò non è necessario. È solo conveniente.


Ok, ma che differenza c'è tra lo spazio dei nomi A e lo spazio dei nomi w3.org/1999/xhtml ? entrambi possono essere utilizzati dagli utenti senza che siano consapevoli di aver utilizzato gli stessi spazi dei nomi.
Patryk,

1
@Patryk, ecco perché usi un URL su cui hai il controllo. L'URL dello spazio dei nomi xhtml è sotto il controllo di W3C che ha definito la specifica XHTML.

2
@Patryk, nota anche che sono quelli che definiscono lo spazio dei nomi che arriva a scegliere l'URL. Poi tutti gli altri possono usare loro.

1
Quindi lo spazio dei nomi asarebbe totalmente valido? Stupido, ma valido? O deve essere un URI?
Rudie,

5
Non sarebbe fantastico se le prime persone ad usare quella convenzione anni fa avessero anche messo la documentazione ben concisa dei loro schemi su quegli URL in modo che diventasse una cosa? Gli spazi dei nomi OpenXML di Microsoft schemas.openxmlformats.org/drawingml/2006/chart non indicano nulla.
prototipo il

16

In termini generali, qualsiasi identificatore univoco servirebbe per uno spazio dei nomi; ma dal momento che dovrebbe essere unico a livello globale , lo standard dovrebbe o imporre un'autorità di arbitrato o utilizzare un'altra risorsa che sia allo stesso tempo globalmente unica ma facile da ottenere e dimostrare che è tua.

Oh guarda! se hai un dominio, ovviamente è solo tuo ed è facile dimostrare che è tuo!

Ad esempio, hanno voluto evitare la situazione in cui due diverse librerie iniziano a usare "libri" come spazio dei nomi, con definizioni interne totalmente diverse. Mentre lo usano internamente, non c'è problema; ma non appena uno di loro vuole pubblicare le proprie specifiche, si scatena l'inferno.

Invece, se sei incoraggiato a usare il tuo dominio, chiunque (beh, chiunque possieda un dominio) può definire il proprio spazio dei nomi privato con la sicurezza che nessun altro utilizzerà lo stesso identico identificatore.

Come bonus, puoi facoltativamente memorizzare la definizione del tuo spazio dei nomi nell'URI, rendendolo auto-documentante.

Mi sembra un'ottima idea.


Grazie per la risposta, ma avrei bisogno di qualcosa di più concreto per capirlo. Ho aggiunto un codice esemplare su cui puoi basarti, per favore dai un'occhiata.
Patryk,

1
@patryk - niente, non è un indirizzo - è solo un token univoco con cui sei sicuro che nessun altro con cui potresti mescolare i file XML. Tutto ciò che sta dicendo è che i nomi <table> etc non verranno usati con significati diversi nei file xml che hanno il nome www.w3.org in alto
Martin Beckett,

Ok, ma quando Wikipedia dice qualcosa che gli utenti possono usare ad esempio w3.org/1999/xhtml come spazio dei nomi, molte persone avrebbero lo stesso spazio dei nomi. Ho ragione ?
Patryk,

@Patryk, solo se vuoi usarlo per lo stesso uso. Se vuoi definire un nuovo spazio dei nomi, sei incoraggiato a usare il tuo dominio
Javier,

@Javier Cosa intendi con 'lo stesso uso'?
Patryk,

1

DOM Level 2 è stato pubblicato alla fine del 2000. Ha introdotto la funzione "getElementById", nonché un modello di eventi e supporto per spazi dei nomi XML e CSS.

Cosa specifica xmlIns?
Come nodi di attributo denominati "xmlns" o "xmlns: xxx", esattamente come gli spazi dei nomi sono scritti nel documento XML di origine. Questo è il modello presentato da DOM.

Cosa contiene l'URI?
Uno spazio dei nomi XML viene dichiarato utilizzando lo pseudo-attributo XML riservato xmlns o xmlns: prefisso, il cui valore deve essere un nome di spazio dei nomi valido.

Ad esempio, la seguente dichiarazione associa il prefisso "xhtml:" allo spazio dei nomi XHTML:

xmlns: xhtml = "http://www.w3.org/1999/xhtml"

AS l'ho scoperto dopo aver letto l' articolo su Wikipedia. L'URI contiene le specifiche in formato XML dello spazio dei nomi che fornisce un metodo per evitare conflitti di nomi di elementi.

Forse sai che il documento XML utilizza XML Schemaper la struttura element / table / class degli elementi del documento XML.

cosa dovrebbe contenere http://www.w3schools.com/furniture ?

La risposta è sulla tua pagina in cui hai imparato a conoscere lo spazio dei nomi XML. Controlla la Namespaces in Real Usesezione su questo articolo di W3Schools .

Controlla il seguente link di StackOverflow che alcuni dimostrano che cosa trasporta questo URI:

Come creare e utilizzare lo spazio dei nomi XML?


-1

URI = nome o identificatore univoco globale dello spazio dei nomi

Prendi in considerazione la creazione di un database o di un documento sulla gestione finanziaria della logistica dell'industria petrolifera. Ciò dovrebbe utilizzare vocabolari specifici (ovvero termini controllati) per ciascuna delle materie: database, documenti, gestione, finanza, logistica, petrolio e industria.

Se nessuno dei termini si sovrappone a questi sette vocabolari, è necessario un solo URI. Ma per ogni termine che si sovrappone ad altri termini attraverso questi vocabolari, avresti bisogno di un vocabolario aggiuntivo specifico per soggetto identificato in un URI o IRI. Un modo per aggirare questo è quello di creare una tassonomia unita, con termini generali più ampi e termini più specifici specifici per soggetto.

Questo potrebbe quindi essere espanso in un thesaurus che mostra anche i sinonimi di gergo di un termine e consente di specificare un termine preferito tra quei sinonimi di gergo.


2
questo post è piuttosto difficile da leggere (wall of text). Ti dispiacerebbe modificarlo in una forma migliore?
moscerino del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.