2014-06-19 22 views
16

我正在验证我的代码,并且在IE中为我的svg路径获取了以下错误Tag cannot be self-closing. Use an explicit closing tag.,因为它是自闭的。关闭SVG标记,显式还是自闭?

<pathd="m53.911,10.023c-1.46-.898-3.195-1.019-4.699-1.019h-3.439c"/>

现在我知道HTML5 meta标签不需要向前冲,/,你只是关闭它们与>。同样的事情适用于svg标签吗?像这样:

<pathd="m53.911,10.023c-1.46-.898-3.195-1.019-4.699-1.019h-3.439c">

还是......使用一个明确的结束标记?像这样:

<pathd="m53.911,10.023c-1.46-.898-3.195-1.019-4.699-1.019h-3.439c"></path>

什么是关闭的路径的正确方法是什么?

+0

你是如何验证你的代码的?可能是验证工具只是不知道关于SVG? –

回答

23

The answer by Robert Longson是伟大的,但链接a document that is marked为:

该文件已经停产,并且只是由于历史提供目的。


我想找到一些关于这种行为上的最新规范,这里是我发现:

一个自动关闭标签一种特殊形式在紧扣右尖括号之前使用斜线开始标记。这些表明元素将被立即关闭,并且没有内容。在允许和使用此语法的情况下,必须省略结束标记。在HTML中,这种语法的使用限于void元素外部元素。如果它用于其他元素,则将其视为开始标记。

来源:W3C HTML5 Reference Editor's Draft

开始标签必须具有以下格式:

...

  • 然后,如果该元件是一个的无效元素,或者如果元素是异质元素,那么可能有一个U + 002F SOLIDUS字符(/)。这个字符对无效元素没有影响,但在外部元素它将开始标记标记为自动关闭。
  • 来源:HTML Living Standard from WHATWGHTML: The Living Standard - A technical specification for Web developers

    内联SVG和MathML支持

    ...

    语法<foo/>打开,并立即关闭foo的元素,如果它是一个MathML或SVG元素(即不是HTML元素)。

    来源:HTML5 Parser at Mozilla Developer Network


    结论:罗伯特·Longson在his answer写道仍然是有效的。 IE11开发人员工具中的此警告是错误的。在HTML5中使用自我关闭语法是有效的(但仅适用于无效元素,例如<br/>;或外来元素,它们来自MathML和SVG)。