Câu trả lời:
Sự khác biệt cơ bản giữa include
và import
là bạn phải sử dụng import
để tham chiếu đến các khai báo hoặc định nghĩa trong một không gian tên đích khác nhau và bạn phải sử dụng include
để chỉ các khai báo hoặc định nghĩa trong (hoặc sẽ) trong cùng một không gian tên đích.
Nguồn: https://web.archive.org/web/20070804031046/http://xsd.stylusstudio.com/2002Jun/post08016.htmlm
Sử dụng xsd: bao gồm để mang XSD từ cùng hoặc không có không gian tên.
Sử dụng xsd: import để mang XSD từ một không gian tên khác .
Một sự khác biệt khác là <import>
cho phép nhập bằng cách tham chiếu đến một không gian tên khác. <include>
chỉ cho phép nhập bằng cách tham khảo URI của lược đồ bao gồm dự định. Đó chắc chắn là một sự khác biệt khác so với nhập không gian tên nội bộ.
Ví dụ, trình xác thực lược đồ xml có thể đã biết vị trí của tất cả các lược đồ theo không gian tên . Đặc biệt xem xét rằng việc tham chiếu đến các không gian tên XML của URI có thể có vấn đề trên các hệ thống khác nhau trong đó classpath: // có nghĩa là không có gì, hoặc khi http: // không được phép hoặc khi một số URI không trỏ đến điều tương tự như trên hệ thống khác.
Mẫu mã nhập khẩu hợp lệ và không hợp lệ và bao gồm:
Có hiệu lực:
<xsd:import namespace="some/name/space"/>
<xsd:import schemaLocation="classpath://mine.xsd"/>
<xsd:include schemaLocation="classpath://mine.xsd"/>
Không hợp lệ:
<xsd:include namespace="some/name/space"/>
namespace
thuộc tính của <xs:import>
) luôn OK và được coi là một định danh (chỉ là văn bản, không được giải thích), trong khi schemaLocation
(một URL không phải là URI) thường phải được xử lý, để được giải quyết. Và thực sự, lược đồclasspath:
URL dành riêng cho Java có thể không có nghĩa gì. Nhưng bên cạnh lựa chọn gọn gàng này, đây là một nhận xét có giá trị, cảm ơn.
Tôi cũng quan tâm đến điều này. Giải thích duy nhất tôi tìm thấy là xsd:include
được sử dụng cho các vùi trong không gian tên, trong khi đó xsd:import
là để bao gồm không gian tên.
Trích dẫn trực tiếp từ MSDN: <xsd: import> Phần tử, phần Nhận xét
Sự khác biệt giữa phần tử bao gồm và phần tử nhập là phần tử nhập cho phép tham chiếu đến các thành phần lược đồ từ các tài liệu lược đồ với các không gian tên đích khác nhau và phần tử bao gồm thêm các thành phần lược đồ từ các tài liệu lược đồ khác có cùng không gian tên đích (hoặc không có không gian tên đích được chỉ định ) vào lược đồ chứa. Nói tóm lại, phần tử nhập cho phép bạn sử dụng các thành phần lược đồ từ bất kỳ lược đồ nào; những bao gồm yếu tố cho phép bạn thêm tất cả các thành phần của một lược đồ bao gồm lược đồ chứa.
Sử dụng xsd: bao gồm mang tất cả các khai báo và định nghĩa của một tài liệu lược đồ bên ngoài vào lược đồ hiện tại.
Sử dụng xsd: import để đưa XSD từ một không gian tên khác và được sử dụng để xây dựng một lược đồ mới bằng cách mở rộng các tài liệu lược đồ hiện có ..