2014-06-19 53 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)。