Принципиальная разница между includeи в importтом, что вы должны использоватьimport для ссылки на объявления или определения, которые находятся в другом целевом пространстве имен, и вы должны использовать includeдля ссылки на объявления или определения, которые находятся (или будут) в том же самом целевом пространстве имен.
Другое отличие заключается в том, что <import>импорт можно осуществлять, ссылаясь на другое пространство имен.<include>позволяет только импорт, ссылаясь на URI предполагаемой схемы включения. Это, безусловно, другое отличие от импорта внутри пространства имен.
Например, средство проверки xml-схемы может уже знать расположение всех схем по пространству имен . Особенно с учетом того, что обращение к пространствам имен XML с помощью URI может быть проблематичным в разных системах, где classpath: // ничего не означает, или где http: // не разрешен, или где какой-то URI не указывает на то же самое, что и на другая система.
Пример кода действительного и недействительного импорта и включает в себя:
Я думаю, что вы имеете в виду обращение к пространствам имен XML по URL адресов, а не по URI . URI пространства имен (то есть namespaceатрибут <xs:import>) всегда в порядке и рассматриваются как идентификатор (просто текст, не интерпретируется), в то время как schemaLocation(URL-адрес, а не URI) обычно должен обрабатываться, чтобы быть разрешенным. И действительно, специфическая для Java схемаclasspath: URL может ничего не значить. Но помимо этого аккуратного выбора, это ценный комментарий, спасибо.
ddevienne
7
Я тоже заинтересован в этом. Единственное объяснение, которое я нашел, заключается в том, что xsd:includeон используется для включения в пространство имен, а xsd:importдля включения в пространство имен.
Различие между элементом include и элементом import заключается в том, что элемент import позволяет ссылаться на компоненты схемы из документов схемы с различными целевыми пространствами имен, а элемент include добавляет компоненты схемы из других документов схемы, которые имеют такое же целевое пространство имен (или нет указанного целевого пространства имен). ) к содержащей схеме. Короче говоря, элемент import позволяет использовать компоненты схемы из любой схемы; включает элемент позволяет добавлять все компоненты включаемой схемы, содержащую схему.
Использование xsd: include приводит все объявления и определения внешнего документа схемы в текущую схему.
Используйте xsd: import, чтобы ввести XSD из другого пространства имен и использовать для создания новой схемы путем расширения существующих документов схемы.
Ответы:
Принципиальная разница между
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 не указывает на то же самое, что и на другая система.
Пример кода действительного и недействительного импорта и включает в себя:
Действительно:
Недействительным:
источник
namespace
атрибут<xs:import>
) всегда в порядке и рассматриваются как идентификатор (просто текст, не интерпретируется), в то время какschemaLocation
(URL-адрес, а не URI) обычно должен обрабатываться, чтобы быть разрешенным. И действительно, специфическая для Java схемаclasspath:
URL может ничего не значить. Но помимо этого аккуратного выбора, это ценный комментарий, спасибо.Я тоже заинтересован в этом. Единственное объяснение, которое я нашел, заключается в том, что
xsd:include
он используется для включения в пространство имен, аxsd:import
для включения в пространство имен.источник
Прямая цитата из MSDN: элемент <xsd: import>, раздел «Замечания»
источник
Использование xsd: include приводит все объявления и определения внешнего документа схемы в текущую схему.
Используйте xsd: import, чтобы ввести XSD из другого пространства имен и использовать для создания новой схемы путем расширения существующих документов схемы.
источник