# 設計様式の利用

SGML ドキュメントは、特定の文書型定義 (DTD) に準拠します。インフォメーション・マネージャに文書型定義で定義された要素の処理方法を理解させるには、文書型定義の基本的な要素に属性を適用します。これらの属性は、インフォメーション・マネージャの設計様式に対応します。これらは、インフォメーション・マネージャが解釈し、ドキュメントからオンラインのライブラリを構築するセマンティクスです。

この節の例は、DocBook DTD のバージョン 2.2.1 のものです。

インフォメーション・マネージャの設計様式は、インフォメーション・マネージャにおけるドキュメントの編成モデルに基づいています。インフォメーション・マネージャは、インフォメーション・ライブラリをグループ化して、そのタイトルがハイパーテキスト目次になっているセクションのブックを含むブックケースにします。これには、表やグラフィックのような特定の要素へのアクセスが含まれます。

ブックケース、ブック、セクション、タイトル、リンク、表、およびグラフィックは、ブラウザがインフォメーションを管理するために識別しなければならない重要な要素の例です。インフォメーション・マネージャは、このような種類のインフォメーションのそれぞれに対応する設計様式を提供します。インフォメーション・マネージャでこれらを識別するには、文書型定義に対応する設計様式を適用します。特に、識別したい属性をもつ各要素に、属性を追加します。文書型定義の保守を容易にするには、インフォメーション・マネージャによって提供されるパラメータ・エンティティ参照を使用します。

## パラメータ・エンティティ参照の使用

インフォメーション・マネージャは、インフォメーション・マネージャ設計様式を使用する簡易な（そして推奨の）方法として、パラメータ・エンティティ参照を提供します。インフォメーション・マネージャ設計様式のエンティティ名は、`/usr/dt/infolib/<lang>/SGML/dtinfo.af` に格納されています。完全な属性を入力するのではなく、属性リストでパラメータ・エンティティ参照を使用することによって、文書型定義への変更を最少限にして、インフォメーション・マネージャの最新の機能を利用することができます。次に、例を示します。

- 完全な属性を適用するには、次のようにします。

      <!ELEMENT caption - - ((%inlinechar.gp;)+) >
      <!ATTLIST caption
              %commonatts;

              DTINFO.TITLE CDATA #FIXED “#CONTENT”
      >

- パラメータ・エンティティ参照を使用するには、次のようにします。

      <!ELEMENT caption - - ((%inlinechar.gp;)+) >
      <!ATTLIST caption
              %commonatts;

              %DTINFO.Title; “#CONTENT”
      >

文書型定義の編集の詳細については、 「設計様式の適用」 「DTINFO 設計様式の記述」 を参照してください。

## DTINFO 設計様式の記述

設計様式の記述は、記述された設計様式と連携して共通に使用される関連様式を識別します。関連様式は、その対応する属性名を使用して、マニュアル中で識別されます。この節では、以下に示すことを説明します。

- 「セクション様式」

- 「値様式」

- 「スコープ様式」

- 「ハイパーテキスト様式」

- 「スタイル様式」

目次、ブックケース規定、およびスクラッチのスタイル・シートの作成は容易ですが、既存のブックケース、スタイル・シート、および目次の文書型定義に、インフォメーション・マネージャの設計様式を適用することができます。詳細については、ブックケース様式、スタイル・シート様式、および 「目次の設計様式」 を参照してください。

これらの設計様式は、ほとんどの `dtdocbook2infolib` のサブコマンドの使用前に、適用しなければなりません。

### 値の理解

データ値をとるインフォメーション・マネージャ設計様式では、単純な機能言語が、要素内容、属性値、およびリテラルの連携を形成する機構を提供します。引き数は、表 「値の作成の構文」 で定義されています。

### 値の作成の構文

`構文` | `意味`
attr() | attr() は引き数として使用される属性名の値を返します。IMPLIED 属性は、空の文字列を返します。attr() は、現在の要素についてのみ参照します。
concat() | concat() は、文字列の引き数（リテラル、要素内容、属性値、または他の機能の値）を連結します。
firstof() | firstof() は、その引き数中の最初の空でない文字列を返します。これは、その引き数によって定義される可能性の順序から値を選択します。
`要素名` | `要素名`は、現在の要素の内容モデルのメンバである要素の名前を、値として使用します。
`リテラル文字列` | `リテラル文字列`は、リテラル文字列指定するために、引用符 '...' または "..." のいずれかを使用します。
#CONTENT | #CONTENT は、現在の要素内容のすべてを値として使用します。

表で説明されている構文を組み合わせて、値を作成することができます。また、必要に応じて、リテラル文字列を追加することもできます。

次に、設計様式で値を指定する例を示します。

    DTINFO.Title  CDATA             #FIXED
                                        "concat( attr(Label), RefTitle, ManVolNum )"
    DTINFO.Graphic  CDATA           #FIXED
                                      "firstof( attr(Fileref), attr(Other), #CONTENT )"

### セクション様式

インフォメーション・マネージャに、SGML ファイルの構造を理解させるには、セクション設計様式を適用しなければなりません。様式の値の使用と意味は、その様式の型に依存します。たとえば、章のタイトルに指定されると、値はハイパーテキスト目次に表示されます。`DTINFO.Graphic` では、値はグラフィック・データを含むファイルの名前です。これらの関係性は、表 「様式の値の意味」 で説明しています。

### 様式の値の意味

`セクション様式` | `値様式の意味、適用時`
DTINFO.Section | セクションの値は、インフォメーション・マネージャの表示ウィンドウに表示されるものです。デフォルト値は #CONTENT です。
DTINFO.Title | DTINFO.Section のタイトルの値は、インフォメーション・マネージャのブック・リストに表示されます。
DTINFO.Graphic | グラフィックの値は、グラフィック・データを含むファイル名です。この値は、エンティティ参照からも引き出されます。
DTINFO.Ignore | この情報は、データベースあるいは 全テキスト索引 (FulText Index) に格納されません。（したがって表示されません。）
DTINFO.ShortTitle | 短縮タイトルの値は、表示ウィンドウにおいて、タイトルの一部分が切り詰められるところで使用されます。

`DTINFO.Section`

- `DTINFO.Section` 様式を、章のようなインフォメーションの一部分を分離するコンテナ要素に適用します。`DTINFO.Section` を使用して、インフォメーション・マネージャの表示ウィンドウに、インフォメーションの単位として、どの要素を表示するかを定義します。`dtdocbook2infolib` は、`DTINFO.Section` を使用して、階層構造を引き出すことができます。

  エンティテ名: `DTINFO.Section`

  属性テンプレート: `DTINFO.Section CDATA FIXED “#CONTENT”`

  関連様式: `DTINFO.ID` (必須), `DTINFO.Scope`, `DTINFO.ShortTitle`, `DTINFO.Style`, `DTINFO.Title` (必須), `DTINFO.Value`

  例:

      <!ELEMENT Preface - - (DocInfo?, Title, TitleAbbrev?, (%sect1.gp;)) >
      <!ATTLIST Preface
              %commonatts;

              %DTINFO.Section;            “#CONTENT”
              %DTINFO.Style;              “sty1”
              %DTINFO.Title;              “#CONTENT”
              %DTINFO.ID;                 “attr(id)”
      >

`DTINFO.Title`

- 通常は、章のタイトル、ヘッダ、キャプション、図のタイトル、表のタイトル、および例のタイトルなど、どのようなタイトルであっても `DTINFO.Title` を適用します。

  エンティティ名: `DTINFO.Title`

  属性テンプレート: `DTINFO.Title CDATA #FIXED`

  関連様式: `DTINFO.Scope`, `DTINFO.Value`

  例:

      <!ELEMENT RefMeta - - (RefEntryTitle, ManVolNum?,RefMiscInfo*) >
      <!ATTLIST RefMeta
              %commonatts;

              %DTINFO.Title;          #“CONTENT”
              %DTINFO.Value;          “concat( RefEntryTitle, ManVolNum)”
      >

`DTINFO.ShortTitle`

- 既存の文書型定義にタイトルの省略形があれば、その要素に `DTINFO.ShortTitle` を適用します。この要素の内容は、決して表示ウィンドウに表示されませんが、ダイアログのリスト項目として現われる可能性があります。内容は、全テキスト索引 (FulText Index) に現われません。

  エンティティ名: `DTINFO.ShortTitle`

  属性テンプレート: `DTINFO.ShortTitle CDATA #FIXED`

  関連様式: `DTINFO.Value`

  例:

      <!ELEMENT TitleAbbrev - - ((%inlinechar.gp;)+) >
      <!ATTLIST TitleAbbrev
              %commonatts;

              %DTINFO.ShortTitle;  “#CONTENT”
      >

`DTINFO.Graphic`

- グラフィック、数学の式、またはある種の表を指示する要素に `DTINFO.Graphic` を適用します。

  エンティティ名: `DTINFO.Graphic`

  属性テンプレート: `DTINFO.Graphic CDATA #FIXED`

  関連様式: `DTINFO.Scope`, `DTINFO.ID`.

  例:

      <!ELEMENT Graphic - - CDATA>
      <!ATTLIST Graphic
              Entityref   ENTITY   #IMPLIED
              Fileref     CDATA    #IMPLIED
              Format      NOTATION
                          %notationtypes; #IMPLIED
              Id          ID       #IMPLIED

              %DTINFO.Graphic; “#CONTENT”
              %DTINFO.ID;      “:attr( ID )”
              %DTINFO.Scope.Graphic;
      >

`DTINFO.Table`

- We may not support DTINFO.Table - so it may be commented out in future documentation. CALS の表モデルにしたがって、SGML でエンコードされた表を指示する要素は、`DTINFO.Table` 属性を受け付けるべきです。そうでなければ、`DTINFO.Graphic` を受け付けるべきです。

  エンティティ名: `DTINFO.Table`

  属性テンプレート: `DTINFO.Table CDATA #FIXED`

  関連様式: `Scope.Table`

  例:

      <!ELEMENT InformalTable - - ((%tblcontent.gp;)) -(Table|InformalTable)>
      <!ATTLIST InformalTable
              %commonatts;

              Colsep   %yesorno;                          #IMPLIED
              Frame    (Top|Bottom|Topbot|All|Sides|None) #IMPLIED
              Orient   (Port | Land)                      #IMPLIED
              Pgwide   %yesorno;                          #IMPLIED
              Rowsep   %yesorno;                          #IMPLIED
              Tabstyle NMTOKEN                            #IMPLIED

              %DTINFO.Table;      “#CONTENT”
              %DTINFO.Scope.Table;
      >

`DTINFO.Ignore`

- 表示したくないインフォメーションを含む要素に `DTINFO.Ignore` を適用します。要素に有用なハイパーテキスト・インフォメーションがある場合は、構築過程において使用されます。たとえば、`DTINFO.Value` を指定して、ハイパーテキストの値を作成することができます。

  エンティティ名: `DTINFO.Ignore`

  属性テンプレート: `DTINFO.Ignore CDATA #FIXED`

  関連様式: `DTINFO.Value`

  例:

      <!ELEMENT InternalComment - - ((%inlinechar.gp;)+)>
      <!ATTLIST InternalComment
              %DTINFO.Ignore; “#CONTENT”
              %DTINFO.Value;          “#CONTENT”
      >

### 値様式

`DTINFO.Value` 様式は、設計様式の戻り値を定義します。`DTINFO.Value` は、最上位の要素への値を返します。たとえば、要素 `foo` が内容モデル `a?`、`b` をもち、`foo` は設計様式 `DTINFO.Title firstof “(a,b)”` を使用する、と仮定しましょう。`a` の値は、その `Label` 属性とその内容を連結することによって形成されます。この形成は、`DTINFO.Value` を使用して処理し、`foo` に与えることができます。

値設計様式は、以下のとおりです。

`DTINFO.Value`

- `DTINFO.Value` 属性は、設計様式の戻り値を指定します。`DTINFO.Value` の値は、値として使用されるストリームを作成する機能言語です。値は、暗黙の連結の様式をとります。引き数は、表 「値の作成の構文」 で定義しています。

  エンティティ名: `DTINFO.Value`

  属性テンプレート: `DTINFO.Value CDATA #FIXED “ `Value`”`

  関連様式: すべてのセクション様式

  例:

      <!ELEMENT RefMeta - - (RefEntryTitle, ManVolNum?,RefMiscInfo*) >
      <!ATTLIST RefMeta
              %commonatts;

              %DTINFO.Title;
              %DTINFO.Value; “concat( RefEntryTitle,'(`,
      ManVolNum,')')”
      >

### スコープ様式

インフォメーション・マネージャでは、ユーザが検索の範囲を定義することができます。どのブックを検索範囲に含めるかブラウザに指示したり、ブック、テキスト本体、例、索引、グラフィック、表、タイトル、またはそれらの組み合わせから成るすべてのコンポーネントの検索可否を指定したりすることができます。スコープ設計様式は、インフォメーション・マネージャの検索範囲に、どの要素を含めるかを決定します。たとえば、全テキスト索引 (FulText Index) 内で、どのスコープ情報に索引を付与するかを決定します。スコープは、`DTINFO.Scope` が適用される要素内に含まれるどのような要素にも適用されます。

スコープ様式を要素に適用するには、`DTINFO.Scope` 属性を５種類の値のいずれかで適用します。要素にスコープ様式を適用しない場合、データはデフォルトのスコープ `Body Text` をもちます。

`DTINFO.Scope` として指定可能な値は、Example、Graphic、Index、Table および Title であり、次に示すエンティティによって表現されます。

`DTINFO.Scope.Example`

- `DTINFO.Scope` 属性を、値 `Example` で、例をその一部とする検索範囲に含めたいデータをもつ要素に適用します。

  エンティティ名: `DTINFO.Scope.Example`

  属性テンプレート: `DTINFO.Scope Name #FIXED Example`

  例:

      <!ELEMENT Example - - (Title, TitleAbbrev?, (%para.gp; |
                              %list.gp; | %object.gp;)+) >
      <!ATTLIST Example
              %commonatts;
              Label  CDATA  #IMPLIED

              %DTINFO.Scope.Example;
      >

`DTINFO.Scope.Graphic`

- `DTINFO.Scope` 属性を、値 `Graphic` で、グラフィックをその一部とする検索範囲に含めたい要素に適用します。この設計様式により、あるグラフィック型の内部に含まれるどのような文字列も、検索による抽出および索引付けが可能になります。

  エンティティ名: `DTINFO.Scope.Graphic`

  属性テンプレート: `DTINFO.Scope Name #FIXED Graphic`

  関連様式: `DTINFO.Graphic`, `DTINFO.ID`, `DTINFO.Value`

  例:

      <!ELEMENT Graphic - - CDATA>
      <!ATTLIST Graphic
              Entityref   ENTITY               #IMPLIED
              Fileref      CDATA               #IMPLIED
              Format      NOTATION
                               %notationtypes  #IMPLIED
              Id                 ID                   #IMPLIED

              %DTINFO.Graphic;
              %DTINFO.ID;             “attr( Id )”
              %DTINFO.Scope.Graphic;
              %DTINFO.Value;          “attr( Fileref )”
      >

`DTINFO.Scope.Index`

- `DTINFO.Scope` 属性を、値 `Index` で、索引をその一部とする検索範囲に含めたい要素に適用します。

  エンティティ名: `DTINFO.Scope.Index`

  属性テンプレート: `DTINFO.Scope Name #FIXED Index`

  関連様式: `DTINFO.Section`

  例:

      <!ELEMENT (SetIndex | Index) - - (DocInfo?, (Title,
                             TitleAbbrev?)?, (%component.gp;)*, (IndexDiv+ |
                             IndexEntry+)) >
      <!ATTLIST (SetIndex | Index)
              %commonatts;

              %DTINFO.Section;
              DTINFO.Scope.Index;
      >

`DTINFO.Scope.Table`

- `DTINFO.Scope` 属性を、値 `Table` で、表をその一部とする検索範囲に含めたい要素に適用します。この設計様式により、CALS SGML の表モデル内部のどのような文字列にも検索のための索引付けが行われます。

  エンティティ名: `DTINFO.Scope.Table`

  属性テンプレート: `DTINFO.Scope Name #FIXED Table`

  関連様式: `DTINFO.Table`

  例:

      <!ELEMENT InformalTable - - ((%tblcontent.gp;)) -(Table|InformalTable)>
      <!ATTLIST InformalTable
              %commonatts;
              Colsep       %yesorno;                          #IMPLIED
              Frame        (Top|Bottom|Topbot|All|Sides|None) #IMPLIED
              Orient      (Port | Land)                       #IMPLIED
              Pgwide      %yesorno;                           #IMPLIED
              Rowsep    %yesorno;                             #IMPLIED
              Tabstyle    NMTOKEN                             #IMPLIED

              %DTINFO.Table;
              %DTINFO.Scope.Table;
      >

`DTINFO.Scope.Title`

- `DTINFO.Scope` 属性を、値 `Title` で、タイトルをその一部とする検索範囲に含めたい要素に適用します。

  エンティティ名: `DTINFO.Scope.Title`

  属性テンプレート: `DTINFO.Scope Name #FIXED Title`

  関連様式: `DTINFO.Title`, `DTINFO.Value`

  例:

      <!ELEMENT RefMeta - - (RefEntryTitle, ManVolNum?, RefMiscInfo*) >
      <!ATTLIST RefMeta
              %commonatts;

              %DTINFO.Title;
              %DTINFO.Scope.Title;
              %DTINFO.Value; “concat( RefEntryTitle, ManVolNum)”
      >

### ハイパーテキスト様式

ハイパーテキスト設計様式に対応する属性は、`DTINFO.ID` と `DTINFO.IDREF` です。これらの属性への値の設定については、表 「値の作成の構文」 を参照してください。

SGML 参照の具体的な構文は、`DTINFO.ID` と `DTINFO.IDREF` の値が、1024文字を超えてはならず、英数字で始まらなければならない、と規定しています。

`DTINFO.ID`

- `DTINFO.ID` 属性を、リンク先を指定する要素に適用します。

  エンティティ名: `DTINFO.ID`

  属性テンプレート: `DTINFO.ID CDATA #FIXED “`Value`”`

  関連様式: すべて

  例:

      <!ELEMENT Anchor - O EMPTY >
      !ATTLIST Anchor
              Id              ID              #REQUIRED
              Pagenum         CDATA           #IMPLIED
              Remap           CDATA           #IMPLIED
              Role            CDATA           #IMPLIED
              XRefLabel       CDATA           #IMPLIED

              %DTINFO.ID;                     “attr( Id )”
      >

  各 `DTINFO.ID` の値は一意でなければなりません。

`DTINFO.IDREF`

- `DTINFO.IDREF` 属性を、`DTINFO.IDREF` の値として指定された位置へ移動するためのホット・スポットとして使用されるデータを含む要素に適用します。

  エンティティ名: `DTINFO.IDREF`

  属性テンプレート: `DTINFO.IDREF CDATA #FIXED “`Value`”`

  関連様式: すべて

  例:

      <!ELEMENT Link - - ((%inlinechar.gp;)+) >
      <!ATTLIST Link
              Endterm         IDREF           #IMPLIED
              Linkend         IDREF           #REQUIRED
              Type            CDATA           #IMPLIED

              %DTINFO.IDREF; “attr( Linkend )”
      >

  `DTINFO.IDREF` の値は、既存の `DTINFO.ID` の値にすべきです。

### スタイル様式

スタイル設計様式に対応する属性は、以下のとおりです。

`DTINFO.Style`

- インフォメーション・マネージャ設計様式、`DTINFO.Style` を、すでに構造様式 `DTINFO.Section` を適用し、その継承されたスタイル・シートを上書きしたい要素に適用します。 `DTINFO.Style` は、`DTINFO` 設計様式である `Bookcase`、`Book` および `DTINFO.Section` の要素にのみ使用することができます。

  `DTINFO.Style` の値は、スタイル・シートの名前（スタイル・シートの `DTINFO.ID` 設計様式の値）であり、ブックケース規定ドキュメントで指定されたスタイル・シートとして解決されなければなりません。スタイル・シートは、それらが新規のスタイル・シートで上書きされない限り、すべての副次的なセクションによって継承されなければなりません。

  `DTINFO.Style` の内容はスタイル・シート名のIDと一致する文字列（要素ではない）であるため、`%DTINFO.Style; “‘sty1’”` または様式 `%DTINFO.Style “concat(‘sty1’)”` のように、２回引用符で囲まなければなりません。

  エンティティ名: `DTINFO.Style`

  属性テンプレート: `DTINFO.Style CDATA #FIXED “`Value`”`

  関連様式: `DTINFO.Section`

  例:

      <!ELEMENT Preface - - (DocInfo?, Title, TitleAbbrev?, (%sect1.gp;)) >
      <!ATTLIST Preface
              %commonatts;

              %DTINFO.Section;
              %DTINFO.Style;  “‘sty1’”
      >

## 設計様式の適用

ここで説明する手続きによって、文書型定義に設計様式を適用します。文書型定義の要素に設計様式を適用する時期については、「DTINFO 設計様式の記述」 を参照してください。

設計様式の属性の適用は、ドキュメント・インスタンスを無効にするわけではなく、ドキュメント・インスタンスの修正も必要としません。

1. 文書型定義の先頭で、エンティティ宣言を追加し、インフォメーション・マネージャ設計様式のステートメントを使用します。

       <!ENTITY % DOCBOOK PUBLIC
        “-//Common Desktop Environment//ENTITIES DtInfo Architectural Forms//EN”
       >
       %DOCBOOK;

2. 文書型定義を解析し、何を表示したいのかを理解します。

3. コンテナ要素およびそれぞれに対応する 「セクション様式」 を識別します。たとえば、図のキャプションの要素は、`Title` 様式に対応します。

4. 修正している要素の属性リストにおいて、パラメータ・エンティティ参照または完全な属性を入力します。

   パラメータ・エンティティ参照を使用します。

       <!ELEMENT caption - - ((%inlinechar.gp;)+) >
       <!ATTLIST caption
               %commonatts;

               %DTINFO.Title; “#CONTENT”
       >

   To use the complete attribute:

       <!ELEMENT caption - - ((%inlinechar.gp;)+) >
       <!ATTLIST caption
               %commonatts;

               DTINFO.Title CDATA #FIXED “#CONTENT”
       >

   設計様式のなかには、関連する様式を必須とするものがあります。たとえば、`DTINFO.Section` 様式には、`DTINFO.Title` と `DTINFO.ID` が必須です。詳細については、「DTINFO 設計様式の記述」 を参照してください。

5. 対象とする要素について、「ハイパーテキスト様式」 を適用するかどうかを決定します。

       <!ELEMENT Graphic - - CDATA>
       <!ATTLIST Graphic
               Entityref       ENTITY          #IMPLIED
               Fileref         CDATA           #IMPLIED
               Format          NOTATION
                               %notationtypes  #IMPLIED
               Id              ID              #IMPLIED

               %DTINFO.Graphic;
               %DTINFO.ID;                     “attr( Id )”
       >

   最低限、 `DTINFO.Section`、 `DTINFO.Title`、および `DTINFO.ID` 様式 を適用した後、ブックケースを構築することができます。

6. 対象とする要素について、「データ様式」 を適用するかどうかを決定します。

       <!ELEMENT Graphic - - CDATA>
       <!ATTLIST Graphic
               Entityref       ENTITY          #IMPLIED
               Fileref         CDATA           #IMPLIED
               Format          NOTATION
                               %notationtypes  #IMPLIED
               Id              ID              #IMPLIED

               %DTINFO.Graphic;
               %DTINFO.ID;                     “attr( Id )”
               %DTINFO.Value;                  “attr( Fileref )”
       >

7. 対象とする要素について、「スコープ様式」 を適用するかどうかを決定します。

       <!ELEMENT Graphic - - CDATA>
       <!ATTLIST Graphic
               Entityref       ENTITY          #IMPLIED
               Fileref         CDATA           #IMPLIED
               Format          NOTATION
                               %notationtypes  #IMPLIED
               Id              ID              #IMPLIED

               %DTINFO.Graphic;
               %DTINFO.Scope.Graphic;
               %DTINFO.ID;                 “attr( Id )”
               %DTINFO.Value;              “attr( Fileref )”
       >

8. `DTINFO.Section` 設計様式を適用した要素について、このセクションによって継承されたものではないスタイル・シートを使用するかどうかを決定します。別のスタイル・シートを使用するには、「スタイル様式」 を適用します。

       <!ELEMENT Preface - - (DocInfo?, Title, TitleAbbrev?, (%sect1.gp;)) >
       <!ATTLIST Preface
               %commonatts;

               %DTINFO.Section;
               %DTINFO.Style;     “sty1”
       >

9. 設計様式を必要とする各要素について、手順４から７を繰り返します。