Tại sao họ nói rằng XML cung cấp an toàn kiểu và nó được thể hiện như thế nào trong chính XML?
Làm thế nào nó khác với JSON (ví dụ) mà (theo tôi hiểu) không phải là loại an toàn?
Tại sao họ nói rằng XML cung cấp an toàn kiểu và nó được thể hiện như thế nào trong chính XML?
Làm thế nào nó khác với JSON (ví dụ) mà (theo tôi hiểu) không phải là loại an toàn?
Câu trả lời:
Do Định nghĩa Lược đồ XML (XSD).
Với XML, bạn có thể có một tệp bổ sung mô tả lược đồ. Ví dụ, nó chỉ ra rằng phần tử /a/b
là một mảng và chứa từ 1 đến 10 phần tử hoặc phần tử đó /a/c
là một số nguyên. Bạn có thể tìm thấy một ví dụ về XSD tại đây .
Xác thực một tệp XML đã cho thông qua XSD được hỗ trợ bởi nhiều ngôn ngữ . Ví dụ, một ứng dụng .NET có thể yêu cầu một tệp XML từ một nguồn không đáng tin cậy và kiểm tra xem nó có khớp với XSD không ; sau đó, nó có thể lưu nó vào cơ sở dữ liệu Microsoft SQL Server, có thể lần lượt chứa XSD và kiểm tra lại (để đảm bảo rằng bất kỳ máy khách nào có quyền truy cập vào cơ sở dữ liệu đều tuân thủ).
XSD không phải là ngôn ngữ duy nhất.
Nếu bạn đã thực hiện phát triển web, bạn chắc chắn đã nghe về ngôn ngữ đánh dấu trong Định nghĩa loại tài liệu (DTD), định nghĩa cấu trúc của XML và được sử dụng đặc biệt là để xác thực nội dung liên quan đến HTML. Mặc dù nó không thể thực hiện tất cả những gì XSD có thể, chẳng hạn như đảm bảo rằng một phần tử hoặc thuộc tính chứa số nguyên, nó vẫn có thể thực hiện một loạt các kiểm tra cấu trúc.
THƯ GIÃN NG có một lợi ích là tương đối đơn giản so với các ngôn ngữ khác và có thể được viết ở dạng gọn hơn so với XML.
Schematron là một ngôn ngữ xác thực dựa trên quy tắc khác của Wikipedia để đưa ra các xác nhận về sự hiện diện hoặc vắng mặt của các mẫu trong cây XML ( Wikipedia ) và trình bày một cách tiếp cận hơi khác, dựa trên các xác nhận XPath.
Những sáng kiến tương tự cho JSON không phổ biến (đặc biệt, tôi tin rằng, trong thế giới doanh nghiệp tập trung vào Microsoft). Một trong những lý do là JSON được dành cho các tình huống trong đó cấu trúc dữ liệu khá cơ bản (ví dụ: có thể được biểu thị dưới dạng cây, không cần thuộc tính) và không nhất thiết phải được xác nhận. Một ví dụ tuyệt vời là API REST được sử dụng bởi ngôn ngữ được nhập động:
/something/percentage
là số thực tế và nằm trong phạm vi 0..100).XML có thể là loại an toàn, vì các lược đồ XSD có thể khai báo kiểu dữ liệu của các phần tử. Một tài liệu được xác nhận hợp lệ đối với lược đồ XSD được đảm bảo phù hợp với các loại dự kiến. Nhưng định dạng XML không bắt buộc phải có lược đồ, do đó, một tài liệu không tự động gõ an toàn chỉ bằng cách là XML.
Thực tế cũng tồn tại một ngôn ngữ lược đồ cho JSON , vì vậy hãy nhập JSON an toàn. Nhưng nó hiếm khi được sử dụng, vì vậy, JSON không phải là loại an toàn.
Trong khoa học máy tính, an toàn kiểu là mức độ mà ngôn ngữ lập trình không khuyến khích hoặc ngăn ngừa lỗi loại.
Loại an toàn không phải là một thuộc tính tuyệt đối. Nó không phải là boolean. Ngôn ngữ (và XML và JSON là ngôn ngữ) cho phép và ngăn ngừa các loại lỗi và lỗi khác nhau. Ví dụ bạn có thể đặt tên sai cho các thành phần. Nhưng bạn không thể bỏ qua các yếu tố cú pháp cần thiết như đóng thẻ và dấu ngoặc nhọn.
Plain XML và JSON khá an toàn giống nhau (hoặc không an toàn kiểu). Một chuỗi XML / JSON hợp lệ có cấu trúc cú pháp và ngữ nghĩa nhất định nhưng điều này gần như không bao giờ là đủ để một ứng dụng hoạt động với nó. Các ứng dụng không chỉ là một cấu trúc mà là một cấu trúc cụ thể.
XML tỏa sáng với Định nghĩa lược đồ XML (XSD), đây là một cách linh hoạt và mạnh mẽ để xác thực một tài liệu XML nhất định đối với một lược đồ. Điều này cung cấp rất nhiều loại an toàn theo định nghĩa được đưa ra ở trên.