我想將來自不同源文檔的幾個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引用,所以這些都是相關的,以及只要它們引用同一個文檔。感謝提示! –