Tiếng Việt

Công cụ dành cho nhà phát triển · Trình chuyển đổi cú pháp

Dòng dõi của XML từ SGML: tại sao nó có các thuộc tính, không gian tên và DTD

· Lý lịch

xml data-formats bảo vệ

XML thuộc tính, tiền tố vùng tên và văn bản hỗn hợp bên cạnh DOCTYPE bị từ chối
Hình minh họa vector ToolAcre gốc

Những điểm kỳ lạ của XML (thuộc tính so với thành phần, không gian tên, DTD, nội dung hỗn hợp) sẽ có ý nghĩa khi bạn biết nó được thiết kế dưới dạng SGML đơn giản hóa cho tài liệu chứ không phải cho dữ liệu. Bài đăng này theo dõi dòng dõi đó và ý nghĩa của nó khi bạn chuyển đổi XML thành JSON.

Tại sao định dạng dữ liệu này có thuộc tính? — một nhà phát triển đang chuyển đổi XML thành JSON và đáp ứng sự khác biệt JSON không bao giờ cần thiết

JSON có một loại thuộc tính đối tượng; XML phân biệt các thuộc tính, phần tử con và văn bản. ToolAcre ánh xạ sự khác biệt đó với các thuộc tính `@` và các khóa con thông thường. Sự khác biệt hiển thị khi một phần tử có cả `id="7"` và phần tử con `<id>`: cả hai đều tồn tại dưới các thuộc tính riêng biệt.

Quy ước này giải thích hình dạng kết quả mà không khẳng định rằng các thuộc tính có một vai trò ngữ nghĩa phổ quát. XML tác giả chọn chúng theo lược đồ của riêng họ. Trình chuyển đổi duy trì danh mục nút mà nó có thể quan sát, chứ không phải lý do kinh doanh mà nó được chọn.

SGML và truyền thống tài liệu — ISO 8879, đánh dấu để xuất bản và ý tưởng gắn thẻ văn bản thay vì mã hóa bản ghi

Nội dung hỗn hợp, thứ tự con, thuộc tính, nhận xét và hướng dẫn xử lý là các tính năng hướng tài liệu có trong nguồn XML. Việc triển khai thể hiện cách xử lý của họ nhưng không chứa bằng chứng về SGML niên đại, ISO lịch sử xuất bản hoặc động cơ của ngành xuất bản.

Do đó, một bài viết có giới hạn nguồn bắt đầu từ hành vi thực thi. Văn bản xung quanh các phần tử con bị mất dữ liệu; các bình luận và hướng dẫn xử lý bị loại bỏ; CDATA vẫn được đánh dấu. Những dữ kiện đó giải thích tại sao cây tài liệu không hoàn toàn phù hợp với cây giá trị JSON.

Các tính năng XML hướng tài liệu hiển thị trong quá trình triển khai mà không cần xác nhận lịch sử SGML

Trình phân tích cú pháp xác thực XML được định dạng đúng và báo cáo dòng và cột. Nó bỏ qua khai báo trong giá trị kết quả và giữ nguyên năm thực thể dựng sẵn và tham chiếu ký tự số dưới dạng văn bản được giải mã. Nó không thiết lập các mục tiêu của nhóm làm việc hoặc một tài khoản thiết kế gồm 10 nguyên tắc.

Những tuyên bố lịch sử cần các nguồn biên tập bên ngoài, nhiệm vụ này không bổ sung thêm. Việc bỏ qua chúng sẽ chính xác hơn việc phát minh ra sự tuân thủ hoặc xuất xứ từ tên phụ thuộc.

Trình phân tích cú pháp xử lý cú pháp XML; bằng chứng kho lưu trữ không thiết lập lịch sử thiết kế 1998

Các thuộc tính trở thành khóa có tiền tố `@`; các phần tử vẫn giữ nguyên tên của chúng. Văn bản bên trong phần tử có cấu trúc sẽ di chuyển đến `#text`, trong khi phần tử chỉ có văn bản sẽ thu gọn thành một chuỗi. Điều này giữ cho các danh mục cấu trúc tách biệt nhau trong chừng mực mà mô hình đối tượng cho phép.

Viết XML đảo ngược quy ước: `@id` trở thành một thuộc tính. Tên thuộc tính hoặc thành phần không hợp lệ sẽ bị từ chối thay vì được loại bỏ. Quyết định đó khiến cho ánh xạ không đúng định dạng không trở nên hợp lý XML với các tên được âm thầm thay đổi.

Các thuộc tính và thành phần vẫn khác biệt theo quy ước @ của ToolAcre

Tiền tố vùng tên được giữ nguyên nguyên văn trong tên thành phần và thuộc tính, bao gồm cả phần khai báo vùng tên. Chúng không được giải quyết, loại bỏ hoặc viết lại. Điều này bảo tồn chính tả nguồn nhưng không phải là độ phân giải loại nhận biết không gian tên.

Mọi DOCTYPE đều bị từ chối trước khi trình phân tích cú pháp xml nhanh nhận được tài liệu. Mặt nạ tránh kết quả trùng khớp sai bên trong nhận xét và CDATA. Điều này ngăn cản các yêu cầu thực thể bên ngoài, việc đọc thực thể tệp cục bộ và các cuộc tấn công mở rộng thực thể mà không có tùy chọn nào để bỏ qua việc từ chối.

Tiền tố không gian tên được giữ lại theo nghĩa đen và mọi DOCTYPE đều bị từ chối

Trong `<p>before<b>bold</b>after</p>`, vị trí văn bản rất quan trọng. ToolAcre phát hiện nội dung hỗn hợp, nối các đoạn trong `#text` và cảnh báo rằng vị trí của chúng so với trẻ em bị mất. Các thuộc tính đối tượng JSON không thể tái tạo một chuỗi có thứ tự các nút văn bản và phần tử xen kẽ.

Các phần tử con có cùng tên được lặp lại sẽ trở thành mảng, nhưng các phần tử anh chị em có tên khác nhau vẫn là thuộc tính. Mã yêu cầu thứ tự tài liệu chính xác phải sử dụng biểu diễn nút XML thay vì coi đối tượng được chuyển đổi là hoàn chỉnh.

Điều này không bao gồm những gì — XSLT, XPath và XQuery, các ngôn ngữ xử lý phát triển xung quanh XML

XSLT, XPath và XQuery không được nhập hoặc hiển thị. Bảng điều khiển cũng không xác thực XSD, xử lý các khai báo DTD hoặc xây dựng các đối tượng miền đã nhập. Đó là một phép chiếu dữ liệu có ranh giới bảo mật và độ trung thực rõ ràng.

Ngôn ngữ truy vấn hoặc chuyển đổi có thể duy trì và điều hướng thứ tự nút theo cách mà chuyển đổi giá trị đơn giản này không thể thực hiện được. Chọn công cụ đó khi các tính năng của tài liệu là một phần của công việc chứ không phải là việc đóng gói ngẫu nhiên.

Bài học rút ra: XML là định dạng tài liệu đã học cách mang dữ liệu — và cách bảng điều khiển Trình chuyển đổi cú pháp hiển thị những gì còn sót lại khi dịch sang JSON

Mô hình dữ liệu có thể quan sát của XML bao gồm những điểm khác biệt không có trong JSON. ToolAcre đánh dấu các thuộc tính, CDATA và văn bản có cấu trúc, giữ lại tiền tố vùng tên, loại bỏ các nút không phải dữ liệu và từ chối DOCTYPE. Mỗi lựa chọn đều có thể nhìn thấy và kiểm tra.

Sử dụng bảng điều khiển để tìm hiểu những gì còn sót lại trong phép chiếu chứ không phải dưới dạng cơ quan lịch sử hoặc bộ xử lý XML đầy đủ. Khi sắp xếp thứ tự, các lược đồ hoặc ngữ nghĩa của không gian tên đều quan trọng, hãy giữ nguyên cây ban đầu và sử dụng công cụ XML được xây dựng có mục đích.

Bảo mật và độ trung thực cũng giao nhau ở ranh giới DOCTYPE. Việc từ chối khai báo sẽ ngăn chặn việc xử lý thực thể, nhưng việc xóa nó khỏi tài liệu kế thừa tùy ý có thể thay đổi các tham chiếu thực thể hoặc các giả định xác thực. Nếu bạn sở hữu nguồn, hãy thay thế các thực thể được yêu cầu bằng văn bản an toàn rõ ràng và xác thực tài liệu thu được. Nếu bạn không sở hữu nó, hãy sử dụng quy trình làm việc XML đã được phê duyệt thay vì làm suy yếu việc từ chối hoặc trình bày một phần chuyển đổi làm nội dung gốc.