Bộ xác thực XSD
Một tài liệu XML được tạo đúng cấu trúc vẫn có thể chứa lỗi: thiếu một phần tử bắt buộc, sử dụng loại dữ liệu không phù hợp cho một thuộc tính, hoặc các phần tử sắp xếp sai thứ tự. XSD (Định nghĩa Sơ đồ XML) mô tả chính xác hình thức mà tài liệu cần có. Công cụ kiểm tra này sẽ so sánh tài liệu XML với định nghĩa XSD tương ứng, thực thi công cụ kiểm tra sơ đồ XML của W3C và liệt kê tất cả các lỗi bằng cách chỉ rõ dòng mã, phần tử cụ thể cùng ràng buộc đã bị vi phạm.
Cách xác thực XML theo tiêu chuẩn XSD
-
1
Dán cả hai tệp
Một bên là XML, bên kia là sơ đồ XSD; nhiều sơ đồ có thể được dán ghép với nhau.
-
2
Thực hiện kiểm tra hiệu lực
Bộ phân tích cú pháp so sánh các phần tử, thuộc tính và kiểu với các tuyên bố sơ đồ.
-
3
Xem xét các lỗi
Mỗi vi phạm đều hiển thị đường dẫn của phần tử, ràng buộc dự kiến và giá trị thực tế.
-
4
Sửa và xác thực lại
Chỉnh sửa ngay tại chỗ và chạy lại mà không cần tải lại.
Những điều mà XSD kiểm tra
- Tên các phần tử và số lượng tối thiểu/tối đa: bắt buộc, tùy chọn; số lần xuất hiện tối thiểu/tối đa.
- Thứ tự các phần tử: tuần tự, lựa chọn, tất cả.
- Tình trạng và loại thuộc tính: bắt buộc so với tùy chọn; giá trị mặc định; giá trị cố định.
- Loại dữ liệu:
xs:string,xs:integer,xs:decimal,xs:dateTime,xs:boolean,xs:anyURI, tùy chỉnh. - Các giới hạn: độ dài tối thiểu/tối đa, danh sách các giá trị có thể chọn, mẫu văn bản định dạng regex, giá trị tối thiểu/tối đa.
- Tính toàn vẹn tham chiếu:
xs:key,xs:keyref,xs:uniquedùng để xác định các ràng buộc giữa các phần tử.
Các lỗi điển hình
| Lỗi | Yêu cầu XSD |
|---|---|
Thiếu thành phần cần thiết <email> |
minOccurs="1" |
Số lượng phần tử <phone> quá nhiều |
Vượt quá maxOccurs="2" |
| Giá trị “abc” không phải là số nguyên hợp lệ | type="xs:integer" |
| Giá trị “[email protected]” không khớp với mẫu | xs:pattern trên xs:string |
| Các thành phần không đúng thứ tự | xs:sequence |
Thành phần chưa xác định <foo> |
Không được khai báo trong sơ đồ |
| Khóa trùng lặp | Vi phạm xs:unique |
Chọn giữa XSD và các phương án thay thế
- XSD: Tiêu chuẩn của W3C, mô tả chi tiết, mạnh mẽ và được hỗ trợ rộng rãi; là lựa chọn hàng đầu cho XML trong môi trường doanh nghiệp.
- RELAX NG: cú pháp đơn giản hơn nhưng vẫn mang tính biểu đạt ngang bằng; được sử dụng phổ biến trong các định dạng tài liệu (DocBook, TEI).
- Schematron: dựa trên các quy tắc, thực hiện các điều kiện XPath trên tài liệu; rất phù hợp với các quy tắc kinh doanh vượt ra ngoài phạm vi cấu trúc.
- DTD: là định dạng cũ hơn và kém biểu đạt hơn nhiều; vẫn được sử dụng nhằm đảm bảo tính tương thích lịch sử với HTML.
Nhiều dự án sử dụng XSD để xác định cấu trúc và Schematron để thiết lập các quy tắc phức tạp liên ngành.
Những lỗi phổ biến
- Các không gian tên phải trùng khớp. Nếu XSD khai báo không gian tên
targetNamespace="http://example.com"nhưng file XML không sử dụng không gian tên đó thì quá trình xác thực sẽ thất bại với thông báo “không tìm thấy khai báo”. - xs:anyType không phải là giải pháp thần kỳ nào cả. Nó có thể khớp với mọi dữ liệu, nhưng hoàn toàn không cung cấp bất kỳ xác thực nào.
- Các giá trị mặc định chỉ được áp dụng khi thuộc tính không có giá trị. Một giá trị trống rõ ràng (
attr="") sẽ không nhận được giá trị mặc định. - Cách xử lý khoảng trắng khác nhau tùy theo loại:
xs:stringgiữ nguyên khoảng trắng;xs:tokenco lại khoảng trắng;xs:normalizedStringthay thế các tab hoặc dòng mới bằng khoảng trắng.
Quy trình gỡ lỗi
- Xác thực trước bằng cách không sử dụng sơ đồ dữ liệu (kiểm tra tính hợp lệ của cấu trúc dữ liệu). Sửa các lỗi phân tích.
- Sau đó, xác thực theo sơ đồ dữ liệu.
- Tập trung vào lỗi đầu tiên. Các công cụ kiểm tra XSD đôi khi xuất hiện nhiều lỗi liên tiếp; trong số đó, lỗi đầu tiên thường là lỗi có thể xử lý được dễ dàng nhất.
- Sử dụng XPath để xác định phần tử gây lỗi trong các tài liệu lớn.
Câu hỏi thường gặp
Không. Hãy dán chúng riêng biệt hoặc tham chiếu đến sơ đồ thông qua mã xsi:schemaLocation trong file XML. Hầu hết các công cụ đều hỗ trợ cả hai phương pháp này.
Đúng vậy. Khi các thành phần từ các không gian tên khác nhau xuất hiện, mỗi thành phần đều cần có sơ đồ riêng. Hãy dán tất cả chúng vào; bộ kiểm tra sẽ tự động tải toàn bộ.
XSD 1.0. Engine libxml được dùng bên dưới không triển khai XSD 1.1, nên các tính năng riêng của 1.1 như khẳng định (assertions), kiểu điều kiện và nội dung mở không được áp dụng.
Không. XML và sơ đồ của bạn chỉ được gửi tới máy chủ để chạy xác thực cho riêng yêu cầu đó; sau đó chúng không được lưu trữ hay ghi nhật ký.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bảng tham khảo phím tắt
Tìm phím tắt mặc định theo tài liệu của VS Code, Chrome và Bash dùng GNU Readline trên macOS, Windows và Linux.
Trình giải mã mã JavaScript (JavaScript Deobfuscator)
Giải mã mã JavaScript đã được rút gọn hoặc nén bằng cách đổi tên biến, giải mã chuỗi và mảng, đảo ngược cấu trúc dòng điều khiển và làm đẹp mã.
Chuyển đổi từ RGB sang CMYK
Chuyển màu RGB thành phần trăm mực CMYK bằng công thức tiêu chuẩn. Xem trước tức thì và các giá trị C/M/Y/K. Đây là phép xấp xỉ toán học, không phải chuyển đổi có quản lý màu.
Trình chuyển ASCII sang Hex
Biến văn bản ASCII thành giá trị byte thập lục phân. Đầu ra dùng hai chữ số hex cho mỗi ký tự, sẵn sàng cho memory dump, packet trace hoặc bảng firmware.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- XSD-Validator [DE]
- Validador XSD [PT]
- XSD-validerare [SV]
- เครื่องตรวจสอบความถูกต้องของ XSD (XSD Validator) [TH]
- Validator XSD [ID]
- XSD 검증기 [KO]
- Validador XSD [ES]
- XSDバリデーター [JA]
- مُحقق تنسيق XSD [AR]
- Validateur XSD [FR]
- XSD-validator [NL]
- Walidator XSD [PL]
- Validator XSD [IT]
- Валидатор XSD [RU]
- XSD Doğrulayıcı [TR]
- XSD 校验工具 [ZH]
- XSD Validator [EN]