Odpowiedzi:
Podstawowa różnica między include
i import
polega na tym, że należy używać, import
aby odnosić się do deklaracji lub definicji, które znajdują się w innej docelowej przestrzeni nazw, i należy używać, include
aby odnosić się do deklaracji lub definicji, które są (lub będą) w tym samym docelowej przestrzeni nazw.
Źródło: https://web.archive.org/web/20070804031046/http://xsd.stylusstudio.com/2002Jun/post08016.htm
Użyj xsd: include, aby wprowadzić XSD z tej samej lub żadnej przestrzeni nazw.
Użyj xsd: import, aby wprowadzić XSD z innej przestrzeni nazw.
Kolejna różnica polega na tym, że <import>
umożliwia importowanie poprzez odwołanie się do innej przestrzeni nazw.<include>
zezwala tylko na importowanie, odwołując się do identyfikatora URI zamierzonego schematu dołączania. To zdecydowanie kolejna różnica niż importowanie przestrzeni nazw między obiektami.
Na przykład moduł sprawdzania poprawności schematu xml może już znać lokalizacje wszystkich schematów według przestrzeni nazw . Zwłaszcza biorąc pod uwagę, że odwoływanie się do przestrzeni nazw XML przez URI może być problematyczne w różnych systemach, w których ścieżka klasy: // nic nie znaczy lub gdzie http: // jest niedozwolony, lub gdzie niektóre URI nie wskazują na to samo, co na inny system.
Próbka kodu ważnego i nieprawidłowego importu i obejmuje:
Ważny:
<xsd:import namespace="some/name/space"/>
<xsd:import schemaLocation="classpath://mine.xsd"/>
<xsd:include schemaLocation="classpath://mine.xsd"/>
Nieważny:
<xsd:include namespace="some/name/space"/>
namespace
Atrybut <xs:import>
) są zawsze OK i są traktowane jako identyfikator (tylko tekst, nie interpretowany), podczas gdy schemaLocation
(adres URL nie jest identyfikatorem URI) musi być zazwyczaj przetworzony, aby został rozwiązany. I rzeczywiście, specyficzny dla Java schematclasspath:
URL może nic nie znaczyć. Ale oprócz tego zgrabnego wyboru jest to cenny komentarz, dzięki.
Też mnie to interesuje. Jedyne wyjaśnienie, które znalazłem, xsd:include
jest używane dla inkluzji w przestrzeni nazw, a xsd:import
dla inkluzji w przestrzeni nazw.
Bezpośredni cytat z MSDN: <xsd: import> Element, sekcja Uwagi
Różnica między elementem include a elementem importu polega na tym, że element importu pozwala na odwołania do komponentów schematu z dokumentów schematu z różnymi docelowymi przestrzeniami nazw, a element include dodaje komponenty schematu z innych dokumentów schematu, które mają tę samą docelową przestrzeń nazw (lub brak określonej docelowej przestrzeni nazw ) do zawierającego schemat. Krótko mówiąc, element importu pozwala używać komponentów schematu z dowolnego schematu; zawierać elementu pozwala dodać wszystkie składniki dołączonego schematu do schematu zawierającego.
Użyj xsd: include przenosi wszystkie deklaracje i definicje dokumentu schematu zewnętrznego do bieżącego schematu.
Użyj xsd: import, aby wprowadzić XSD z innej przestrzeni nazw i posłużyć do zbudowania nowego schematu poprzez rozszerzenie istniejących dokumentów schematu.