2010-07-17 23 views

Trả lời

136

Các difference between text/xml and application/xml là mã hóa ký tự mặc định nếu charset tham số được ommitted:

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

Đối text/xml:

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

Đối application/xml:

Nếu một thực thể application/xml nhận được nơi tham số charset được bỏ qua, không có thông tin được cung cấp về charset bởi header MIME Content-Type. Tuân thủ các bộ xử lý XML PHẢI tuân thủ 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 NÊN KHÔNG giả sử bộ ký tự mặc định nếu tham số ký tự được bỏ qua từ thực thể ứng dụng/xml.

Vì vậy, nếu charset tham số được bỏ qua, mã hóa ký tự của text/xml là US-ASCII trong khi với application/xml mã hóa ký tự có thể được quy định tại văn bản riêng của mình.

Bây giờ, quy tắc chung trên internet là: “Hãy nghiêm khắc với đầu ra nhưng phải chịu đựng 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 phân phối 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 mã hóa ký tự sử dụng đú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 ứng dụng/xml sử dụng UTF-8 hoặc UTF-16).

6

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

Mỗi thực thể XML là phù hợp để sử dụng với các ứng dụng/xml phương tiện truyền thông loại mà không sửa đổi. Nhưng điều này không khai thác thực tế là XML có thể được coi là văn bản thuần túy trong nhiều trường hợp. 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ẽ xử lý ứng dụng/octet-stream, ví dụ bằng cách cung cấp để lưu tệp vào một tệp.

Để cho biết rằng một thực thể XML phải được xử lý dưới dạng văn bản thuần túy theo mặc định , hãy 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 cho các đối tượng tương thích với yêu cầu cho các loại phương tiện văn bản như được mô tả trong [RFC-2045] và [RFC-2046], ví dụ: UTF-8, chứ không phải UTF-16 (ngoại trừ HTTP).

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

+0

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

+1

Không thực sự. 'text/html' đã tồn tại trong một thời gian rất dài và đã hơi muộn để thay đổi nó. – Quentin

9

cả hai đều tốt.

văn bản/xxx có nghĩa là trong trường hợp chương trình không hiểu xxx, có nghĩa là 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.

22

Như một quy tắc của ngón tay cái, đặt cược an toàn nhất đối với việc tài liệu của bạn được điều trị đúng cách bởi tất cả các máy chủ web, proxy, và các trình duyệt khách hàng, có lẽ là như sau:

  1. Sử dụng application/xml kiểu nội dung
  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ự phù hợp trong thuộc tính mã hóa của chính tài liệu XML.

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

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

  1. mã hóa được cung cấp trong bộ mã ký tự er của tiêu đề HTTP Content-Type
  2. mã hóa được cung cấp 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-phân tách cú pháp bên ngoài hoặc loại phụ 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ố charset của HTTP header Content-Type, hoặc
  2. us-ascii.

Hầu hết các trình phân tích cú pháp đều không triển khai thông số; họ bỏ qua HTTP Context-Type và chỉ sử dụng mã hóa trong tài liệu. Với rất nhiều tài liệu bị hình thành ngoài kia, điều đó sẽ không thay đổi sớm.

Các vấn đề liên quan