it-swarm.com.de

Welchen Content-Type-Wert sollte ich für meine XML-Sitemap senden?

Ich dachte, ich sollte "text/xml" senden, aber dann las ich, dass ich "application/xml" senden sollte. Ist das wichtig? Kann jemand den Unterschied erklären?

119
Kyle

Die Differenz zwischen text/xml und application/xml ist die Standardzeichencodierung, wenn der Parameter charset weggelassen wird:

Text/XML und Application/XML verhalten sich anders, wenn der Zeichensatz Parameter ist nicht explizit angegeben. Wenn der Standardzeichensatz (z. B. US-ASCII) für text/xml aus irgendeinem Grund (z. B. fehlerhafte Web-Server .__) unbequem ist, bietet application/xml eine Alternative (siehe "Optionale -Parameter") von Registrierung von application/xml in Abschnitt 3.2).

Für text/xml :

Entspricht [RFC2046], wenn eine Text/XML-Entität mit .__ empfangen wird. Der Zeichensatzparameter wurde weggelassen, MIME-Prozessoren und XML-Prozessoren MÜSSEN den Standard-Zeichensatz "us-ascii" [ASCII] verwenden. In Fällen Wenn die XML-MIME-Entität über HTTP übertragen wird, ist der Standardwert Der Zeichensatzwert ist immer noch "us-ascii".

Für application/xml :

Wenn eine application/xml-Entität empfangen wird, in der der Zeichensatz Parameter wird ausgelassen, es werden keine Informationen über die .__ bereitgestellt. Zeichensatz durch den MIME-Inhaltstyp-Header. XML-Konformität Prozessoren MÜSSEN den Anforderungen in Abschnitt 4.3.3 von [XML] .__ folgen. dass direkt auf diese Eventualität eingehen. MIME-Prozessoren Dies sind keine XML-Prozessoren. SOLLTEN NICHT einen Standardzeichensatz annehmen, wenn Der Zeichensatzparameter wird in einer application/xml-Entität nicht angegeben.

Wenn der Parameter charset weggelassen wird, ist die Zeichencodierung von text/xml also US-ASCII, während mit application/xml die Zeichencodierung im Dokument selbst angegeben werden kann.

Nun gilt im Internet die Faustregel: „Seien Sie streng bei der Ausgabe, aber tolerieren Sie die Eingabe.“ Das bedeutet, dass Sie die Standards so gut wie möglich einhalten müssen, wenn Sie Daten über das Internet bereitstellen. Bauen Sie jedoch einige Mechanismen ein, um Fehler zu übersehen oder zu erraten, wenn Sie Daten über das Internet empfangen und interpretieren.

Wählen Sie in Ihrem Fall also einfach einen der beiden Typen aus (ich empfehle application/xml), und geben Sie die verwendete Zeichencodierung richtig an (ich empfehle, die entsprechende Standard-Zeichencodierung zu verwenden, um sicher zu spielen, also im Fall von application/xml verwendet UTF-8 oder UTF-16).

150
Gumbo

Als Faustregel gilt, dass die sicherste Möglichkeit, das Dokument von allen Webservern, Proxies und Client-Browsern ordnungsgemäß behandelt werden soll, wahrscheinlich die folgenden ist:

  1. Verwenden Sie den Inhaltstyp application/xml
  2. Fügen Sie eine Zeichenkodierung in den Inhaltstyp ein, wahrscheinlich UTF-8
  3. Fügen Sie eine übereinstimmende Zeichenkodierung in das Kodierungsattribut des XML-Dokuments ein.

In Bezug auf die RFC 3023 spec, die einige Browser nicht ordnungsgemäß implementieren, liegt der Hauptunterschied bei den Inhaltstypen darin, dass Clients die Zeichencodierung wie folgt behandeln:

Für application/xml, application/xml-dtd, application/xml-external-parsed-entity oder einen der Subtypen von application/xml, wie beispielsweise application/atom + xml, application/rss + xml oder application/rdf + xml wird die Zeichenkodierung in dieser Reihenfolge festgelegt:

  1. die Kodierung, die im charset-Parameter des Content-Type-HTTP-Headers angegeben ist
  2. die Kodierung, die im Kodierungsattribut der XML-Deklaration im Dokument angegeben ist,
  3. utf-8.

Bei text/xml, text/xml-external-parsed-entity oder einem Untertyp wie text/foo + xml wird das Kodierungsattribut der XML-Deklaration im Dokument ignoriert und die Zeichenkodierung lautet:

  1. die im charset-Parameter des Content-Type-HTTP-Headers angegebene Kodierung oder
  2. us-ascii.

Die meisten Parser implementieren die Spezifikation nicht. Sie ignorieren den HTTP-Kontext-Typ und verwenden einfach die Kodierung im Dokument. Bei so vielen schlecht formulierten Dokumenten wird sich dies wahrscheinlich nicht bald ändern.

24
nas

beide sind gut.

text/xxx bedeutet, dass, wenn das Programm xxx nicht versteht, es sinnvoll ist, dem Benutzer die Datei als Nur-Text anzuzeigen. application/xxx bedeutet, dass es sinnlos ist, es zu zeigen.

Bitte beachten Sie, dass diese Inhaltstypen ursprünglich für E-Mail-Anhänge definiert wurden, bevor sie später in der Web-Welt verwendet wurden.

9

text/xml ist für Dokumente, die für einen Menschen von Bedeutung sind, wenn sie als Text ohne weitere Verarbeitung dargestellt werden, application/xml für alles andere

Jede XML-Entität ist für die Verwendung mit den Medien für Anwendung/XML geeignet Typ ohne Änderung. Dies nutzt jedoch nicht die Tatsache aus, dass XML kann in vielen Fällen als Nur-Text behandelt werden. MIME-Benutzeragenten (und Webbenutzeragenten), die .__ nicht explizit unterstützen. application/xml behandelt es als application/octet-stream für B. anbieten, um es in einer Datei zu speichern.

Gibt an, dass eine XML-Entität von .__ als Nur-Text behandelt werden soll. Standardmäßig verwenden Sie den Medientyp Text/XML. Dies beschränkt die Kodierung wird in der XML-Entität für diejenigen verwendet, die mit der kompatibel sind. Anforderungen für Textmedientypen, wie in [RFC-2045] und .__ beschrieben. [RFC-2046], z. B. UTF-8, aber nicht UTF-16 (außer HTTP).

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

6
Quentin

Andere Antworten beziehen sich hier auf die allgemeine Frage nach dem richtigen Content-Type für eine XML-Antwort und schließen (wie bei Was ist der Unterschied zwischen text/xml und application/xml für Webservice-Antwort ), dass sowohl text/xml als auch application/xml zulässig sind. Keine wird jedoch darauf eingehen, ob es spezielle Regeln für sitemaps gibt.

Antwort: gibt es nicht. Die Sitemap-Spezifikation ist https://www.sitemaps.org . Mit Google site:-Suchen können Sie bestätigen, dass sie nicht die Wörter oder Ausdrücke mime, mimetype, content enthält -type, application/xml oder text/xml überall. Mit anderen Worten, es ist vollkommen still, was Content-Type für das Servieren von Sitemaps verwendet werden soll.

Wenn in der Sitemap-Spezifikation keine Kommentare enthalten sind, die sich direkt auf diese Frage beziehen, können wir sicher davon ausgehen, dass dieselben Regeln gelten wie bei der Auswahl des Content-Type eines anderen XML-Dokuments - d. H. Es kann entweder text/xml oder application/xml sein.

0
Mark Amery