Wie soll ein Atom-Feed-Parser die folgende Zeile von XML in einem Feed handhaben:Wie sollten bei der Analyse von Atom XML-Feeds Konflikte mit CDATA- und Entity-Escape-Elementen behandelt werden?
<title type="html"><![CDATA[Johnson & Johnson]]></title>
Aus Gründen der Diskussion, lässt vermuten, dass die ursprünglich vorgesehene Text in der Tat Johnson & Johnson
war. Ich kam in diesen online discussion zu diesem Problem und es schien 2 verschiedene Meinungen zu sein:
Opinion #1 - claims that this content is double-encoded. Der Text "Johnson & Johnson" -Text wurde Entity-Escapezeichen und dann erneut codiert, indem es in einen CDATA-Abschnitt eingepackt wurde. Er gibt an, dass ein XML-Parser mit gutem Verhalten
Johnson & Johnson
zurückgibt, weil die XML spec CDATA-codierten Daten so behandelt werden sollten.Opinion #2 - claims that the Atom spec takes precedent. Er erklärt, dass die CDATA als Passthrough fungiert.
Johnson & Johnson
kommt alsJohnson & Johnson
heraus. Wenn dies nur ein XML-Dokument wäre, würde es dort enden. Da es jedoch Atom ist, müssen wir uns dann das Atom spec ansehen, um das richtige Verhalten zu bestimmen. Die Atomspezifikation besagt, dass jedes Element mit der Entitättype="html"
html entkommt. Daher sollten wir frei sein, es zu entschlüsseln.
Welche dieser Fakten ist richtig? Sollte ein richtiger Atom XML-Parser produzieren: Johnson & Johnson
oder Johnson & Johnson
angesichts dieser besonderen Situation?
Ihre Aussage „so ist es dann als HTML analysiert werden soll“, wo die Mehrdeutigkeit für mich kommt. Wenn die Atom-Bibliothek normalerweise für 'type =" html "' -Elemente den Text ihres Elements html-decodiert, wenn es keine CDATA gibt, meinst du, dass sie auch den Elementtext, der in eine CDATA eingeschlossen ist, html-dekodieren soll? – mmcdole
* Wenn die Atom-Bibliothek, in der Regel für type = "html" * - Die Atom-Bibliothek sollte nicht, sollte der HTML-Renderer. – Quentin
Warum sollten die Feed-Parser-Bibliotheken nicht dazu übergehen, Elemente zu entlarven, die als 'type =" html "markiert sind, wenn die Spezifikation eindeutig angibt, dass sie als solche maskiert sind? Wenn Sie Pythons 'feedparser'-Bibliothek oder PHP's Simplepie'-Bibliothek fragen, den' Titel' aus einem Feed zurückzugeben, dessen Titel wie folgt definiert wurde: Beispiel: < p> titel/p > ', sie werden alle zurückgeben Beispiel
Titel
'. Diese Frage dreht sich darum, ob das CDATA-Element das typische Unescaping umgehen sollte, das sie beim Analysieren der Daten in ihre nicht-gesicherte Form machen. – mmcdole