svg:svg是什么意思?

use*_*697 24 javascript xml svg d3.js

这是什么意思?

.append("svg:svg")
Run Code Online (Sandbox Code Playgroud)

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

Imp*_*Imp 19

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

namespace:tagname
Run Code Online (Sandbox Code Playgroud)

如果两个标记(例如,在XHTML和SVG中)具有相同的名称并且您想要准确指定您引用的标记,则此选项非常有用.可以使用xmlns属性指定标记.如您所知,XHTML文档始于

<html xmlns="http://www.w3.org/1999/xhtml">
Run Code Online (Sandbox Code Playgroud)

您可以将前缀指定为

<html xmlns:prefix="http://www.w3.org/1999/xhtml">
Run Code Online (Sandbox Code Playgroud)

然后你会用

<prefix:head>
    <prefix:title></prefix:title>
</prefix:head>
Run Code Online (Sandbox Code Playgroud)

同样你可以使用

<svg xmlns="http://www.w3.org/2000/svg">
Run Code Online (Sandbox Code Playgroud)

而不是只<svg>包括你的svg图形.然后所有svg标签将以svgprefix前缀开头.但是,如果您有子SVG节点,则还需要xmlns定义此属性.在这种情况下,定义前缀可能会更容易.

  • @Phrogz我恭敬地不同意.提出的问题是:"什么是svg:svg?" 我完全回答了这个问题,结果是这个答案被接受了.Op说他们在D3和HTML代码中看到了它,而不仅仅是你所暗示的D3.在我看来,op意识到`append`函数获取了一个标记名,只知道svg:svg`是什么类型的标记名,猜测它是一个SVG插件.你也不能说这是一个JS问题,因为问题没有被标记为"JavaScript". (3认同)
  • 投反对票;尽管此信息是正确且相关的,但 OP 的问题与 D3.js 中具有特定应用程序的 JavaScript 字符串有关,而不是 XML 标记。 (2认同)

Phr*_*ogz 16

D3.js append()方法的文档:

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

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

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

有关更多信息,请阅读XML中的命名空间.

  • 仅作为记录,自2011年11月23日起,命名空间在d3中是可选的 (5认同)