Навіщо нам потрібні URI для просторів імен XML?


23

Я намагаюся з'ясувати, навіщо нам потрібні URI для просторів імен XML, і я не можу знайти для цього мету. Хтось може мене трохи полегшити, показуючи їх використання на конкретному прикладі?

Редагувати:

Так, наприклад: у мене це є у 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>

Отже, що має http://www.w3schools.com/furnitureтриматися?



7
Обов’язковий коментар w3fools .
янніс

Так чи повинні простори імен XML бути у форматі URI? Або я можу просто використовувати будь-який рядок типу "My.Namespace.Foo"?
Мас

Відповіді:


20

Імена є способом сказати «Такий рід Foo» відрізняється від «такого роду Foo», незважаючи на те, що вони пишуться однаково. Або, якщо ви віддаєте перевагу, " МОЙ вид Foo" відрізняється від " Всі ельси роду Foo".

Технічний спосіб сказати це "URI мого простору імен для Foo" відрізняється від URI всіх elses для їх простору імен для Foo. Іншими словами, URI - це лише рядки, які дозволяють вам так сказати.

Тоді хитрість полягає в тому, щоб сказати: "Ей, URL-адреси є дійсними URI", а потім використовувати URI, що відповідає URL-адресі, яку ви контролюєте. Якщо це роблять усі, то ви уникаєте випадкових зіткнень у просторі імен. Ви також можете сказати простір імен "A" та простір імен "B", але ви ризикуєте, що хтось ще буде використовувати той самий простір імен, і тоді ваш вид Foo вже не відрізняється від їх Foo, саме цього ви хочете уникати. .

Потім ви можете додати додаткову умову до URL-адрес, які використовуються як URI, наприклад, що URL-адреса повинна відповідати сторінці, що містить документацію або XSD або подібну, але це не обов'язково. Це просто зручно.


Гаразд, але яка різниця між простором імен A і простором імен w3.org/1999/xhtml ? їх обидва можуть використовувати користувачі, не знаючи, що вони використовували однакові простори імен.
Патрик

1
@Patryk, тому ви використовуєте URL, над яким маєте контроль. URL-адреса простору імен xhtml знаходиться під контролем W3C, який визначив специфікацію XHTML.

2
@Patryk, також зауважте, що саме те, що визначає простір імен, має отримати вибір URL-адреси. Тоді всі інші можуть їх використовувати .

1
Так простір імен aцілком би дійсний? Дурний, але дійсний? Або це повинен бути URI?
Rudie

5
Хіба це не було б дивним, якби перші кілька людей, які користувалися цією конвенцією років тому, також розмістили на цих URL-адресах гарну стисну документацію своїх схем, щоб це стало річчю? Microsoft OpenXML-простори імен schemas.openxmlformats.org/drawingml/2006/chart вказує ні на що.
прототип

16

Загалом, будь-який унікальний ідентифікатор буде служити для простору імен; але оскільки він повинен бути унікальним у всьому світі , стандарт повинен буде або мандатувати якийсь арбітражний орган, або використовувати інший ресурс, який одночасно є унікальним у всьому світі, але його легко отримати та довести, що це ваш.

О, дивись! якщо у вас є домен, він, очевидно, лише ваш, і легко довести, що це ваш!

Наприклад, вони хотіли уникнути ситуації, коли дві різні книгарні починають використовувати «книги» як простір імен із абсолютно різними внутрішніми визначеннями. Хоча вони його використовують внутрішньо, проблем немає; але як тільки хтось із них захоче опублікувати свою специфікацію, все пекло відривається.

Натомість, якщо вам рекомендується використовувати ваш домен, будь-хто (ну, будь хто, хто володіє доменом) може визначити свій власний простір імен з впевненістю, що ніхто інший не буде використовувати той самий ідентифікатор.

Як бонус ви можете додатково зберігати визначення свого простору імен в URI, роблячи його самодокументованим.

Мені здається чудовою ідеєю.


Дякую за відповідь, але мені потрібно щось конкретніше, щоб зрозуміти це. Я додав примірний код, на якому ви можете базуватись, будь ласка, подивіться.
Патрик

1
@patryk - нічого, це не адреса - це просто унікальний маркер, на який ви впевнені, що ніхто інший, з яким ви могли б змішати xml файли, не має. Все, про що йдеться, - це те, що імена <table> тощо не будуть використовуватися з будь-якими різними значеннями у будь-яких файлах xml, у яких вгорі є ім'я www.w3.org
Martin Beckett

Гаразд, але коли wikipedia говорить щось, що користувачі можуть використовувати, наприклад, w3.org/1999/xhtml як простір імен, то багато людей матиме однаковий простір імен. Чи правий я ?
Патрик

@Patryk, лише якщо ви хочете використовувати його для того ж використання. Якщо ви хочете визначити новий простір імен, вам рекомендується використовувати власний домен
Javier

@Javier Що ти маєш на увазі під тим самим використанням?
Патрик

1

DOM Level 2 був опублікований наприкінці 2000 року. Він запровадив функцію "getElementById", а також модель події та підтримку просторів імен XML та CSS.

Що вказує xmlIns?
Як вузли атрибутів з назвою "xmlns" або "xmlns: xxx", точно так, як простори імен записуються у вихідний XML-документ. Це модель, представлена ​​DOM.

Що містить URI?
Простір імен XML оголошується за допомогою зарезервованого псевдоатрибута XML xmlns або xmlns: префікса, значення якого повинно бути дійсним назвою простору імен.

Наприклад, наступне декларація відображає префікс "xhtml:" у простір імен XHTML:

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

ЯК Я це виявив, прочитавши статтю у Вікіпедії. URI містить специфікації формату XML простору імен, що забезпечує метод уникнення конфліктів імен елементів.

Можливо, ви знаєте, що XML-документ використовує XML Schemaдля структури елементів / таблиці / класу елементів XML-документа.

що має містити http://www.w3schools.com/f Furniture?

Відповідь на вашій сторінці, де ви дізналися про простір імен XML. Перевірте Namespaces in Real Useрозділ цієї статті W3Schools .

Перевірте наступне посилання stackoverflow, яке свідчить про те, що цей URI несе:

Як створити та використовувати простір імен XML?


-1

URI = унікальне ім’я або ідентифікатор простору імен

Розгляньте можливість створення бази даних або документа про фінансове управління логістикою нафтової галузі. Для цього потрібно використовувати специфічні словники (тобто контрольовані терміни) для кожного з предметів: база даних, документ, управління, фінанси, логістика, нафта та промисловість.

Якщо жоден із термінів не перетинається на цих семи словниках, тоді потрібен лише один URI. Але для кожного терміна, який перекриває інші терміни в цих словникових запасах, вам знадобиться додатковий словниковий запас, визначений в URI або IRI. Одним із способів цього є створення об'єднаної систематики з більш широкими загальними термінами та вузькими специфічними термінами.

Потім це може бути розширене в тезаурус, який також показує жаргонні синоніми терміна і дає змогу вказати кращий термін серед цих жаргоно-синонімів.


2
цю публікацію досить важко читати (стіна тексту). Ви б не хотіли відредагувати його в кращій формі?
гнат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.