IDに関すること

IDに関するまとめです。

ID付与は自動

エクステンション終了時に自動的に付与されます。

特別な目的がない限りID属性を触る必要はありません。

IDを付与することは可能

クリップやパターンを作成する場合にIDを割り当てる必要があります。
もちろんエクステンション内でID属性を指定することは可能で、エクステンション終了時も残ります。

ただし、

重複IDが存在する場合

エクステンション内でIDを付与する処理を行った場合、エクステンション終了時に重複IDが存在すると下位ツリーのものはIDが振り直されます。

IDが処理内容に影響する場合は重複チェックが必要となります。

IDからオブジェクトを取得する

既存のオブジェクトを使用して処理をしたいことは多々あります。
選択アイテムからそのオブジェクトを獲得できればよいのですが、かなわないことがあるかもしれません。
やむを得ずオブジェクトのIDを引数として与え、そこからオブジェクトを取得せざるを得ないこともあります。

JavaScriptのようにgetElementByIdで取得できれば楽だと思ったのですが、色々あって面倒なのでやめました。

    obj = self.document.xpath('.//*[@id="ID"]', namespaces = inkex.NSS)
#or
    obj = self.document.xpath('.//*[@id="ID"]')
#or
    obj = self.document.findall('.//*[@id="ID"]')

上記のどれかで取得できるはずです。
IDの部分は[@attribute]または[@attribute='value']なので、他の属性も検索出来ます。

xpathの記述方法は、Pythonドキュメントの『20.6.2. XPath サポート』にあります。
更に詳しい情報へのリンクもありますので、興味のある方はそちらをどうぞ。