Translation5:Object Reference Format
From IDMLWiki
9.5.4 オブジェクト参照フォーマット
スクリプト用のオブジェクトモデルのプロパティは、しばしばオブジェクトの参照を含んでいます。例えば、「Rectangle」の「FillColor」のプロパティは常に「Color」「Tint」「MixedInk」「Gradient」、または「Swatch」オブジェクトを参照するでしょう。IDMLは、属性を表すXMLエレメントかプロパティの値としてオブジェクト(ドキュメントのほかの場所に保存される)を表すXMLエレメントへの言及を含めることによって、この関係を表現します。オブジェクト参照はIDMLファイル内の最も一般的な相互参照フォーマットです。
XML要素にオブジェクトをシリアライズするとき、InDesignはエレメントのIDに一意な文字列を生成して、「Self」属性にそれを格納します。ID生成するのに使用されるアルゴリズムは、複雑でAdobe独自ですが、以下の規則に従います:
- オブジェクトが、名前によってそのメンバーを識別するクラスに属する場合、エレメントの「Self」属性の値が名前になるでしょう。名前が一意でない場合、InDesignはインポート時に接頭辞(かつ/または)接尾語を加えて固有のIDを生成します。
- オブジェクトが別のオブジェクトの子供であるなら、親オブジェクトの名前かIDが接頭語として「Self」属性の値に加えられるでしょう。パス構文と同様のパターンを使用して:
/parent/childname
- オブジェクトに名前がないと、オブジェクトのIDプロパティの値は、エレメントの「Self」属性の値として使用されるでしょう。
- 複数のオブジェクトが同じタイプで存在している場合、インデックス数が接尾辞として「Self」属性に加えられるでしょう。
「Self」属性の値の唯一の要件は、IDMLパッケージの中で一意であることです。IDMLを自分で書いているなら、あなたは上のパターンを観測する必要はありません--(IDMLパッケージ内でその値が)一意であり、エレメントのすべての参照の変更が一致する限り、「Self」属性の値を好きなように変更できます。
<Story Self = "ucb" .../>
- 下記にXMLエレメントの値として表現された要素参照の例を示します。例では、<ParagraphStyle>エレメントの<BasedOn>エレメントは「Self」属性が値の「Heading」(段落スタイルの名前)を含む別の<ParagraphStyle>エレメントを参照します。この場合、段落スタイルはIDMLパッケージの中のResourcesフォルダーの中のStyles.htmlファイルで定義されます。
<BasedOn type="object">ParagraphStyle\Heading</BasedOn>
- また、相互参照は属性の値として現れることができます。次の例では、<IndexOptions>エレメントの「TitleStyle」属性は「Self」属性が値の「IndexTitle」(段落スタイルの名前)を含む<ParagraphStyle>エレメントを参照します。この場合、段落スタイルはIDMLパッケージの中のResourcesフォルダーの中のStyles.htmlファイルで定義されます。
<IndexOptions TitleStyle="ParagraphStyle\IndexTitle" .../>
- 次の例はエレメントを参照するためにエレメントの「Self」属性を使用する相互参照を示しています。上に示されるように、値「ucb」は<Story>エレメントの一意な識別子です。
<TextFrame ParentStory="ucb" .../>
- IDMLファイルは前方への参照を含むことができます。(すなわち、IDMLファイルにまだ含まれていないオブジェクトの参照)
- 参照はIDMLパッケージ、あるいは単一のIDMLファイル内でのみ有効です。 1個のパッケージ(またはファイル)から別のものへの参照は許されていません。
