Зачем нам нужны 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 всех остальных по своему пространству имен для Foo. Другими словами, URI - это просто строки, которые позволяют вам сказать это.

Хитрость заключается в том, чтобы сказать: «Эй, URL-адреса являются действительными URI», а затем использовать URI, соответствующий URL-адресу, находящемуся под вашим контролем. Если все так сделают, вы избежите случайных столкновений пространства имен. Вы могли бы также сказать пространство имен «А» и пространство имен «В», но вы рискуете, что кто-то другой также будет использовать то же пространство имен, и тогда ваш тип Foo больше не будет отличаться от их Foo, и это именно то, чего вы хотите избежать. ,

Затем вы можете добавить дополнительное соглашение к URL-адресам, используемым в качестве URI, например, что URL-адрес должен соответствовать странице, содержащей документацию, XSD или аналогичные, но это не обязательно. Это просто удобно.


Хорошо, но в чем разница между пространством имен A и пространством имен w3.org/1999/xhtml ? оба они могут использоваться пользователями, не зная, что они использовали одни и те же пространства имен.
Патрик

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

2
@Patryk, также обратите внимание, что именно те, которые определяют пространство имен, выбирают URL. Тогда все остальные могут их использовать .

1
Таким образом, пространство имен aбудет полностью действительным? Глупо, но верно? Или это должен быть URI?
Руди

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

16

В общих чертах, любой уникальный идентификатор будет служить для пространства имен; но поскольку он должен быть уникальным в глобальном масштабе , стандарт должен будет либо обязать какой-то арбитражный орган, либо использовать другой ресурс, который в то же время является уникальным в глобальном масштабе, но его легко получить и доказать, что он ваш.

О, посмотри! если у вас есть домен, он, очевидно, только ваш, и легко доказать, что он ваш!

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

Вместо этого, если вам предлагается использовать ваш домен, любой (ну, любой, кто владеет доменом) может определить свое собственное личное пространство имен с уверенностью, что никто другой не будет использовать точно такой же идентификатор.

В качестве бонуса вы можете при желании сохранить определение своего пространства имен в URI, что делает его самодокументированным.

Похоже, отличная идея для меня.


Спасибо за ответ, но мне нужно что-то более конкретное, чтобы понять это. Я добавил пример кода, на котором вы можете основываться, пожалуйста, посмотрите.
Патрик

1
@patryk - ничего, это не адрес - это просто уникальный токен, который вы уверены, что никто другой, с кем вы можете смешивать XML-файлы, не имеет. Все, что он говорит, это то, что имена <таблица> и т. Д. Не будут использоваться с любым другим значением в любых XML-файлах с именем www.w3.org вверху
Мартин Беккет,

Хорошо, но когда википедия говорит что-то, что пользователи могут использовать, например, 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: prefix, значением которого должно быть допустимое имя пространства имен.

Например, следующее объявление отображает префикс «xhtml:» в пространство имен XHTML:

XMLNS: = XHTML "http://www.w3.org/1999/xhtml"

Как я обнаружил после прочтения статьи в Википедии. URI содержит отформатированные в формате XML спецификации пространства имен, что позволяет избежать конфликтов имен элементов.

Может быть, вы знаете, XML-документ использует XML Schemaдля структуры элемента / таблицы / класса элементов XML-документа.

что должно быть на http://www.w3schools.com/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.