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-image
s?
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.
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.]
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.
<?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