Mengapa kita membutuhkan URI untuk ruang nama XML?

23

Saya mencoba mencari tahu mengapa kita perlu URI untuk ruang nama XML dan saya tidak dapat menemukan tujuan untuk itu. Adakah yang bisa mencerahkan saya sedikit memperlihatkan penggunaannya pada contoh nyata?

EDIT:

Ok jadi misalnya: Saya punya ini dari 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>

Jadi apa yang harus http://www.w3schools.com/furnituredisimpan?

Patryk
sumber
7
Komentar w3fools wajib .
yannis
Jadi apakah ruang nama XML harus dalam format URI? Atau bisakah saya menggunakan string seperti 'My.Namespace.Foo'?
Mas

Jawaban:

20

Sebuah namespace adalah cara untuk mengatakan "Ini semacam Foo" berbeda dari "semacam itu Foo", meskipun mereka dieja sama. Atau, jika Anda lebih suka " MY Foo jenis" berbeda dari " Semua orang jenis Foo".

Cara teknis untuk mengatakan ini adalah "URI namespace saya untuk Foo" berbeda dari semua orang yang menggunakan URI untuk namespace mereka untuk Foo. Dengan kata lain, URI hanyalah string yang memungkinkan Anda mengatakannya.

Caranya adalah dengan mengatakan, "Hai, URL adalah URI yang valid", dan kemudian gunakan URI yang sesuai dengan URL di bawah kendali Anda. Jika semua orang melakukan itu, maka Anda menghindari tabrakan namespace yang tidak disengaja. Anda juga bisa mengatakan namespace "A" dan namespace "B", tetapi Anda berisiko orang lain akan menggunakan namespace yang sama juga, dan kemudian jenis Foo Anda tidak berbeda dari Foo mereka lagi yang persis apa yang ingin Anda hindari .

Anda kemudian dapat menambahkan konvensi tambahan ke URL yang digunakan sebagai URI, misalnya bahwa URL harus sesuai dengan halaman yang berisi dokumentasi atau XSD atau yang serupa, tetapi ini tidak perlu. Itu hanya nyaman.


sumber
Oke, tapi apa perbedaan antara namespace A dan namespace w3.org/1999/xhtml ? keduanya dapat digunakan oleh pengguna tanpa mereka tahu bahwa mereka telah menggunakan ruang nama yang sama.
Patryk
1
@Patryk, itulah mengapa Anda menggunakan URL yang Anda kendalikan. URL namespace xhtml berada di bawah kendali W3C yang mendefinisikan spesifikasi XHTML.
2
@ Patryk, juga perhatikan bahwa itu adalah yang mendefinisikan namespace yang dapat memilih URL. Lalu semua orang bisa menggunakannya .
1
Jadi namespace abenar-benar valid? Bodoh, tapi valid? Atau haruskah itu menjadi URI?
Rudie
5
Bukankah luar biasa jika beberapa orang pertama yang menggunakan konvensi itu bertahun-tahun yang lalu juga menaruh dokumentasi ringkas skema mereka di URL-URL itu sehingga menjadi suatu hal? Microsoft OpenXML namespaces schemas.openxmlformats.org/drawingml/2006/chart tidak menunjukkan apa-apa.
prototipe
16

Secara umum, setiap pengidentifikasi unik akan berfungsi untuk namespace; tetapi karena itu seharusnya unik secara global , standar harus memberikan mandat kepada otoritas arbitrase, atau menggunakan sumber daya lain yang pada saat yang sama unik secara global tetapi mudah diperoleh dan untuk membuktikan itu milik Anda.

Oh lihat! jika Anda memiliki domain, itu jelas hanya milik Anda, dan mudah untuk membuktikan itu milik Anda!

Misalnya, mereka ingin menghindari situasi di mana dua toko buku yang berbeda mulai menggunakan "buku" sebagai ruang nama, dengan definisi internal yang sama sekali berbeda. Sementara mereka menggunakannya secara internal, tidak ada masalah; tetapi begitu salah satu dari mereka ingin mempublikasikan spesifikasi mereka, semua neraka hilang.

Sebaliknya, jika Anda didorong untuk menggunakan domain Anda, siapa pun (yah, siapa pun yang memiliki domain) dapat mendefinisikan namespace pribadi mereka sendiri dengan keyakinan bahwa tidak ada orang lain yang akan menggunakan pengidentifikasi yang sama persis.

Sebagai bonus, Anda dapat secara opsional menyimpan definisi namespace Anda di URI, menjadikannya dokumentasi sendiri.

Sepertinya ide yang bagus untuk saya.

Javier
sumber
Terima kasih atas jawabannya tetapi saya perlu sesuatu yang lebih konkret untuk memahami hal ini. Saya menambahkan beberapa kode contoh yang bisa Anda pakai, silakan lihat.
Patryk
1
@patryk - tidak ada, itu bukan alamat - itu hanya tanda unik yang Anda yakin tidak ada orang lain yang mungkin Anda campur dengan file xml. Yang dikatakannya adalah bahwa nama-nama <tabel> dll tidak akan digunakan dengan arti berbeda dalam file xml yang memiliki nama www.w3.org di bagian atas
Martin Beckett
Ok tapi ketika wikipedia mengatakan sesuatu yang dapat digunakan oleh pengguna misalnya w3.org/1999/xhtml sebagai namespace maka banyak orang akan memiliki namespace yang sama. Apakah saya benar ?
Patryk
@Patryk, hanya jika Anda ingin menggunakannya untuk penggunaan yang sama. Jika Anda ingin mendefinisikan namespace baru, Anda didorong untuk menggunakan domain Anda sendiri
Javier
@ Javier Apa yang Anda maksud dengan 'penggunaan yang sama'?
Patryk
1

DOM Level 2 diterbitkan pada akhir 2000. Ini memperkenalkan fungsi "getElementById" serta model acara dan dukungan untuk ruang nama XML dan CSS.

Apa yang ditentukan xmlIns?
Sebagai node atribut bernama "xmlns" atau "xmlns: xxx", persis seperti namespaces yang ditulis dalam dokumen XML sumber. Ini adalah model yang disajikan oleh DOM.

Apa yang mengandung URI?
XML namespace dideklarasikan dengan menggunakan XML pseudo-atribut xmlns atau xmlns: awalan, nilai yang harus berupa nama namespace yang valid.

Misalnya, deklarasi berikut memetakan awalan "xhtml:" ke namespace XHTML:

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

SEPERTI yang saya temukan setelah membaca artikel di Wikipedia. URI berisi spesifikasi XML yang diformat dari namespace menyediakan metode untuk menghindari konflik nama elemen.

Mungkin Anda tahu penggunaan dokumen xml XML Schemauntuk struktur elemen / tabel / kelas elemen dari dokumen XML.

apa yang harus dimiliki oleh http://www.w3schools.com/furniture ?

Jawabannya ada di halaman Anda di mana Anda telah belajar tentang XML Namespace. Periksa Namespaces in Real Usebagian pada artikel W3Schools ini .

Periksa tautan berikut dari stackoverflow yang menunjukkan apa yang dilakukan oleh URI ini:

Bagaimana cara membuat dan menggunakan namespace XML?

Niranjan Singh
sumber
-1

URI = namespace atau pengidentifikasi unik secara global

Pertimbangkan membangun basis data atau dokumen tentang manajemen keuangan logistik industri minyak. Itu akan perlu menggunakan kosa kata tertentu (yaitu, istilah yang dikendalikan) untuk masing-masing mata pelajaran: database, dokumen, manajemen, keuangan, logistik, minyak, dan industri.

Jika tidak ada istilah yang tumpang tindih di tujuh kosakata ini, maka hanya satu URI yang dibutuhkan. Tetapi untuk setiap istilah yang tumpang tindih dengan istilah lain di seluruh kosa kata ini, Anda memerlukan kosa kata khusus khusus subjek yang diidentifikasi dalam URI atau IRI. Salah satu cara mengatasi hal ini adalah dengan menciptakan taksonomi gabungan, dengan istilah umum yang lebih luas dan istilah khusus subjek yang lebih sempit.

Ini kemudian dapat diperluas menjadi tesaurus yang juga menunjukkan jargon-sinonim dari suatu istilah, dan memungkinkan spesifikasi istilah yang disukai di antara jargon-sinonim tersebut.

Roy Roebuck
sumber
2
posting ini agak sulit dibaca (dinding teks). Maukah Anda mengeditnya menjadi bentuk yang lebih baik?
nyamuk