Theo thông số kỹ thuật để định vị lược đồ
có thể có hoặc không có thể truy xuất lược đồ thông qua tên không gian tên ... Cộng đồng người dùng và / hoặc thỏa thuận người tiêu dùng / nhà cung cấp có thể thiết lập các tình huống trong đó [cố gắng truy xuất xsd từ url không gian tên] là một chiến lược mặc định hợp lý
(cảm ơn vì đã rõ ràng, spec!)
và
trong trường hợp tác giả tài liệu (người hoặc không) tạo tài liệu có lược đồ cụ thể và bảo đảm rằng một số hoặc tất cả tài liệu phù hợp với lược đồ đó, lược đồLocation và noNamespaceSchemaLocation [thuộc tính] được cung cấp.
Vì vậy, về cơ bản với việc chỉ định một không gian tên, "có thể" XML của bạn sẽ được xác nhận hợp lệ đối với một xsd tại vị trí đó (ngay cả khi nó thiếu một schemaLocation
thuộc tính), tùy thuộc vào "cộng đồng" của bạn. Nếu bạn chỉ định một cụ thể schemaLocation
, thì về cơ bản nó có nghĩa là tài liệu xml "nên" phù hợp với xsd đã nói, vì vậy "vui lòng xác thực nó" (khi tôi đọc nó). Tôi đoán là nếu bạn không làm một schemaLocation
hoặc noNamespaceSchemaLocation
thuộc tính thì nó hầu như "không được xác thực" trong hầu hết thời gian (dựa trên các câu trả lời khác, xuất hiện java thực hiện theo cách này).
Một nếp nhăn khác ở đây là thông thường, với xác thực xsd trong các thư viện java [ví dụ: tệp xml cấu hình mùa xuân], nếu các tệp XML của bạn chỉ định một schemaLocation
url xsd cụ thể trong một tệp XML, như xsi:schemaLocation="http://somewhere http://somewhere/something.xsd"
thông thường trong một trong các tệp phụ thuộc của bạn, nó sẽ chứa một bản sao của tệp xsd đó, trong phần tài nguyên của nó và spring có khả năng "ánh xạ" để xử lý tệp xsd đó như thể nó ánh xạ tới url http://somewhere/something.xsd
(vì vậy bạn sẽ không bao giờ truy cập web và tải xuống tệp, nó chỉ tồn tại cục bộ). Xem thêm https://stackoverflow.com/a/41225329/32453 để biết thêm thông tin.