Tôi nên gửi giá trị Loại nội dung nào cho sơ đồ trang web XML của mình?


128

Tôi nghĩ rằng tôi nên gửi "văn bản / xml", nhưng sau đó tôi đọc rằng tôi nên gửi "application / xml". Có vấn đề gì không? Ai đó có thể giải thích sự khác biệt?

Câu trả lời:


160

Sự khác biệt giữa text / xmlapplication / xml là mã hóa ký tự mặc định nếu tham số bộ ký tự bị bỏ qua:

Văn bản / xml và application / xml hoạt động khác nhau khi tham số bộ ký tự không được chỉ định rõ ràng. Nếu bộ ký tự mặc định (ví dụ: US-ASCII) cho văn bản / xml không thuận tiện vì một số lý do (ví dụ: máy chủ web xấu), application / xml cung cấp giải pháp thay thế (xem "Tham số tùy chọn" của đăng ký ứng dụng / xml trong Phần 3.2).

Đối với văn bản / xml :

Phù hợp với [RFC2046], nếu nhận được một thực thể văn bản / xml với tham số bộ ký tự, bộ xử lý MIME và bộ xử lý XML PHẢI sử dụng giá trị bộ ký tự mặc định của "us-ascii" [ASCII]. Trong trường hợp thực thể MIME XML được truyền qua HTTP, giá trị bộ ký tự mặc định vẫn là "us-ascii".

Đối với ứng dụng / xml :

Nếu một thực thể ứng dụng / xml được nhận trong đó tham số bộ ký tự bị bỏ qua, không có thông tin nào được cung cấp về bộ ký tự theo tiêu đề MIME Content-Type. Tuân thủ các bộ xử lý XML PHẢI tuân theo các yêu cầu trong phần 4.3.3 của [XML] trực tiếp giải quyết tình huống này. Tuy nhiên, bộ xử lý MIME không phải là bộ xử lý XML KHÔNG NÊN sử dụng bộ ký tự mặc định nếu tham số bộ ký tự bị bỏ qua khỏi thực thể ứng dụng / xml.

Vì vậy, nếu tham số bộ ký tự bị bỏ qua, mã hóa ký tự của văn bản / xml là US-ASCII trong khi với ứng dụng / xml , mã hóa ký tự có thể được chỉ định trong chính tài liệu.

Bây giờ một nguyên tắc nhỏ trên internet là: Tử Hãy nghiêm khắc với đầu ra nhưng hãy khoan dung với đầu vào. Điều đó có nghĩa là đảm bảo đáp ứng các tiêu chuẩn càng nhiều càng tốt khi cung cấp dữ liệu qua internet. Nhưng xây dựng trong một số cơ chế để bỏ qua lỗi hoặc đoán khi nhận và giải thích dữ liệu qua internet.

Vì vậy, trong trường hợp của bạn chỉ cần chọn một trong hai loại (Tôi khuyên bạn nên application / xml ) và chắc chắn để xác định nhân vật đã qua sử dụng mã hóa đúng cách (Tôi khuyên bạn nên sử dụng mã hóa ký tự mặc định tương ứng để chơi an toàn, vì vậy trong trường hợp của application / xml sử dụng UTF-8 hoặc UTF-16).


24

Theo nguyên tắc thông thường, đặt cược an toàn nhất để làm cho tài liệu của bạn được xử lý đúng cách bởi tất cả các máy chủ web, proxy và trình duyệt máy khách, có thể là như sau:

  1. Sử dụng loại nội dung ứng dụng / xml
  2. Bao gồm mã hóa ký tự trong loại nội dung, có thể là UTF-8
  3. Bao gồm mã hóa ký tự trùng khớp trong thuộc tính mã hóa của chính tài liệu XML.

Về thông số kỹ thuật RFC 3023 , một số trình duyệt không thực hiện đúng, sự khác biệt chính trong các loại nội dung là cách khách hàng có nghĩa vụ xử lý mã hóa ký tự, như sau:

Đối với application / xml, application / xml-dtd, application / xml-outs-Parsed-entity hoặc bất kỳ một kiểu con nào của ứng dụng / xml, chẳng hạn như application / atom + xml, application / rss + xml hoặc application / rdf + xml , mã hóa ký tự được xác định theo thứ tự này:

  1. mã hóa được đưa ra trong tham số bộ ký tự của tiêu đề HTTP Kiểu nội dung
  2. mã hóa được đưa ra trong thuộc tính mã hóa của khai báo XML trong tài liệu,
  3. utf-8.

Đối với văn bản / xml, văn bản / xml-bên ngoài được phân tích cú pháp-thực thể hoặc một kiểu con như văn bản / foo + xml, thuộc tính mã hóa của khai báo XML trong tài liệu bị bỏ qua và mã hóa ký tự là:

  1. mã hóa được đưa ra trong tham số bộ ký tự của tiêu đề HTTP Kiểu nội dung hoặc
  2. chúng tôi-ascii.

Hầu hết các trình phân tích cú pháp không thực hiện thông số kỹ thuật; họ bỏ qua Kiểu ngữ cảnh HTTP và chỉ sử dụng mã hóa trong tài liệu. Với rất nhiều tài liệu không rõ ràng ngoài kia, điều đó khó có thể thay đổi sớm.


9

cả hai đều ổn.

text / xxx có nghĩa là trong trường hợp chương trình không hiểu xxx, sẽ hiển thị tệp cho người dùng dưới dạng văn bản thuần túy. ứng dụng / xxx có nghĩa là nó là vô nghĩa để hiển thị nó.

Xin lưu ý rằng các loại nội dung đó ban đầu được xác định cho tệp đính kèm E-Mail trước khi chúng được sử dụng sau này trong thế giới Web.


6

text / xml dành cho các tài liệu có ý nghĩa đối với con người nếu được trình bày dưới dạng văn bản mà không cần xử lý thêm, application / xml dành cho mọi thứ khác

Mọi thực thể XML đều phù hợp để sử dụng với loại phương tiện ứng dụng / xml mà không cần sửa đổi. Nhưng điều này không khai thác thực tế rằng XML có thể được coi là văn bản thuần túy trong nhiều trường hợp. Các tác nhân người dùng MIME (và các tác nhân người dùng web) không có hỗ trợ rõ ràng cho ứng dụng / xml sẽ coi nó là ứng dụng / octet-stream, ví dụ, bằng cách cung cấp để lưu nó vào một tệp.

Để chỉ ra rằng một thực thể XML phải được coi là văn bản thuần theo mặc định, sử dụng loại phương tiện văn bản / xml. Điều này hạn chế mã hóa được sử dụng trong thực thể XML đối với các yêu cầu tương thích với các yêu cầu đối với loại phương tiện văn bản như được mô tả trong [RFC-2045] và [RFC-2046], ví dụ: UTF-8, nhưng không phải là UTF-16 (ngoại trừ HTTP).

- http://www.ietf.org/rfc/rfc2376.txt


Tuy nhiên, thật buồn cười là loại MIME HTML ưa thích là text/htmlvà loại MIME XHTML ưa thích là application/xhtml+xml.
zneak

1
Không hẳn vậy. text/htmlđã có từ rất lâu, và đã hơi muộn để thay đổi nó.
Quentin

1

Các câu trả lời khác ở đây giải quyết câu hỏi chung về mức độ phù hợp Content-Typecủa phản hồi XML là gì và kết luận (như với sự khác biệt giữa văn bản / xml so với ứng dụng / xml đối với phản hồi dịch vụ web ) là cả hai text/xmlapplication/xmlđều được cho phép. Tuy nhiên, không có địa chỉ nào cho dù có bất kỳ quy tắc cụ thể nào cho sơ đồ trang web .

Trả lời: không có. Thông số sơ đồ trang web là https://www.sitemaps.org và sử dụng các site:tìm kiếm của Google, bạn có thể xác nhận rằng nó không chứa các từ hoặc cụm từ mime , mimetype , loại nội dung , ứng dụng / xml hoặc văn bản / xml ở bất cứ đâu. Nói cách khác, nó hoàn toàn im lặng về chủ đề những gì Content-Typenên được sử dụng để phục vụ sơ đồ trang web.

Trong trường hợp không có bất kỳ bình luận nào trong thông số sơ đồ trang web trực tiếp giải quyết câu hỏi này, chúng tôi có thể giả định một cách an toàn rằng các quy tắc tương tự được áp dụng như khi chọn Content-Typebất kỳ tài liệu XML nào khác - nghĩa là nó có thể text/xmlhoặc application/xml.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.