Nilai tipe konten apa yang harus saya kirim untuk sitemap XML saya?

128

Saya pikir saya harus mengirim "text / xml", tetapi kemudian saya membaca bahwa saya harus mengirim "application / xml". Apakah itu penting? Bisakah seseorang menjelaskan perbedaannya?

Kyle
sumber

Jawaban:

160

The perbedaan antara text / xml dan aplikasi / xml adalah karakter default encoding jika charset parameter dihilangkan:

Teks / xml dan aplikasi / xml berperilaku berbeda ketika parameter charset tidak ditentukan secara eksplisit. Jika charset default (yaitu, US-ASCII) untuk teks / xml tidak nyaman untuk beberapa alasan (misalnya, server web yang buruk), aplikasi / xml memberikan alternatif (lihat "Parameter opsional" pendaftaran aplikasi / xml pada Bagian 3.2).

Untuk teks / xml :

Sesuai dengan [RFC2046], jika entitas teks / xml diterima dengan parameter charset dihilangkan, prosesor MIME dan prosesor XML HARUS menggunakan nilai charset default "us-ascii" [ASCII]. Dalam kasus di mana entitas XML MIME ditransmisikan melalui HTTP, nilai charset default masih "us-ascii".

Untuk aplikasi / xml :

Jika entitas aplikasi / xml diterima di mana parameter charset dihilangkan, tidak ada informasi yang diberikan tentang charset oleh header Tipe Konten MIME. Sesuai dengan prosesor XML, HARUS mengikuti persyaratan di bagian 4.3.3 dari [XML] yang secara langsung membahas kemungkinan ini. Namun, prosesor MIME yang bukan prosesor XML HARUS TIDAK mengasumsikan charset default jika parameter charset dihilangkan dari entitas aplikasi / xml.

Jadi jika parameter charset dihilangkan, pengkodean karakter teks / xml adalah US-ASCII sementara dengan aplikasi / xml pengkodean karakter dapat ditentukan dalam dokumen itu sendiri.

Sekarang aturan praktis di internet adalah: "Ketat dengan output tetapi toleran dengan input." Itu berarti pastikan untuk memenuhi standar sebanyak mungkin saat mengirimkan data melalui internet. Tetapi membangun beberapa mekanisme untuk mengabaikan kesalahan atau menebak ketika menerima dan menafsirkan data melalui internet.

Jadi dalam kasus Anda hanya memilih salah satu dari dua jenis (saya sarankan aplikasi / xml ) dan pastikan untuk menentukan karakter yang digunakan pengkodean benar (saya sarankan untuk menggunakan pengkodean karakter default masing-masing untuk bermain aman, sehingga dalam kasus aplikasi / xml digunakan UTF-8 atau UTF-16).

Gumbo
sumber
24

Sebagai aturan praktis, taruhan teraman untuk membuat dokumen Anda diperlakukan dengan baik oleh semua server web, proxy, dan browser klien, mungkin adalah yang berikut:

  1. Gunakan tipe konten aplikasi / xml
  2. Sertakan pengkodean karakter dalam tipe konten, mungkin UTF-8
  3. Sertakan pengkodean karakter yang cocok dalam atribut pengkodean dokumen XML itu sendiri.

Dalam hal spesifikasi RFC 3023 , yang gagal diterapkan oleh beberapa browser dengan benar, perbedaan utama dalam tipe konten adalah bagaimana klien seharusnya memperlakukan pengkodean karakter, sebagai berikut:

Untuk aplikasi / xml, aplikasi / xml-dtd, aplikasi / xml-external-parsed-entity, atau salah satu dari subtipe aplikasi / xml seperti aplikasi / atom + xml, aplikasi / rss + xml atau aplikasi / rdf + xml , pengodean karakter ditentukan dalam urutan ini:

  1. pengkodean yang diberikan dalam parameter charset header HTTP Content-Type
  2. pengkodean yang diberikan dalam atribut pengkodean deklarasi XML dalam dokumen,
  3. utf-8.

Untuk teks / xml, teks / xml-eksternal-parsed-entitas, atau subtipe seperti teks / foo + xml, atribut penyandian deklarasi XML dalam dokumen diabaikan, dan pengkodean karakter adalah:

  1. pengkodean yang diberikan dalam parameter charset header HTTP Content-Type, atau
  2. kami-ascii.

Kebanyakan parser tidak mengimplementasikan spek; mereka mengabaikan Jenis Konteks HTTP dan hanya menggunakan pengodean dalam dokumen. Dengan begitu banyak dokumen buruk di luar sana, itu tidak mungkin berubah dalam waktu dekat.

nas
sumber
9

keduanya baik-baik saja.

teks / xxx berarti jika program tidak memahami xxx masuk akal untuk menampilkan file kepada pengguna sebagai teks biasa. application / xxx berarti tidak ada gunanya menunjukkannya.

Harap perhatikan bahwa tipe konten tersebut pada awalnya ditentukan untuk lampiran E-Mail sebelum digunakan di dunia Web.

Hendrik Brummermann
sumber
6

teks / xml adalah untuk dokumen yang akan berarti bagi manusia jika disajikan sebagai teks tanpa proses lebih lanjut, aplikasi / xml adalah untuk semua yang lainnya

Setiap entitas XML cocok untuk digunakan dengan jenis media aplikasi / xml tanpa modifikasi. Tetapi ini tidak mengeksploitasi fakta bahwa XML dapat diperlakukan sebagai teks biasa dalam banyak kasus. Agen pengguna MIME (dan agen pengguna web) yang tidak memiliki dukungan eksplisit untuk aplikasi / xml akan memperlakukannya sebagai aliran aplikasi / octet, misalnya, dengan menawarkan untuk menyimpannya ke file.

Untuk menunjukkan bahwa entitas XML harus diperlakukan sebagai teks biasa secara default, gunakan jenis media teks / xml. Ini membatasi pengkodean yang digunakan dalam entitas XML untuk yang kompatibel dengan persyaratan untuk jenis media teks seperti yang dijelaskan dalam [RFC-2045] dan [RFC-2046], misalnya, UTF-8, tetapi tidak UTF-16 (kecuali untuk HTTP).

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

Quentin
sumber
Namun, itu lucu bahwa jenis HTML MIME yang disukai adalah text/htmldan jenis MIME XHTML yang disukai adalah application/xhtml+xml.
zneak
1
Tidak juga. text/htmltelah ada sejak lama, dan agak terlambat untuk mengubahnya.
Quentin
1

Jawaban lain di sini menjawab pertanyaan umum tentang apa yang pantas Content-Typeuntuk respons XML, dan menyimpulkan (seperti Apa perbedaan antara teks / xml vs aplikasi / xml untuk respons layanan web ) yang keduanya text/xmldan application/xmldiizinkan. Namun, tidak ada yang membahas apakah ada aturan khusus untuk peta situs .

Jawab: tidak ada. Spesifikasi sitemap adalah https://www.sitemaps.org , dan menggunakan site:pencarian Google Anda dapat mengonfirmasi bahwa itu tidak mengandung kata-kata atau frasa mime , mimetype , tipe konten , aplikasi / xml , atau teks / xml di mana saja. Dengan kata lain, itu sepenuhnya diam pada topik apa yang Content-Typeharus digunakan untuk melayani peta situs.

Dengan tidak adanya komentar dalam spec sitemap yang secara langsung menangani pertanyaan ini, kita dapat dengan aman mengasumsikan bahwa aturan yang sama berlaku seperti ketika memilih Content-Typedokumen XML lainnya - yaitu bahwa itu bisa berupa text/xmlatau application/xml.

Mark Amery
sumber