2015-02-07 54 views
0

我正在創建一個SVG。 SVG的標籤是這樣的:爲什麼在SVG標籤中需要像XMLNS這樣的複雜元素?

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800"> 

如果我更換一個簡單的<svg width="800" height="800">標籤,該文件是空白。在Chrome瀏覽器中,如果我拿走了較高的代碼而不是XMLNS,它就可以工作。在IE11中,只要我拿走任何東西(DOCTYPE,XMLNS,PUBLIC ...),文檔就是空白的。爲什麼我需要這樣複雜的元素?

+0

在什麼情況下你使用這個SVG?在瀏覽器中? – 2015-02-08 07:05:57

+0

是的,我沒有看到您可以使用SVG的其他環境,但這可能是因爲我是初學者。 – 2015-02-08 11:52:44

+0

你真的是指'<!DOCTYPE svg width =「800」height =「800」>或者是一個錯字嗎?您已將doctype和根SVG標記組合在一起。哪個不行。 – 2015-02-08 15:27:15

回答

0

他們不需要。訣竅是你需要使用MIME類型的文本/ HTML而不是image/svg + xml(或任何其他XML MIME類型)。

<!doctype html> 
 
<svg width="500" height="350"> 
 
    <circle id="orange-circle" r="30" cx="50" cy="50" fill="orange" /> 
 
</svg>

如果使用XML MIME類型,那麼XML支持命名空間,你必須因此定義它們爲的xmlns屬性來區分<a>是否是一個html <a>用src屬性或需要具有xlink:href屬性的SVG <a>元素。 HTML只是神奇的猜測。

+0

這不起作用。 – 2015-02-08 11:51:56

+0

它當然可以在Firefox,Chrome,IE9 +上使用。正如我在回答中所說的,儘管你必須**用text/html MIME類型來提供它。 – 2015-02-08 15:23:21

1

SVG文件是XML文件。因此,當它們是獨立文件時,它們需要某種前導碼,以便無論解析它都知道該做什麼。所以獨立的SVG文件至少需要具有xmlns屬性。瀏覽器要求。但是,除非您想進行適當的XML驗證,否則DocType不是必需的。

當一個SVG內聯在HTML頁面的主體中時,你也不需要。 HTML解析器知道SVG內容並知道該怎麼做。

相關問題