Nếu bạn có quyền kiểm soát định dạng XML, bạn nên giải quyết vấn đề từ trong ra ngoài. Thay vì đính kèm XML nhị phân, bạn nên nghĩ về cách bao bọc một tài liệu có nhiều phần, một trong số đó chứa XML.
Giải pháp truyền thống cho điều này là một kho lưu trữ (ví dụ: tar). Nhưng nếu bạn muốn giữ tài liệu kèm theo của mình ở định dạng dựa trên văn bản hoặc nếu bạn không có quyền truy cập vào thư viện lưu trữ tệp, thì cũng có một lược đồ chuẩn hóa được sử dụng nhiều trong email và HTTP là nhiều phần / * MIME với Nội dung-Chuyển-Mã hoá: nhị phân .
Ví dụ: nếu máy chủ của bạn giao tiếp qua HTTP và bạn muốn gửi tài liệu nhiều phần, tài liệu chính là tài liệu XML đề cập đến dữ liệu nhị phân, giao tiếp HTTP có thể trông giống như sau:
POST / HTTP/1.1
Content-Type: multipart/related; boundary="qd43hdi34udh34id344"
... other headers elided ...
--qd43hdi34udh34id344
Content-Type: application/xml
<myxml>
<data href="cid:data.bin"/>
</myxml>
--qd43hdi34udh34id344
Content-Id: <data.bin>
Content-type: application/octet-stream
Content-Transfer-Encoding: binary
... binary data ...
--qd43hdi34udh34id344--
Như trong ví dụ trên, XML tham chiếu đến dữ liệu nhị phân trong nhiều phần bao quanh bằng cách sử dụng cid
lược đồ URI là mã định danh cho tiêu đề Content-Id. Phần đầu của lược đồ này sẽ chỉ là tiêu đề MIME. Một lược đồ tương tự cũng có thể được sử dụng cho phản hồi HTTP. Tất nhiên trong giao thức HTTP, bạn cũng có tùy chọn gửi một tài liệu nhiều phần thành yêu cầu / phản hồi riêng biệt.
Nếu bạn muốn tránh gói dữ liệu của mình thành nhiều phần, hãy sử dụng URI dữ liệu:
<myxml>
<data href="data:application/something;charset=utf-8;base64,dGVzdGRhdGE="/>
</myxml>
Nhưng điều này có chi phí base64.