这是什么意思?
.append("svg:svg")
我在HTML和D3代码中看到了它。它是否添加了SVG的插件?
答案 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。