Подтвердить что ты не робот

Где находится файл XSD для "http://www.w3.org/2001/XMLSchema-instance"?

Где находится файл определения схемы XSD для пространства имен "http://www.w3.org/2001/XMLSchema-instance"

4b9b3361

Ответ 1

Странно это может звучать, но XML-схема для пространства имен http://www.w3.org/2001/XMLSchema-instance существует и найдена точно по самому URL-адресу, обозначенному URI пространства имен: http://www.w3.org/2001/XMLSchema-instance

Для доказательства просто откройте эту ссылку (URL) в HTML-браузере (например, FireFox). Вероятно, вы увидите некоторый текст HTML, например: "Пространство имен экземпляров XML Schema...". Затем сохраните этот "HTML" в качестве файла на вашем компьютере (например, "Файл | Сохранить страницу как" ). Когда вы заглянете в этот файл, вы увидите, что это вовсе не HTML. Скорее, это полная XML-схема для этого пространства имен!

В равной степени вы можете импортировать пространство имен http://www.w3.org/2001/XMLSchema-instance в свою собственную схему следующим образом:

<xs:import namespace="http://www.w3.org/2001/XMLSchema-instance"
           schemaLocation="http://www.w3.org/2001/XMLSchema-instance"/>

Смотрите также этот вопрос: Ошибка при анализе xsd с помощью xjc, который, хотя звучит совсем по-другому, на самом деле очень сильно связан с той же проблемой.

Ответ 2

Просто чтобы добавить топливо в огонь - многие инструменты XML имеют знания http://www.w3.org/2001/XMLSchema-instance baked-in, так что похоже, что вы никогда нужна схема вообще. Фактически, вам нужна схема, если вы используете инструмент XML, который не испепеляет эти знания.

Ответ 3

По этой причине мы всегда находим начало xml-документов, где вообще нет xml-schema xsd-декларации? Например, например:

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jee="http://www.springframework.org/schema/jee" 
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 

         http://www.springframework.org/schema/jee 
         http://www.springframework.org/schema/jee/spring-jee-3.2.xsd 

         http://www.springframework.org/schema/util 
         http://www.springframework.org/schema/util/spring-util-3.2.xsd">

Ответ 4

Вот некоторая обновленная информация по этой теме.

XSD 1.1 часть 1 §2.7 гласит:

Язык определения схемы XML: Structures определяет несколько атрибутов для непосредственного использования в любых документах XML. Эти атрибуты находятся в пространстве имен экземпляра схемы (http://www.w3.org/2001/XMLSchema-instance), описанном в пространстве имен экземпляра схемы (xsi) (§1.3.1.2) выше. Все обработчики схемы должны иметь соответствующие объявления атрибутов для этих встроенных атрибутов.

Далее, §3.2.6.4 говорит:

{Целевое пространство имен} объявления атрибута, локального или верхнего уровня, не должно соответствовать http://www.w3.org/2001/XMLSchema-instance (если только это не одно из четырех встроенных объявлений, приведенных в следующий раздел). Примечание: Это усиливает особый статус этих атрибутов, так что они не только не должны быть объявлены как разрешенные в экземплярах, но и вследствие только что заданного правила не должны быть объявлены.

Таким образом, вы не можете объявить такие атрибуты, как xsi: type или xsi: schemaLocation, в документе схемы, и, следовательно, вы не можете импортировать документ схемы, который пытается объявить такие атрибуты.

Это, конечно, XSD 1.1 и, следовательно, напрямую не ограничивает процессор XSD 1.0. Тем не менее, это одна из многих областей, где XSD 1.1 выпускает руководство для случаев, когда XSD 1.0 ничего не сказал, и когда разные реализации пошли в разных направлениях.