Translation5:Optional Values, Defaults, and Preferences
From IDMLWiki
10.1.3 オプションの値、デフォルト値、プリファレンス
IDMLスキーマをみると、ほとんどの属性とエレメントがオプションであることがわかります。例えば<Rectangle>エレメントでは、<PathGeometry>エレメントはオプションです。<PathGeometry>エレメントには、長方形を形作るパスの数のリストがあるのに(「ページオブジェクトの図形」参照)、どうしてオプションなのかは理解しがたいところです。実際、どういう意味があるのでしょうか。
第一に、<PathGeometry>エレメントが技術的に省略可能だからです。<Rectangle>エレメントから<PathGeometry>エレメントが省略されたIDMLファイルをInDesignで開くと、デフォルトサイズの長方形が作成されます。長方形のサイズと位置がデフォルトになってしまうことはさておき、注目すべき点は、IDMLファイルで不足している値に対し、InDesignがデフォルト値を設定することです。もちろんこれは極端な例ですので、サイズと位置の設定がない長方形を作成してよいということではありませんが、最小限のXMLエレメントでドキュメントが作成できるということがわかるでしょう。
InDesignから書き出されたIDMLファイルを見てみると、大量のXMLエレメントがあることがわかります。他のエレメントの中で、<Document>エレメントが単独でいくつもの<Language>や<TextVariable>、<CrossreferenceFormat>エレメントを含んでいます。自分でIDMLファイルを作成すれば、これらのエレメントは省略できます。これらのエレメントはドキュメントが確実に再現できるように、InDesignが書き出しているだけのものです。これらのデフォルトのエレメントを省略したIDMLファイルをInDesignで開くと、InDesignは対応するデフォルトのオブジェクトを、InDesignドキュメントに生成します。
この仕様は、InDesign上で新規ドキュメントを作成するときと同じです。InDesignで、何もドキュメントを開いていない状態で各種設定値を変更すると、アプリケーションのデフォルト値を変えることができます。 アプリケーションのデフォルト値は、新規ドキュメント作成時に適用されますが、既存のドキュメントには影響しません。一方、ドキュメント上でオブジェクトを何も選択しないで設定を変更すると、そのドキュメントのデフォルト値が変更されます。以降、そのドキュメントのすべての新規オブジェクトは、変更されたデフォルト値が適用されますが、既存のオブジェクト(または他のドキュメントのオブジェクト)には影響しません。(InDesignのデフォルト値については、オンラインヘルプを参照のこと)
しかし、IDMLはアプリケーションのデフォルト値を使うことはできません。ユーザーにより、設定が変わってしまうからです。同様に、ドキュメントのデフォルト値も使えません。IDMLスキーマがほぼ全てのドキュメントのデフォルト値をオプションにしているからです。その代わりに、IDMLはIDMLデフォルトファイルから、省略されたオプションのデフォルト値を得ることができます。この機能によって、InDesignアプリケーションやドキュメントのデフォルト値の役割をし、IDMLドキュメントがユーザーの設定やインストール時の環境(アプリケーションのロケールなど)に関わらず、一定であることを保障します。ドキュメントのデフォルト値がIDMLドキュメントで見つからないときは、InDesignは対応するIDMLデフォルトファイルの値を使用します。
一般的に、ドキュメントのデフォルトは共通して使用されるフォーマットの属性に対して設定されます。例えばフォント、線幅、塗り色などです。IDMLにも同様に、よく使用される重要な2つのエレメントが用意されています。<PageItemDefault>と、<TextDefault>です。(IDMLパッケージファイルでは、リソースフォルダ内のPreferences.xmlファイルにあります)これらのエレメントの値を設定すると、ドキュメント中のテキストとページアイテムのデフォルトフォーマットになります。
これらのエレメントの1つで、属性またはエレメントのデフォルト値を設定すると、その値を明示的にオーバーライドされていない、すべてのエレメントのフォーマットになります。
例をあげます。ドキュメント中の全ページのデフォルトの線幅を2ptにしたいとします。<PageItemDefault>エレメントのStrokeWeight属性を2に変更します。これで、ドキュメントに追加するアイテムがすべてのページで線幅2ptになります。あるページアイテムの線幅をオーバーライドしたいときは、ページアイテムを設定しているエレメントの、対応する属性に違う値を入力します。この例で、ある特定の長方形の線幅を1ptにするときは、<Rectangle>オブジェクトのStrokeWeight属性を1にします。この値は<PageItemDefault>エレメントで設定されている値をオーバーライドします。
すなわち、ページアイテムで独自に線幅を設定すると、InDesignはその値を有効にします。ページアイテムで線幅を設定していないとき、InDesignは<PageItemDefault>エレメントで設定されている値を有効にします。IDMLドキュメントの<PageItemDefault>エレメントで線幅を設定していないとき、またはIDMLドキュメントに<PageItemDefault>エレメントがないときは、InDesignはIDMLデフォルトファイルにある<PageItemDefault>エレメントを有効にします。
Note:上記は単純な例で、長方形を新規作成するときのデフォルトのオブジェクトスタイルが、InDesignで組み込まれている「なし」(編集できないオブジェクトスタイル)の場合を想定しています。これはInDesignのデフォルトの仕様ですが、ユーザーが変更することが可能です。IDMLでこのデフォルトにするには、<PageItemDefault>エレメントのAppliedObjectStyle属性をObjectStyle/$ID/[None]に設定します。
作成するIDMLドキュメントのページアイテムのほとんどが、同じフォーマットを共有していることがわかったら、<PageItemDefault>エレメントでフォーマットを設定し、<Rectangle>や<Oval>、<GraphicLine>エレメントで、対応する属性とエレメントを省略して共有させると、自分でIDMLを書くことが簡単になります。
Note:InDesignスニペットファイル(.idms)を作成するとき、上記の方法でデフォルトのフォーマットを設定することはできません。<PageItemDefault>、<TextDeafult>エレメントはスニペットでは使用されません。代わりに、スニペットファイルには、配置先のInDesignドキュメントのデフォルトフォーマットが適用されます。これはInDesignで作成されたスニペットファイルを配置するときと同じ仕様ですが、スニペットファイルを作るときは、配置先ドキュメントのフォーマットにオーバーライドされたくない、すべてのフォーマットを完全に設定する必要があります。スニペットの配置と書き出しについては、InDesignのオンラインヘルプを参照してください。スニペットフォーマットとドキュメントレベルのIDMLの違いについては、付録B「1.1 InDesignスニペット(.idmsファイル)」と「1.2 ICML」を参照してください。
InDesignから書き出されたIDMLドキュメントには、プリファレンスエレメント(<XMLImportPreference>、<XMLExportPreference>、<LayoutAdjustmentPreference>エレメントなど)があります。前述しましたが、これらのエレメントはInDesignドキュメントとして確実に再現させるためのものであり、IDMLファイルにおいて、スプレッドやストーリー、ページアイテムの構造には何の効果もありません。例えば、<XMLImportPreference>エレメントでの設定は、ユーザーがInDesignでIDMLドキュメントを開き、ファイル>XMLを読み込みを実行しない限り、有効にはなりません。IDMLドキュメントのコンテンツは変更されません。
IDMLを独自に書くならば、通常これらのプリファレンスオブジェクトは省略することができます。これらのプリファレンスエレメントを使うとしたら、グループワークする設定のファイルを作ったり、全てのドキュメントに渡って標準仕様を維持する場合のみです。例えば、グループから「レイアウト調整を使用」にチェックを入れたいと要望されたときは、<LayoutAdjustmentPreference>エレメントのEnableLayoutAdjustment属性をtrueに設定しなければなりません。プリファレンスオブジェクトについては、「10.7 プリファレンス」を参照してください。
