XML site haritam için hangi Content-Type değerini göndermeliyim?


128

"Text / xml" göndermem gerektiğini düşündüm ama sonra "application / xml" göndermem gerektiğini okudum. Önemli mi? Birisi farkı açıklayabilir mi?

Yanıtlar:


160

Arasındaki fark metin / XML ve uygulama / XML halinde kodlayan varsayılan karakter karakter kümesi parametre ihmal edilir:

Charset parametresi açıkça belirtilmediğinde Text / xml ve application / xml farklı davranır. Text / xml için varsayılan karakter kümesi (yani, US-ASCII) bazı nedenlerden dolayı uygun değilse (örneğin, kötü web sunucuları), application / xml bir alternatif sağlar (bkz. Bölüm 3.2'deki application / xml kaydının "İsteğe bağlı parametreleri").

İçin metin / xml :

[RFC2046] ile uyumlu olarak, karakter kümesi parametresi atlanmış bir metin / xml öğesi alınırsa, MIME işlemcileri ve XML işlemcileri "us-ascii" [ASCII] varsayılan karakter kümesi değerini kullanmalıdır ZORUNLU. XML MIME varlığının HTTP yoluyla iletildiği durumlarda, varsayılan karakter kümesi değeri hala "us-ascii" dir.

İçin uygulama / xml :

Karakter kümesi parametresinin atlandığı yerde bir application / xml varlığı alınırsa, MIME Content-Type başlığı tarafından karakter kümesi hakkında hiçbir bilgi sağlanmaz. Uygun XML işlemcilerin, bu olasılığa doğrudan hitap eden [XML] bölüm 4.3.3'teki gereksinimlere uyması ZORUNLUdur. Ancak, XML işlemcisi olmayan MIME işlemcileri, karakter kümesi parametresi bir application / xml varlığından çıkarılırsa, varsayılan bir karakter kümesi varsaymamalıdır.

Bu nedenle, karakter kümesi parametresi atlanırsa, text / xml'nin karakter kodlaması US-ASCII iken application / xml ile karakter kodlaması belgenin kendisinde belirtilebilir.

Şimdi internette pratik bir kural şudur: "Çıktı konusunda katı olun, ancak girdiye toleranslı olun." Bu, internet üzerinden veri iletirken standartları mümkün olduğunca karşıladığınızdan emin olun. Ancak hataları gözden kaçırmak veya internet üzerinden veri alırken ve yorumlarken tahmin etmek için bazı mekanizmalar oluşturun.

Bu nedenle, sizin durumunuzda sadece iki türden birini seçin ( uygulama / xml'yi öneririm ) ve kullanılan karakter kodlamasını doğru şekilde belirlediğinizden emin olun (güvenli oynamak için ilgili varsayılan karakter kodlamasını kullanmanızı tavsiye ederim, bu nedenle application / xml kullanımı durumunda) UTF-8 veya UTF-16).


24

Genel bir kural olarak, belgenizin tüm web sunucuları, proxy'ler ve istemci tarayıcıları tarafından düzgün bir şekilde ele alınmasını sağlamanın en güvenli yolu muhtemelen şudur:

  1. Application / xml içerik türünü kullanın
  2. İçerik türüne bir karakter kodlaması ekleyin, muhtemelen UTF-8
  3. XML belgesinin kodlama özniteliğine eşleşen bir karakter kodlaması ekleyin.

Bazı tarayıcıların düzgün bir şekilde uygulayamadığı RFC 3023 spesifikasyonu açısından , içerik türlerindeki en büyük fark, istemcilerin aşağıdaki gibi karakter kodlamasını nasıl ele almaları gerektiğidir:

Application / xml, application / xml-dtd, application / xml-external-parsed-entity veya application / atom + xml, application / rss + xml veya application / rdf + xml gibi application / xml alt türlerinden herhangi biri için karakter kodlaması şu sırayla belirlenir:

  1. Content-Type HTTP başlığının karakter kümesi parametresinde verilen kodlama
  2. belge içindeki XML bildiriminin kodlama özniteliğinde verilen kodlama,
  3. UTF-8.

Text / xml, text / xml-external-parsed-entity veya text / foo + xml gibi bir alt tür için, belgedeki XML bildiriminin kodlama özelliği yok sayılır ve karakter kodlaması şu şekildedir:

  1. Content-Type HTTP başlığının karakter kümesi parametresinde verilen kodlama veya
  2. Bize ascii.

Çoğu ayrıştırıcı spesifikasyonu uygulamaz; HTTP Context-Type'ı yok sayarlar ve sadece belgedeki kodlamayı kullanırlar. Orada çok sayıda kötü biçimlendirilmiş belge varken, bunun yakın zamanda değişmesi pek olası değil.


9

ikisi de iyi.

text / xxx, programın xxx'i anlamaması durumunda dosyayı kullanıcıya düz metin olarak göstermenin anlamlı olduğu anlamına gelir. application / xxx, göstermenin anlamsız olduğu anlamına gelir.

Lütfen bu içerik türlerinin daha sonra Web dünyasında kullanılmadan önce E-posta eki için tanımlandığını unutmayın.


6

text / xml, daha fazla işleme tabi tutulmadan metin olarak sunulursa bir insan için anlamlı olabilecek belgeler içindir, application / xml diğer her şey içindir

Her XML varlığı, değişiklik yapılmadan application / xml ortam türü ile kullanıma uygundur. Ancak bu, XML'in birçok durumda düz metin olarak değerlendirilebileceği gerçeğinden yararlanmaz. Application / xml için açık bir desteğe sahip olmayan MIME kullanıcı aracıları (ve web kullanıcı aracıları), örneğin bir dosyaya kaydetmeyi önererek, bunu application / octet-stream olarak ele alır.

Bir XML varlığının varsayılan olarak düz metin olarak ele alınması gerektiğini belirtmek için text / xml ortam türünü kullanın. Bu, XML varlığında kullanılan kodlamayı, [RFC-2045] ve [RFC-2046] 'da açıklanan metin ortam türleri için gereksinimlerle uyumlu olanlarla sınırlar, ör. UTF-8, ancak UTF-16 (hariç HTTP).

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


Yine de, tercih edilen HTML MIME türünün text/htmlve tercih edilen XHTML MIME türünün olması komik application/xhtml+xml.
zneak

1
Pek sayılmaz. text/htmlçok uzun zamandır buralarda ve değiştirmek için biraz geç kalmıştı.
Quentin

1

Diğer cevaplar burada düzgün ne genel bir soru cevap Content-TypeXML yanıtı içindir ve sonuçlandırmak (olduğu gibi webservice yanıtı için application / xml vs text / xml arasındaki fark nedir de o) text/xmlve application/xmlizin verilir. Ancak hiçbiri site haritalarına özgü herhangi bir kural olup olmadığını ele almaz .

Cevap: yok. Site haritası spesifikasyonu https: //www.sitemaps.org'dur ve Google site:aramalarını kullanarak mime , mimetype , content-type , application / xml veya text / xml kelimelerini veya kelime öbeklerini hiçbir yerde içermediğini onaylayabilirsiniz . Diğer bir deyişle, Content-Typesite haritalarını sunmak için ne kullanılması gerektiği konusunda tamamen sessizdir .

Site haritası spesifikasyonunda doğrudan bu soruyu ele alan herhangi bir yorumun olmaması durumunda, Content-Typebaşka herhangi bir XML belgesini seçerken olduğu gibi aynı kuralların geçerli olduğunu güvenle varsayabiliriz - yani ya text/xmlda olabilir application/xml.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.