我想将来自不同源文档的几个SVG片段组合成一个结果文档。为了避免ID冲突,我必须通过为每个源文档的ID添加一个唯一字符串来“命名空间”。在SVG文档中使用ID/IDREFs
我可以使用XPath来查找SVG文档中的所有ID声明(例如//@id
)。我可以通过直接操作DOM或通过执行一些正则表达式wizardry(或两者的组合)来替换ID。 作为一个方面说明:我正在用PHP做这一切,速度/性能并不重要,所以正则表达式替换就好了。
到目前为止,我将任何属性都以本地名称id
作为ID声明处理,例如,
<clipPath id="a">...</clipPath>
和我(当被#
preceeded IE)替换该语法对应IDREF的成功:
<g clip-path="url(#a)">...</g>
现在,这些是我的问题:
- 是否有任何SVG中除本地名称为
id
之外的其他属性也是ID声明?哪个? - SVG中除了上述之外还有其他语法的IDREFs吗(前
#
)?哪个? - 是否有关于SVG中ID/IDREF的任何资源我应该知道的?
- 合并SVG文档时是否存在重复ID以外的任何潜在冲突?
感谢您的任何提示! :)
2.您还需要处理'xlink:href'引用,如在''和其他元素中找到。例如,请参阅:http://www.w3.org/TR/SVG/struct。html#ImageElement –
感谢@Erik的回答,这肯定涵盖了一些有趣的观点,但是对于我的具体问题,部分看起来有点像一般的XML讲座。因此,请允许我重新说明:除引用的SVG文档之外,是否还有其他ID-IDREF参考模式([id/xml:id attribute])(http://www.w3.org/ TR/SVGTiny12/struct.html#IDAttribute)+ IRI引用(如果引用同一个文档,后者只是相关的),而不是CSS选择器),它们在合并几个SVG文档时可能是相关的?谢谢! –
你是对的,@BigBadaboom,'xlink:href'属性也带有IRI引用,所以这些都是相关的,以及只要它们引用同一个文档。感谢提示! –