Відповіді:
Принципова відмінність між 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"/>
namespace
атрибут <xs:import>
) завжди в порядку і розглядаються як ідентифікатор (просто текст, не інтерпретується), тоді як schemaLocation
(URL-адреса не URI), як правило, повинен бути оброблений, щоб його вирішити. І там дійсно схемаclasspath:
URL - адреси , що стосується Java, може нічого не означати. Але поруч із цим акуратним підбором, це цінний коментар, дякую.
Мене це також цікавить. Єдине пояснення, яке я знайшов, - це те, що xsd:include
використовується для включення простору імен, тоді xsd:import
як для включення простору між іменами.
Пряма цитата з MSDN: <xsd: import> Елемент, розділ Зауваження
Різниця між елементом включення та елементом імпорту полягає в тому, що імпортуючий елемент дозволяє посилатися на компоненти схеми з документів схеми з різними просторами імен, а елемент включення додає компоненти схеми з інших документів схеми, які мають однаковий простір імен цілі (або не вказаний простір імен цілі) ) до містить схему. Коротше кажучи, елемент імпорту дозволяє використовувати компоненти схеми з будь-якої схеми; включає елемент дозволяє додавати всі компоненти включається схеми, що містить схему.
Використовуйте xsd: include приносить усі декларації та визначення зовнішнього документа схеми в поточну схему.
Використовуйте xsd: import для введення XSD з іншого простору імен і використовується для створення нової схеми шляхом розширення існуючих документів схеми.