В чем разница между xsd:include и xsd:import?

В чем разница между xsd:include а также xsd:import? Когда бы вы использовали один вместо другого, и когда это не имеет значения?

6 ответов

Решение

Принципиальная разница между include а также import это то, что вы должны использовать import чтобы ссылаться на объявления или определения, которые находятся в другом целевом пространстве имен, и вы должны использовать include ссылаться на объявления или определения, которые находятся (или будут) в одном и том же целевом пространстве имен.

Источник: https://web.archive.org/web/20070804031046/http://xsd.stylusstudio.com/2002Jun/post08016.htm

Используйте xsd:include для ввода XSD из того же пространства имен или без него.

Используйте xsd:import для ввода XSD из другого пространства имен.

Другое отличие состоит в том, что <import> позволяет импортировать, ссылаясь на другое пространство имен. <include> позволяет только импорт, ссылаясь на URI предполагаемой схемы включения. Это, безусловно, другое отличие от импорта внутри пространства имен.

Например, средство проверки схемы xml уже может знать местоположения всех схем по пространству имен. Особенно с учетом того, что обращение к пространствам имен XML с помощью URI может быть проблематичным в разных системах, где classpath:// ничего не значит, или где http:// не разрешен, или где какой-то URI не указывает на то же самое, что и на другая система.

Пример кода действительного и недействительного импорта и включает в себя:

Действительно:

<xsd:import namespace="some/name/space"/>
<xsd:import schemaLocation="classpath://mine.xsd"/>

<xsd:include schemaLocation="classpath://mine.xsd"/>

Недействительным:

<xsd:include namespace="some/name/space"/>

Я тоже заинтересован в этом. Единственное объяснение, которое я нашел, состоит в том, что xsd:include используется для включения в пространство имен, в то время как xsd:import для включения в пространство имен.

Компонент "include" - этот компонент переносит все объявления и определения внешнего документа схемы в текущую схему. Документ внешней схемы должен иметь то же целевое пространство имен, что и текущая схема. Компоненты "include" обычно используются для создания новой схемы путем расширения существующих документов схемы.

Компонент "import" - этот компонент предлагает те же функции, что и компонент "include", за исключением того, что включенный документ схемы имеет другое целевое пространство имен. Компоненты "import" обычно используются для создания новой схемы, заимствуя объявления элементов из существующих документов схемы из других пространств имен.

Прямая цитата из MSDN: элемент , раздел "Замечания"

Различие между элементом include и элементом import заключается в том, что элемент import позволяет ссылаться на компоненты схемы из документов схемы с различными целевыми пространствами имен, а элемент include добавляет компоненты схемы из других документов схемы, которые имеют такое же целевое пространство имен (или не имеют указанного целевого пространства имен).) к содержащей схеме. Короче говоря, элемент import позволяет использовать компоненты схемы из любой схемы; Элемент include позволяет добавлять все компоненты включенной схемы в содержащую схему.

Использование xsd:include приводит все объявления и определения внешнего документа схемы в текущую схему.

Используйте xsd:import, чтобы ввести XSD из другого пространства имен и использовать для создания новой схемы путем расширения существующих документов схемы.

Другие вопросы по тегам