svg:svg是什么意思?

时间:2012-05-14 12:32:26

标签: javascript xml svg d3.js

这是什么意思?

.append("svg:svg")

我在HTML和D3代码中看到了它。它是否添加了SVG的插件?

2 个答案:

答案 0 :(得分:19)

在XHTML代码中,可以使用命名空间来区分网页中包含的其他基于XML的语言。这里,名称空间“svg”在标签“svg”之前使用。

namespace:tagname

如果两个标签(例如,在XHTML和SVG中)具有相同的名称并且您想要准确指定您引用的那个标签,这可能很有用。可以使用xmlns属性指定标记。如您所知,XHTML文档以

开头
<html xmlns="http://www.w3.org/1999/xhtml">

您可以将前缀指定为

<html xmlns:prefix="http://www.w3.org/1999/xhtml">

然后你将使用

<prefix:head>
    <prefix:title></prefix:title>
</prefix:head>

类似地你可以使用

<svg xmlns="http://www.w3.org/2000/svg">
在包含svg图片时,

而不仅仅是<svg>。然后所有svg标记都将以svgprefix前缀开头。但是,如果您有子SVG节点,则还需要定义此xmlns属性。在这种情况下,定义前缀可能会更容易。

答案 1 :(得分:16)

来自D3.js's append() method的文档:

  

元素的标记名称可以具有名称空间前缀,例如“svg:text”,以在SVG名称空间中创建“text”元素。默认情况下,D3支持svg,xhtml,xlink,xml和xmlns命名空间。可以通过添加d3.ns.prefix来注册其他名称空间。

请特别注意D3.js中的命名空间前缀基于您的文档,而是实际命名空间URL的公共前缀的预定义映射。

命名空间是XML文档(包括XHTML 但不是HTML )可以包含两个属性或具有相同名称的元素的方式(例如,数学正弦计算中的“sin”与“sin”如在道德失败中)没有冲突。将<svg>元素放在XHTML文档中没有意义,除非该SVG元素在SVG namespace中。

有关详细信息,请阅读Namespaces in XML