Native XML-Viewer in Firefox und Chrome können XML + XHTML nicht analysieren

Native XML-Viewer in Firefox und Chrome können XML + XHTML nicht analysieren

Ich bin im Allgemeinen ziemlich zufrieden mit dem nativenXML Viewerin Firefox.

Es zeigt gültige XML-Dateien (wie die folgende) klar und hilfreich an.

Beispiel für XML:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <url>
    <loc>https://example.com/</loc>
    <lastmod>2020-03-17T15:57:23+00:00</lastmod>
  </url>

</urlset>

Ich habe jedoch festgestellt, dass, sobald ich XHTML zu XML hinzufüge (unter Verwendung des richtigen XHTML-Namespace - siehe unten), dieXML-Viewersowohl in Firefox als auch in Chrome wird die XML wieder als Klartext angezeigt:

XHTML-Namespace und -Element:

  • XHTML-Namespace:xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • XHTML-Element:<xhtml:link />

Beispiel für XML + XHTML:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">

  <url>
    <loc>https://example.com/</loc>
    <lastmod>2020-03-17T15:57:23+00:00</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/" />
  </url>

  <url>
    <loc>https://example.com/de/</loc>
    <lastmod>2020-03-12T19:42:12+00:00</lastmod>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/" />
  </url>

</urlset>

Lange Zeit dachte ich, ich würde einen Fehler in mein XML einbauen und es ungültig machen. Aber ich habe zahlreiche XML-Validatoren von Drittanbietern überprüft und das XML ist definitiv gültig. Es ist nur so, dass die Browser-nativen Viewer (anscheinend) nicht damit zurechtkommen, dass XHTML in das XML eingefügt wird.

Kann ich in dieser Situation irgendetwas tun, um den Einheimischen zu helfen?XML-ViewerVerstehen und analysieren Firefox und Chrome die Auszeichnung als XML oder kann im Moment nichts getan werden und Software von Drittanbietern ist die einzige Antwort?

Antwort1

Webbrowser versuchen, alles, was Sie ihnen vorsetzen, als HTML darzustellen. Nur wenn sie sicher wissen, dass es kein HTML gibt, stellen sie es entweder als Klartext oder als XML dar, letzteres in einer Baumansicht (wie in Ihrem ersten Beispiel). Die bemerkenswerten Ausnahmen wären SVG und MathML, die anders dargestellt werden.

Da der Browser in Ihrem zweiten Beispiel HTML erkannte, wechselte er zur HTML-Ansicht.

Eine kleine Erklärung:

Solange der Browser über Stilinformationen für Elemente verfügt, wird er diese verwenden. Dies ist der Fall bei HTML (für das die Standard-Stile fest im Browser codiert sind). Es wirdAuchder Fall sein, wenn der Browser CSS findet, das mit einem beliebigen XML verknüpft ist, entweder über die Verarbeitungsanweisung

<?xml-stylesheet href="style.css"?>

oder per Inline-Stil (über das HTML- styleElement)

<html:style type="text/css">
  @namespace url("http://www.example.org/ns/example");
  @namespace html url("http://www.w3.org/1999/xhtml");
  paragraph {display: block;}
  meta {display: none;}
  html|style {display:none;}
  html|script {display:none;}
</html:style>

In Ihrem zweiten Beispiel wurden solche Stilinformationen gefunden, da HTML gefunden wurde, für das Stile fest codiert und impliziert sind und das somit mit Stil wiedergegeben wurde.

Wenn der Browser das XML-Dokument rendert, rendert er alle Elemente, für die er keinen Standardstil hat, wieInline-InhaltDies könnte der Grund sein, warum Sie angenommen haben, dass der Inhalt als einfacher Text angezeigt wird.

Wenn es HTML-Skriptelemente gefunden hätte, hätte es das darin enthaltene Javascript ausgeführt. Die Baumansicht ist also nur ein Fallback und nicht die Standardansicht.

Wenn Ihnen dieses Verhalten nicht gefällt, können Sie versuchen herauszufinden, ob Ihr Webbrowser einen Konfigurationsschalter unterstützt, der dieses Verhalten ändert, aber ich kenne keinen.

verwandte Informationen