我使用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而不是整个文档?不确定这是否需要一些命名空间。