我想将来自不同源文档的几个 SVG 片段组合成一个结果文档。为了避免 ID 冲突,我必须通过在每个源文档的 ID 前面加上一个唯一的字符串来“命名空间”它们。
我可以使用 XPath 来查找 SVG 文档中的所有 ID 声明(例如//@id
)。我可以通过直接操作 DOM 或执行一些正则表达式魔法(或两者的组合)来替换 ID。附带说明:我正在使用 PHP 完成所有这些工作,速度/性能并不重要,因此正则表达式替换就可以了。
到目前为止,我将任何具有本地名称的属性id
视为 ID 声明,例如
<clipPath id="a">...</clipPath>
并且我成功地替换了这种语法的相应 IDREF(即,当前面有 a 时#
):
<g clip-path="url(#a)">...</g>
现在这些是我的问题:
id
除了本地名称也是 ID 声明的属性之外,SVG 中是否还有其他属性?哪个?- 除了上述(前面)之外,SVG 中是否还有其他 IDREF 语法
#
?哪个? - 我应该知道关于 SVG 中的 ID / IDREF 的任何资源吗?
- 合并 SVG 文档时除了重复 ID 之外是否还有其他潜在冲突?
感谢您的任何提示!:)