HTML5中的SVG – 什么时候是XML声明`<?xml version =“1.0”encoding =“UTF-8”?>`需要吗?

前端之家收集整理的这篇文章主要介绍了HTML5中的SVG – 什么时候是XML声明`<?xml version =“1.0”encoding =“UTF-8”?>`需要吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在HTML5中使用SVG时:XML声明<?xml version =“1.0”encoding =“UTF-8”?>需要SVG

>作为图像通过< img>要么
>作为CSS背景图像?

这与“Are SVG parameters such as ‘xmlns’ and ‘version’ needed”略有关系.两个答案和MDN Namespace crash course必要时澄清名称空间问题.

但是SVG 1.1没有包含XML声明必要性的声明或者什么时候可以省略?

没有声明的示例:

<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>

更新2016-07-04:澄清该问题是关于XML声明.谢谢@Martin Honnen!
更新2017-10-24:更改为“UTF-8“ uppercase和SVGO优化属性顺序.

解决方法

对于HTML5,正确的 DOCTYPE declaration
<!DOCTYPE html>

需要为浏览器指定完整标准模式.

你所展示的,

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

XML declaration.它是optional for XML 1.0required for XML 1.1,但是

> XML 1.1没有得到广泛使用.
无论如何,> version =“1.0”和encoding =“utf-8”是默认值.

当您希望指定不同的编码时,请在HTML5中使用XML声明,尤其是当文件不仅可以由浏览器使用而且还可以由XML处理器使用时.

有关更多信息,请参阅HTML5: A vocabulary and associated APIs for HTML and XHTML.

关于内部SVG的注意事项(谢谢,@Quentin):嵌入HTML5文档中的SVG不应具有独立的XML声明.格式良好的XML中只允许一个XML声明,如果在任何地方,它必须位于顶部.有关XML声明放置要求的更多详细信息,请参见this answer.

关于外部SVG的注意事项(谢谢,@Kaiido):通过HTML5 img或CSS background-images引用的SVG必须有自己的XML声明,并且应该使用以下DOCTYPE声明:

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

关于外部SVG(更新)的注意事项(谢谢,@user314159):

根据Scalable Vector Graphics (SVG) 2 W3C Working Draft 09 July 20151.3. SVG namespace and DTD

A DTD is not provided in this specification,as the use of DTDs for
validating documents is known to be problematic. In particular,DTDs
do not handle namespaces gracefully and the range of constraints they
can express is limited. It is recommended that authors do not include
a DOCTYPE declaration in SVG documents.

[重点补充.]

猜你在找的HTML5相关文章