如何使用D3.js指定自定义XML / SVG命名空间?

时间:2013-11-28 11:16:22

标签: svg d3.js xml-namespaces

我正在尝试在SVG中定义自己的命名空间,因此我可以使用自己的标记和属性。如果我理解correctly,SVG应如下所示:

<svg xmlns:myns="http://www.example.com/whatever/">
  <g myns:mycustomattr="123">
    ... 

我正在通过D3添加根SVG元素,但是使用attr向其添加命名空间失败:

var svg = d3.select("#container")
  .append("svg")
    .attr('xmlns:myns', 'http://www.example.com/whatever/') 

上面的代码导致: NamespaceError:尝试以对名称空间不正确的方式创建或更改对象

使用D3.js将命名空间添加到SVG的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

您只需设置d3.ns.prefix

即可
d3.ns.prefix.myns = "http://www.example.com/whatever/";

然后使用它:

var svg = d3.select("#container")
  .append("svg")
    .attr('myns:someAttribute', 'some value');