SVG in HTML5 – Wann ist XML-Deklaration “ benötigt?

Lesezeit: 4 Minuten

Benutzer-Avatar
Volker E.

Bei Verwendung von SVG in HTML5: Ist die XML-Deklaration <?xml version="1.0" encoding="UTF-8"?> benötigt mit SVG

  • als Bilder über <img> oder
  • als CSS background-images?

Dies hängt leicht mit „Sind SVG-Parameter wie ‚xmlns‘ und ‚version‘ benötigt?“ zusammen. Die Namensraumprobleme werden geklärt wie nötig durch die beiden Antworten und die MDN-Namespace-Crashkurs.

Aber SVG 1.1 enthält keine Aussage über die Notwendigkeit der XML-Deklaration oder wann sie weggelassen werden könnte?

Beispiel ohne Deklaration:

<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200">
  <circle id="circle--red" cx="30" cy="30" r="30" fill="#f00"/>
</svg>

Aktualisierung 2016-07-04: Geklärt, dass es um diese Frage geht XML-Deklaration. Danke @Martin Honnen!
Aktualisierung 2017-10-24: Auf „UTF-8“ Großbuchstaben und SVGO-optimierte Attributreihenfolge geändert.

  • <?xml version="1.0" encoding="utf-8"?> ist die XML-Deklaration, es ist kein Doctype.

    – Martin Honnen

    3. Juli 2016 um 14:03 Uhr

  • Eine ausführliche Antwort auf die allgemeine XML-Dateinotwendigkeit der XML-Deklaration finden Sie unter stackoverflow.com/a/7007781/1696030 Kurz gesagt, in XML-Version 1.0 der Deklaration es ist optionalaber Sie könnten Probleme mit der Codierung oder bestimmten (Text-) Editoren haben.

    – Volker E.

    14. November 2017 um 2:23 Uhr


Benutzer-Avatar
kjhughes

Für HTML5 das Richtige DOCTYPE-Deklaration ist

<!DOCTYPE html> 

Es ist erforderlich, den vollständigen Standardmodus für den Browser anzugeben.

Was du gezeigt hast,

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

ist ein XML-Deklaration. es ist optional für XML 1.0 und erforderlich für XML 1.1aber

  • XML 1.1 ist nicht weit verbreitet.
  • version="1.0" und encoding="utf-8" sind sowieso die Voreinstellungen.

Verwenden Sie eine XML-Deklaration in HTML5, wenn Sie eine andere Codierung angeben möchten, insbesondere wenn die Datei möglicherweise nicht nur von Browsern, sondern auch von XML-Prozessoren verwendet wird.

Weitere Informationen finden Sie unter HTML5: Ein Vokabular und zugehörige APIs für HTML und XHTML.

Hinweis zum internen SVG (Danke, @Quentin): In ein HTML5-Dokument eingebettetes SVG sollte keine unabhängige XML-Deklaration haben. Nur eines Die XML-Deklaration ist in wohlgeformtem XML zulässig, und es muss oben sein, wenn irgendwo. Weitere Informationen zu den Anforderungen an die Platzierung von XML-Deklarationen finden Sie in dieser Antwort.

Hinweis zu externem SVG (Danke, @Kaiido): SVG wird über HTML5 referenziert img oder CSS background-images muss eine eigene XML-Deklaration haben und sollte die folgende DOCTYPE-Deklaration verwenden:

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
          "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

Hinweis zu externem SVG (Update) (Danke, @user314159):

Pro 1.3. SVG-Namespace und DTD des Skalierbare Vektorgrafiken (SVG) 2 W3C-Arbeitsentwurf 9. Juli 2015:

Eine DTD wird in dieser Spezifikation nicht bereitgestellt, da die Verwendung von DTDs zur Validierung von Dokumenten als problematisch bekannt ist. Insbesondere handhaben DTDs Namespaces nicht elegant, und die Bandbreite der Beschränkungen, die sie ausdrücken können, ist begrenzt. Es wird empfohlen, dass Autoren keine DOCTYPE-Deklaration in SVG-Dokumente einfügen.

[Emphasis added.]

  • Nur zur Verdeutlichung ist es wahrscheinlich erwähnenswert, dass die XML-Deklaration am Anfang des Dokuments stehen sollte und dass Inline-SVG in HTML 5 Teil des HTML 5-Dokuments ist, nicht unabhängig und keine eigene XML-Deklaration haben sollte.

    – QUentin

    3. Juli 2016 um 16:54 Uhr

  • Und kein einziges Wort über externes SVG? Das ist der Punkt der Frage … “als Inline-Bilder über <img> als CSS-Hintergrundbilder“. In diesen Fällen sollten Sie sowohl XML-Deklarationen als auch Doctype beibehalten, was sein sollte <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> übrigens.

    – Kaiido

    4. Juli 2016 um 10:05 Uhr

  • Antwort aktualisiert, um hilfreiche Vorschläge von Quentin und Kaiido widerzuspiegeln. Vielen Dank!

    – kjhughes

    27. Juli 2016 um 16:32 Uhr

  • FYI: SVG2 Working Draft / Proposed Recommendation, empfiehlt überhaupt KEIN DOCTYPE für SVG-Dokumente. Die Verwendung von SVG in XML erfordert jedoch ein xmlns, während dies in HTML nicht der Fall ist. „Eine DTD wird in dieser Spezifikation nicht bereitgestellt, da bekannt ist, dass die Verwendung von DTDs zur Validierung von Dokumenten problematisch ist. Insbesondere handhaben DTDs Namespaces nicht elegant und der Bereich der Einschränkungen, die sie ausdrücken können, ist begrenzt. Es wird Autoren empfohlen, dies zu tun keine DOCTYPE-Deklaration in SVG-Dokumente aufnehmen.” — w3.org/TR/2015/WD-SVG2-20150709/intro.html#Namespace

    Benutzer2895783

    26. Oktober 2017 um 9:52 Uhr


  • Antwortaktualisierung, um den hilfreichen Vorschlag von @ user314159 widerzuspiegeln. Vielen Dank!

    – kjhughes

    26. Oktober 2017 um 12:13 Uhr

Benutzer-Avatar
Mikep

Infos habe ich hier gefunden https://oreillymedia.github.io/Using_SVG/extras/ch01-XML.html dass die XML- und DOCTYPE-Deklaration nicht erforderlich ist …

Die XML-Deklaration ist nur erforderlich, wenn Sie eine Nicht-Unicode-Zeichencodierung verwenden (technisch alles andere als UTF-8 oder UTF-16).

Sie können auch eine SGML-DOCTYPE-Deklaration einfügen, dies wird jedoch für SVG nicht mehr empfohlen.

1130880cookie-checkSVG in HTML5 – Wann ist XML-Deklaration “ benötigt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy