Sự khác biệt giữa xsd: bao gồm và xsd: nhập khẩu là gì?


Câu trả lời:


205

Sự khác biệt cơ bản giữa includeimportlà 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


Tôi thấy những lời giải thích này cũng hữu ích: xsd.stylusstudio.com/2005Mar/post05007.htm msdn.microsoft.com/en-us/l
Pops

Các bài stylusstudio rằng @Pops đề cập đến là ở đây: web.archive.org/web/20140831005739/http://xsd.stylusstudio.com/...
tony19


19

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"/>

Tôi nghĩ rằng bạn có nghĩa là đề cập đến các không gian tên XML theo URL vị trí chứ không phải bằng URI . Các URI không gian tên (tức là namespacethuộ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.
ddevienne

7

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:importlà để bao gồm không gian tên.


0

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.


-3

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ó ..

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.