Was ist der Unterschied zwischen text / xml und application / xml für die Webservice-Antwort?

495

Dies ist eher eine allgemeine Frage zum Unterschied zwischen text/xmlund application/xml. Ich bin ziemlich neu im Schreiben von Webservices (REST - Jersey). Ich habe produziert, application/xmlda es das ist, was in den meisten Tutorials / Codebeispielen auftaucht, die ich zum Lernen verwendet habe, aber ich habe kürzlich herausgefunden text/xmlund mich gefragt, was daran anders ist und wann Sie es verwenden würden application/xml.

Mike
quelle
Wie in der Antwort von DaveV und in der Kopfzeile unter tools.ietf.org/html/rfc3023 angegeben , ist RFC 3023 (zitiert nach Odeds Antwort, derzeit akzeptiert) veraltet. Der neuere RFC 7303 gibt tatsächlich eine deutlich andere Antwort auf diese Frage als der RFC 3023 früher. Ich denke, es wäre daher für zukünftige Leser hilfreich, wenn Sie die Antwort von DaveV akzeptieren würden, damit die aktuellsten Informationen ganz oben auf der Antwortliste stehen.
Mark Amery
Basierend auf Dave V unten und Marián Černý scheint es, dass application / xml jetzt bevorzugt wird, wenn Sie etwas Neues machen.
SQL Surfer
text/ist für Menschen gedacht. application/ist für Computer gedacht
Ian Boyd

Antworten:

108

Dies ist eine alte Frage, die jedoch häufig besucht wird, und klare Empfehlungen sind jetzt in RFC 7303 verfügbar, wodurch RFC3023 überholt wird. Kurz gesagt (Abschnitt 9.2):

The registration information for text/xml is in all respects the same
as that given for application/xml above (Section 9.1), except that
the "Type name" is "text".
DaveV
quelle
6
In dem zitierten Absatz werden IANA-Registrierungsinformationen erwähnt, die sich (durch Überprüfen von Abschnitt 9.1) auch mit der Codierung befassen, sodass es keine Unterschiede mehr bei der Behandlung von Zeichensätzen zwischen application/xmlund geben sollte text/xml. Darüber hinaus betrachte ich diesen Teil der Zusammenfassung: "Diese Spezifikation standardisiert ... application / xml ... während Text / xml ... als Alias ​​definiert wird ...", um dies zu bedeuten application/xmlund text/xmlsind äquivalent und es gibt keine Präferenz von eins über das andere.
Marián Černý
427

Aus dem RFC ( 3023 ) unter Abschnitt 3, XML-Medientypen:

Wenn ein XML - Dokument - das ist das nicht verarbeitete, XML - Quelldokument ist, - lesbar ist durch gelegentliche Nutzer, text / xml vorzuziehen application / xml. MIME-Benutzeragenten (und Webbenutzeragenten), die Text / XML nicht explizit unterstützen, behandeln sie als Text / Nur-Text, indem sie beispielsweise die XML-MIME-Entität als Nur-Text anzeigen. Application / xml ist vorzuziehen, wenn die XML-MIME-Entität für Gelegenheitsbenutzer nicht lesbar ist .

(Hervorhebung von mir)

Oded
quelle
6
@drachenstern - Ich halte nicht beschreibende Elemente und Attribute für wahrscheinlicher ( <a1 d="" g="">zum Beispiel für Gelegenheitsbenutzer als unlesbar ).
Oded
3
@ Mike Natürlich. Bei einigen XML-Dateien handelt es sich im Wesentlichen um eine Liste von Datensätzen, z. B .: Msdn.microsoft.com/en-us/library/ms762271%28v=vs.85%29.aspx Dies wird eher von einer Anwendung gelesen und verarbeitet. Andere sind im Grunde Text mit Markup, wie eine HTML-Seite. Die Verwendung von Text / XML für sie klingt angemessener.
Biziclop
5
Bitte geben Sie ein Beispiel für unlesbar oder lesbar. Wir verwenden Dateien, die größtenteils lesbar sind, aber Base64-codierte Knoten usw. haben.
Joe Phillips
5
@ JoePhilllips - Los geht's. base64 ist für Menschen nicht lesbar. Wenn das gesamte Dokument ohne Werkzeug oder in einem Handbuch gelesen werden kann und für einen Menschen sinnvoll ist (was bedeutet dieses xgsfTag?), Ist es lesbar.
Oded
8
@CommaToast Ein Webserver gibt möglicherweise formatiertes und eingerücktes XML zurück, wenn "text / xml" das Akzeptieren ist, während application / xml möglicherweise alle unbedeutenden Leerzeichen zurückgibt, die entfernt wurden. In ASP.NET MVC können Sie beispielsweise verschiedene Handler für verschiedene Mimetypen angeben.
Novaterata
33

Nach diesem Artikel wird application / xml bevorzugt.


BEARBEITEN

Ich habe den Artikel ein wenig weiterverfolgt.

Der Autor behauptet, dass die in XML-Verarbeitungsanweisungen deklarierte Codierung wie folgt lautet:

<?xml version="1.0" encoding="UTF-8"?>

kann ignoriert werden, wenn der text/xmlMedientyp verwendet wird.

Sie unterstützen die These mit der Definition der text/*MIME-Typfamilienspezifikation in RFC 2046 , insbesondere des folgenden Fragments:

4.1.2.  Charset Parameter

   A critical parameter that may be specified in the Content-Type field
   for "text/plain" data is the character set.  This is specified with a
   "charset" parameter, as in:

     Content-type: text/plain; charset=iso-8859-1

   Unlike some other parameter values, the values of the charset
   parameter are NOT case sensitive.  The default character set, which
   must be assumed in the absence of a charset parameter, is US-ASCII.

   The specification for any future subtypes of "text" must specify
   whether or not they will also utilize a "charset" parameter, and may
   possibly restrict its values as well.  For other subtypes of "text"
   than "text/plain", the semantics of the "charset" parameter should be
   defined to be identical to those specified here for "text/plain",
   i.e., the body consists entirely of characters in the given charset.
   In particular, definers of future "text" subtypes should pay close
   attention to the implications of multioctet character sets for their
   subtype definitions.

Demnach können solche Schwierigkeiten bei Verwendung des application/xmlMIME-Typs vermieden werden . Ob es wahr ist oder nicht, ich würde nicht so weit gehen, es zu vermeiden text/xml. IMHO ist es am besten, nur der Semantik der menschlichen Lesbarkeit (Nichtlesbarkeit) zu folgen und immer daran zu denken, den Zeichensatz anzugeben.

Hardywang
quelle
1
+1 für den Link. Was ist nach Ihren eigenen Worten die grundlegende Schlussfolgerung des Artikels? Vielleicht "wird in dem Artikel angegeben, dass die Dateicodierung ignoriert wird, was bedeutet, dass Sie keine utf-8- und Binärdaten in einer Datei mit einem Text- / XML-Header senden können", wird dies ebenfalls überprüft?
Shanimal
Ich stimme @Shanimal zu, die Antwort sollte den Kern des Artikels enthalten, da der Link möglicherweise nicht ewig hält. Sein Verschwinden wird die Antwort ziemlich nutzlos machen. Könnte jemand die Aussage über das Ignorieren von XML-Verarbeitungsanweisungen bezüglich der Codierung bestätigen?
Toniedzwiedz
1
Laut dem ursprünglichen Autor wurde dies in späteren Revisionen der Spezifikationen Update: The situation has changed in the new HTTP/1.1 RFC: The default charset of ISO-8859-1 for text media types has been removed; the default is now whatever the media type definition says.
behoben
Wenn ich eine XML-Datei mit Ajax lade, handelt es sich um ein "Dokument" vom Typ. application/xmlWenn ich jedoch ein Eingabeformularelement verwende, handelt es sich um eine "Datei" vom Typ, text/xmldie mit meinem Code nicht ordnungsgemäß verarbeitet wird. Wie kann ich es in das andere Format konvertieren?
Devil's Advocate
5

application/xmlwird svnals binärer Typ angesehen, während text/xmlals Textdatei , für die ein Diff angezeigt werden kann.

Michał Kawiecki
quelle