Для чего на самом деле используется URI после пространства имен? - PullRequest
3 голосов
/ 29 ноября 2010

Должны ли URI в строках (5,6,7) на самом деле указывать на что-либо?

Когда я указываю их на пустые URL-адреса, кажется, все еще работает проверка моего xml, так какой смысл?

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UploadXSD"
    targetNamespace="UploadXSD"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/UploadXSD.xsd"
    xmlns:mstns="http://tempuri.org/UploadXSD.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="Video">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Title" minOccurs="1" type="xs:string"></xs:element>
        <xs:element name="Description" minOccurs="1" type="xs:string"></xs:element>
        <xs:element name="Contributor" minOccurs="1" type="xs:string"></xs:element>
        <xs:element name="Subject" minOccurs="1" type="xs:string"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

Ответы [ 2 ]

5 голосов
/ 29 ноября 2010

Смысл использования URN в качестве пространства имен заключается в том, что они уникальны. Вы также можете использовать GUID, например, но таким образом они будут более читабельными.

Конечно, использование URN дает вам возможность указывать их на фактический ресурс, такой как файл xsd, но это дополнительный бонус и не обязательный.

"tempuri" - это просто имена по умолчанию ("temp" + "uri"), которые вы должны заменить на реальный URN, чтобы избежать коллизий пространства имен.

Пространство имен XMLSchema фактически указывает на веб-сайт, который содержит информацию о XML-схеме.

Если вы регулярно используете XML-документы и схемы, прочитайте хотя бы учебник , чтобы получить представление о возможностях XML-схемы. Более подробная информация о пространствах имен XML здесь .

4 голосов
/ 29 ноября 2010

URI пространства имен XML (не URL) являются просто непрозрачными строками. Они предназначены для предотвращения столкновений в структурах XML. Подобно любому другому языку, поддерживающему пространство имен, они ни на что не указывают, но определяют уникальное имя, через которое можно использовать его содержимое.

Поскольку регистрацию в DNS легко использовать и гарантированную глобальную уникальность, это распространенная практика - использовать эти имена в публикуемых вами схемах. Однако он не нужен, и GUID будет работать (хотя для соответствия спецификации URI требуется префикс схемы).

Чтобы ответить на ваши вопросы:

Нет, URI не должны ничего указывать (это идентификаторы).

Когда вы изменяете URI пространства имен, вы изменяете имя пространства имен, ничего больше.

Надеюсь, это поможет,

...