<!ELEMENT set (page)> <!ATTLIST set apt:name ID #REQUIRED apt:scope (user | host | global) #IMPLIED apt:label NMTOKEN #IMPLIED apt:labelPopup NMTOKEN #IMPLIED apt:dataPath CDATA #REQUIRED apt:elementNamePath CDATA #IMPLIED >
これまでに紹介した要素はすべて、バックエンドの静的コンテンツを処理しました。set 要素は、動的コンテンツを処理するために使用します。これは section 要素のようにページのサブ要素で、プロパティのセットをテーブルに表示します。
これには、 category 要素で認識される 3 つの属性 name、 scope、 label が含まれています。label 属性の値はテーブルのタイトルとして表示されます。
apt:dataPath 属性は、要素のセットを含んだ データのバックエンドノードを指すパスを定義します。dataPath 属性の値は、 org.openoffice.Office.Commands/Execute/Disabled 形式の絶対パスです (付録 A 「設定パスのマッピング」を参照)。 set 要素の dataPath 属性は、バックエンドのノードを指す必要があります。バックエンドのプロパティを指すと、エラーが発生します。
セットの子孫の dataPath 属性には動的な部分が含まれている必要があります。 この動的な部分は、セットのメンバーであるバックエンドのノードの場所を指定します。バックエンドのセットのメンバーにアクセスするためには、名前が異なる必要があります。これを実現するには、変数が使用されます。
変数にはドル記号の接頭辞 $variable_name が付きます。有効な変数名は queriedId と silentId です。$queriedId 変数を指定した場合は、ユーザーに一意の ID を問い合わせる追加の編集フィールドが表示されます。 $silentId 変数を指定した場合は、ユーザーに ID を問い合わせずに、Configuration Manager で自動的に一意な ID が生成されます。
たとえば、property 要素の dataPath 属性の値が org.openoffice.Office.Commands/Execute/Disabled/$queriedId/Command であるとします。ユーザーが新しいセット要素を作成した場合は、セットメンバーの名前も要求されます。GUI に表示される実際の質問の文字列は apt:labelPopup 属性で指定します。この属性を省略した場合は、「新しい項目の名前を入力してください」 というプロンプトが表示されます。
パスの文字列の長さを最小限にするには、セットまたはプロパティの dataPath 属性の値として相対パスを指定することも可能です。相対パスの例は ./$queriedId/Command です。絶対パスは、テンプレート要素ツリーを上に移動し、相対パスにその祖先の dataPaths の接頭辞を付けて構成します。たとえば、プロパティの親がセットであるとします。このセットは dataPath の値 org.openoffice.Office.Commands/Execute/Disabled を指定します。Configuration Manager は、このパスに相対パス ./$queriedId/Command を結合して絶対パス org.openoffice.Office.Commands/Execute/Disabled/$queriedId/Command を生成します。
dataPath 属性 (set 要素と property 要素) をサポートしているセットのすべての子孫がその dataPath 属性の値として絶対パスを指定している場合は、セットの dataPath 属性を指定する必要はありません。
再帰的なセットの構造 (セットのセット) も処理できます。これは、セット要素に page 要素を含め、それにまた set 要素を含めることで実現します。サブセットの dataPath 属性では、スーパーセットに相対するパスを指定できます。
セットのメンバーがバックエンドプロパティの場合、バックエンドプロパティの oor: name 属性は、GUI でラベルとして表示されます。バックエンドプロパティの値は GUI 要素のラベルとして表示されます。
セットのメンバーがバックエンドのノードの場合は、バックエンドノードの oor:name 属性は、リンクの名前として表示されます。apt:elementNamePath 属性を使用すると、この命名スキームを上書きできます。elementNamePath は、バックエンドのノードに相対するパスを指定します。 このパスは、バックエンドのプロパティを指している必要があり、その値はリンクの名前として表示されます。このようなリンクをユーザーがクリックすると、「コンテンツ区画 」が更新されて、セットの page サブ要素で指定されたページが表示されます。