Podstawowa różnica między includei importpolega na tym, że należy używać, importaby odnosić się do deklaracji lub definicji, które znajdują się w innej docelowej przestrzeni nazw, i należy używać, includeaby odnosić się do deklaracji lub definicji, które są (lub będą) w tym samym docelowej 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:
Myślę, że masz na myśli odwoływanie się do przestrzeni nazw XML według adresów URL lokalizacji zamiast URI . Identyfikatory URI przestrzeni nazw (tj. namespaceAtrybut <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.
ddevienne
7
Też mnie to interesuje. Jedyne wyjaśnienie, które znalazłem, xsd:includejest używane dla inkluzji w przestrzeni nazw, a xsd:importdla inkluzji w przestrzeni nazw.
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.
Odpowiedzi:
Podstawowa różnica między
include
iimport
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
źródło
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.
źródło
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:
Nieważny:
źródło
namespace
Atrybut<xs:import>
) są zawsze OK i są traktowane jako identyfikator (tylko tekst, nie interpretowany), podczas gdyschemaLocation
(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, axsd:import
dla inkluzji w przestrzeni nazw.źródło
Bezpośredni cytat z MSDN: <xsd: import> Element, sekcja Uwagi
źródło
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.
źródło