Answers:
所有用户代理(浏览器)都忽略版本属性,因此您始终可以删除该属性。
如果将SVG内嵌在HTML页面中,并作为该页面提供,text/html
则不需要xmlns属性。将SVG内联嵌入HTML文档是HTML5的一部分,是一项相当新的创新。
但是,如果将页面用作image / svg + xml或application / xhtml + xml或任何其他导致用户代理使用XML解析器的MIME类型,则xmlns属性是必需的。直到最近,这是唯一的做事方式,因此有很多这样的内容。
<!DOCTYPE svg xmlns="www.w3.org/2000/svg">
可以用,但是如果我拿走xmlns或将其更改为<!DOCTYPE svg xmlns="www.example.com">
不可用。这是为什么?
该xmlns="http://www.w3.org/2000/svg"
属性是:
<svg>
。2该xmlns:xlink="http://www.w3.org/1999/xlink"
属性是:
<svg>
用的XLink:属性。2该version="1.1"
属性是:
1 国际化资源标识符(RFC3987)
2 自HTML5起
3 可扩展标记语言(XML)1.0
4可能直到发布其他主要版本为止。
5 SVG 2,W3C候选推荐书,2018年8月7日
version
将xml声明(<?xml version...
)的version
属性误认为<svg>
元素的属性。第一个是关于XML标记语言的版本,而第二个是SVG的版本。这个答案的作者通过引用XML而不是³中的SVG规范犯了这个错误。我试图更正它,但是一些白痴拒绝了修改。
我想同时添加两个答案,但是我没有任何意义,我要添加一个新答案。在Chrome的最新测试中(版本63.0.3239.132(正式版本)(64位Windows)),我发现:
xhr.responseText
和elm.innerHTML
。这不需要xmlns。xhr.responseXML.documentElement
和elm.appendChild()
或elm.insertBefore()
。这种创建内联SVG的方法会产生未完成的结果,而无需声明基本的SVG名称空间,如中所述xmlns="http://www.w3.org/2000/svg"
。<svg>加载到HTML中,但是文档级功能,例如getElementById()
<svg>元素上无法识别的功能。我认为这是因为它在HTML之外使用XMLHttpRequest XML解析器。关于SVG版本属性的MDN WebDoc说
从SVG 2开始
不推荐使用。不再建议使用此功能。尽管某些浏览器可能仍支持它,但是它可能已经从相关的Web标准中删除,正在被删除或仅出于兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅此页面底部的兼容性表以指导您做出决定。请注意,此功能可能随时停止起作用。版本属性用于指示SVG文档符合的规范。仅允许在根元素上使用。它纯粹是建议性的,对渲染或处理没有影响。
PS:SVG 2尚未成为标准。