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