d3不会将命名空间属性附加到svg元素

Sle*_*vin 5 javascript svg d3.js

我想知道为什么D3.js不会将命名空间属性添加到SVG元素.

d3.ns.prefix.ex = 'http://example.com/';
var chart = d3.select('#chart').append('svg:svg');
Run Code Online (Sandbox Code Playgroud)

我认为输出应该是这样的:

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

其实只是

<svg>
Run Code Online (Sandbox Code Playgroud)

看到这个小提琴的完整例子:http://jsfiddle.net/7kWDK/

Rob*_*son 1

命名空间属性仅在文档用作某些 XML mime 类型(例如 image/svg+xml)时才相关。

命名空间不会在 html 标记(例如 jsfiddle)中执行任何操作,因此 d3 不需要创建它们。

如果您需要命名空间,那么您可以在 html 中手动添加属性,或者切换到 xhtml,其中属性将自动创建。

  • 好吧,但这不是重点。SVG 应导出为文件。我想在 HTML 中包含 SVG 代码作为用户预览,但 SVG 文件本身应该是具有命名空间属性的有效文档。所以我要手动添加它们。但为什么 D3 提供了声明命名空间的函数呢?“d3.ns.prefix”有什么意义?只是为了让 D3 知道我正在使用命名空间(即使 D3 并不重要?)。我很困惑。 (5认同)