Note: The xmlns attribute is only required on the outermost svg element of SVG documents. It is unnecessary for inner svg elements or inside HTML documents.
The xmlns namespace declaration isn't necessary on most modern webpages, but it doesn't hurt to keep it just in case. Keep the xmlns:xlink XLink declaration if some part of your SVG uses “ xlink ” (most likely a <use> , <a> , or <image> element's xlink:href attribute).
http://www.w3.org/2000/svg is an XML namespace, first defined in the Scalable Vector Graphics (SVG) 1.0 Specification and subsequently added to by SVG 1.1, SVG 1.2 and SVG 2. The SVG namespace is mutable; names may be added over time by the W3C SVG Working Group by publication in W3C Technical Reports.
XLink is used to create hyperlinks in XML documents.
The xmlns="http://www.w3.org/2000/svg"
attribute is:
<svg>
. 2
The xmlns:xlink="http://www.w3.org/1999/xlink"
attribute is:
<svg>
with xlink: attributes. 2
The version="1.1"
attribute is:
1Internationalized Resource Identifiers (RFC3987)
2Since HTML5
3Extensible Markup Language (XML) 1.0
4 Probably until the release of further major versions.
5SVG 2, W3C Candidate Recommendation, 07 August 2018
All user agents (browsers) ignore the version attribute, so you can always drop that.
If you embed your SVG inline in a HTML page and serve that page as text/html
then xmlns attributes are not required. Embedding SVG inline in HTML documents is a fairly recent innovation that came along as part of HTML5.
If however you serve your page as image/svg+xml or application/xhtml+xml or any other MIME type that causes the user agent to use an XML parser then the xmlns attributes are required. This was the only way to do things until recently so there is a lot of content served like this.
I'd like to add to both answers, but I have no points, I'm adding a new answer. In recent tests on Chrome (Version 63.0.3239.132 (Official Build) (64-bit Windows)), I have found that:
xhr.responseText
and elm.innerHTML
. This does not require the xmlns.xhr.responseXML.documentElement
and elm.appendChild()
or elm.insertBefore()
. This method of creating the inline SVG produces half-baked results without the basic SVG namespace being declared, as in xmlns="http://www.w3.org/2000/svg"
. The <svg> loads into the HTML, but document-level functions, such as getElementById()
are not recognized on the <svg> element. I assume that this is because it uses the XMLHttpRequest XML parser outside of the HTML.About SVG version attribute the MDN WebDoc says
Deprecated since SVG 2
This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.The version attribute is used to indicate what specification a SVG document conforms to. It is only allowed on the root element. It is purely advisory and has no influence on rendering or processing.
PS: The SVG 2 is far from becoming a standard yet.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With