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

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

4 ответов


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

для доказательства просто откройте эту ссылку (URL) в HTML-браузере (например, FireFox). Вероятно, вы увидите текст HTML, например: "пространство имен экземпляра схемы XML ...". Затем сохраните этот "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, который, хотя звучит совсем по-другому, на самом деле очень много связано с той же проблемой.


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


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

<?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">

здесь есть информация на эту тему.

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

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