D3每页多个可视化命名空间IRI冲突

时间:2014-07-21 13:12:00

标签: javascript html svg d3.js xhtml

我使用D3为每页生成多个可视化,但在涉及IRI或功能IRI时我遇到了问题。

即使用textPaths的代码:

this.linkGroup.selectAll(".text_path")
 .attr("xlink:href", function(d) { return "#" + d.id })
 .text(function(d) { return d.text })

或标记:

this.linkGroup.selectAll(".link")
  .attr("marker-start", function(d) { return "url(#startArrow)" })

对于这两者,如果我在第一个之后创建的任何SVG具有与前一个相同的IRI id,它将使用HTML中找到的第一个id,即使它来自与当前上下文不同的SVG。 举个例子:

<body>
  <svg>
    <defs>
      <marker id="startArrow"...>...</marker>
    </defs>
  </svg>
  <svg>
    <defs>
      <marker id="startArrow"...>...</marker>
    </defs>
  </svg>
</body>

如果在第二个SVG中我使用url(#startArrow)引用标记,则它将在整个文档中获得第一个#startArrow,在本例中为第一个SVG。

有没有办法只使用当前SVG中的ids / IRI而不是整个文档?不确定这是否需要一些命名空间。

0 个答案:

没有答案