アーキテクチャ仕様(第2章 DITA導入)

目次へ戻る

第2章 DITA導入

DITAは、シングル・ソースで様々な方法に再使用可能な、トピック志向、情報型の内容を作成するアークテクチャである。また、既存の型や領域に基づいて、新しいトピック型を作成したり、新しい情報領域を記述するアーキテクチャでもある。

新しいトピック型や領域を作成する処理を専門化という。専門化により、オブジェクト指向のシステムが、祖先のクラスのメソッドを継承するのと大変良く似た方法で、より一般的な型と領域のために開発された共通の出力変換、設計規則を共有しながら、特殊な、対象を絞った文書型を作ることができる。

DITAのトピックはXML準拠である。それなので、標準のXMLツールで、容易に表示したり、編集したり、妥当性の検証を行うことができる。しかし、内容の参照や専門化のようなある種の機能は、カスタム化された支持によって便宜を得るかもしれない。

2.1 定義と背景の概念

次の用語は、DITAでは特別な意味を持っていて、DITAのマークアップ仕様またはDITAの専門化仕様のどちらを読むにしても、その前に理解しておく必要がある。

2.1.1 基本概念

次はDITAで使われる基本概念である。

トピックとは何か?
トピックとは、タイトルと、一つの主題に特有であるか一つの質問に回答するのに十分なほど短く、しかし、それ自身で意味を持ち一単位として編集されるに十分な長さをもつ、ある種の形式の内容をもつ一単位の情報である。
マップとは何か?
DITAのマップは、トピック間の関連性を示すために、DITAのトピックへの参照を集積、組織化した文書である。それらは、DITAの配布物のためのアウトラインまたは目次としても役立てることができ、DITAのプロジェクトの構築目録となる。
専門化とは何か?
専門化により、既存の設計とコードを可能な限り再利用し、また変換、移行、保守のコストを最小化または削減しながら、新しい種類の情報(新しい構造型、新しい情報の領域)を定義することができる。
構造的対領域専門化
構造的専門化は、新しいトピックの型または新しいマップの型など、新しい型の構造情報を定義する。領域の専門化は、新しい種類のキーワード、表、箇条書き、条件付処理属性のような新しい属性など、複数の構造型で使用できる新しいマークアップを作成する。
統合
各領域専門化または構造的専門化は、それ自身の設計モジュールをもつ。これらのモジュールを結合して沢山の文書型を作成することができる。モジュールの特別な組合せから新しい文書型を作成する処理を統合化という。
カスタム化
出力において差別化が必要なとき、可搬性と交換性に影響を与えることなく、また専門化を含めることなく、既定値の出力を乗り潰すためにDITAのカスタマイズ機能を使うことができる。
一般化
専門化した内容は任意の祖先のタイプに一般化できる。一般化処理は、同一の内容の専門化と非専門化形式の間で往復変換を許すために、古いレベルの専門化に関する情報を保存することができる。

2.1.2 用語

DITAは、多数の用語を特別な、ユニークな方法で使用している。この仕様書がカバーする範囲内では、次の用語がDITAモジュール、DITA宣言、DITAインスタンスについて使用されている。

要素と一緒に特定の属性をリスト化する際には、属性名には@を先行して、要素と区別するかもしれない。例:@props, @class

特定の要素をリストの外部で使うとき、それらは<と>で周囲のテキストと区別する。例:<keyword>, <prolog>

モデルの用語

DITAは、特定のDTD、スキーマあるいは実際のXML文書を参照することなく、抽象的なモデルのレベルで理解できる。DITAの概念をこのレベルで議論するとき、次の用語を使用する。

要素型
内容の断片のための構造と意味論を定義する。
専門化された要素型
要素型を他の要素型の意味論的な細かい区別として定義する。専門化された要素型によって許される内容は元の要素型によって許される内容の部分集合かあるいは同等でなければならない。
属性型
属性の構造と意味論を定義する。
専門化された属性型
属性型を他の属性型の意味論的な細かい区別として定義する。属性は、baseまたはprops属性を専門化しなければならない。またその内容は、元の属性型によって許される内容の部分集合か同等でなければならない。
トピック型
内容の完全な単位を定義する要素型である。トピック型は、トピックのルート要素と、含まれる要素型を通じて、トピックのインスタンスの部分構造を提供する。トピック型のルート要素は、必ずしも文書型のルート要素ではない:ドキュメント型は多数のトピック型をネストしてもよく、また、他の処理との互換性のために非DITAのラッパ要素をルート要素として宣言しても良い。
マップ型
トピックのインスタンスのために一組の関連性を定義する要素型。マップ型はルート要素と、含まれる要素型を経由して、マップ・インスタンスのための部分構造を提供する。マップの部分構造はトピックのインスタンスへの参照の階層、グループ、行列組織を提供する。
構造の型
トピック型もしくはマップ型
領域
特定の主題領域を支持する要素または属性の組。領域の要素と属性は、特定の主題の意味論的な支持を高度化するためにトピックまたはマップ型と統合されることができる。例えば、構造型<topic>は、<keyword>要素を宣言する;ユーザ・インターフェイスを記述するための領域と統合されるとき、<keyword>がオリジナルの構造型の中で許可されていたならば、常に、(<wintitle>のような)新しいキーワードの専門化が利用可能になる。
文書型
文書型シェルによって統合されているモジュールの中で定義されている要素型と属性の全組合わせ。DITAの文書型は複数のトピック型もしくは複数のマップ型の編集を支持することができるが、両方の混在は不可である。構造型は領域からの要素をもって拡大されることができる。文書型という用語は、ここが、DITAのトピック、領域、マップ型が、昔からあるモジュール化されていない文書型と機能的に同等な文書型に組み立てられる点であるので、既存の標準との互換性のために使われる。
宣言の用語

モデルがDTDまたはスキーマで表されるとき、様々な要素型が宣言される。この宣言に言及するとき、次の用語を使用する。

要素宣言
(DTD、XMLスキーマ、Relax NGなどのような)スキーマ技術の中での要素型の宣言
属性宣言
(DTD、XMLスキーマ、Relax NGなどのような)スキーマ技術の中での属性型の宣言
タイプ・モジュール
スキーマ技術の中で、トピック型、マップ型、または領域によってユニークに定義される要素型と属性型の表現
トピック・モジュール
スキーマ技術の中で、トピック型によってユニークに定義される要素型の表現
マップ・モジュール
スキーマ技術の中で、マップ型によってユニークに定義される要素型の表現
構造モジュール
トピックまたはマップ・モジュール
領域モジュール
スキーマ技術の中で、領域によってユニークに定義される要素型と属性型の表現
文書型シェル、ヘッド・スキーマ
スキーマ技術の中で、それ自身(同じ文書型における複数の純粋のトピック型を許す<dita>ルート要素を、潜在的に除外する)では要素型も属性型も宣言しないが、トピックと領域モジュールまたはマップと領域モジュールを指し示し、また組み立てる、DTDシェルまたはヘッド・スキーマを表す。
文書型宣言
スキーマ技術の中で文書型のための表現。文書型宣言は文書宣言シェルによって組み立てられる宣言モジュールを含む。
インスタンスの用語

DITAの文書型に基づいて、実際の文書、トピック、要素が作成されるとき次の用語が用いられる。

要素インスタンス
文書の中での要素の発生
属性インスタンス
文書の中での属性の発生
トピック・インスタンス
文書の中でのトピック型の発生
マップ・インスタンス
文書の中でのマップ型の発生
構造型インスタンス
文書の中でのトピック型またはマップ型の発生
文書インスタンス
文書型宣言によって意味と妥当性が決定される文書

2.2 命名規約、ファイル拡張子

DITAは次の命名規約とファイル拡張子をで使用する。

DITAトピック・インスタンス・ファイル
*.dita (推奨), *.xml
DITAマップ・インスタンス・ファイル
*.ditamap
DITA構造モジュール・ファイル
型名.mod
DTD領域モジュール・ファイル
型名Domain.mod
型名Domain.ent
スキーマ構造モジュール・ファイル
型名Mod.xsd
型名Grp.xsd
スキーマ領域モジュール・ファイル
型名Domain.xsd
CSS乗り潰し処理ファイル(ツール供給者向けの勧告)
型名.css
カスタム化目的.css
XSLT乗り潰し処理ファイル(ツール供給者向けの勧告)
型名.xsl
カスタム化目的.xsl
条件付処理プロファイル
プロファイル名.ditaval

2.3 DTDの組織化

OASIS DITAの文書型はDTDのモジュールの組として実装されている。これらのモジュールの一部はすべてのDITA文書型で使われるが、他のものはトピックまたはマップでのみ使われ、一部は特定の専門化の中でのみ使われる。

DTD対モジュール

DTD実装の重要な特徴は、実際のDTDよりも、モジュールによる重きを置いていることである。全ての要素と属性型宣言はモジュールの中でなされており、それが次に文書型シェルを使用して文書型に統合される。実装者は、自由にモジュールを再組織化したり、新しいモジュールを導入したり、モジュールを取り除くDTDを作成することができる。例えば、OASISの標準のトピックDTDには全ての標準トピック領域を含んでいる;加えるに、デフォルトのトピックDTDはトピックをネストさせることができるが概念を含むことはできない。新しいDTDは、このひとつまたは両方の特徴を変更し、かつ、依然として妥当であることができる;そのDTDでは領域を追加したり、削除したりできる。また、それはトピックを追加したり概念をネストさせることもできる。あるいは、ditabaseの文書型の中のように、同じレベルの異なる型を編集することもできる。新しいDTDを作成したり、既存のDTDを変更したりするとき、様々なDITAのツールが新しいDTDをOASISのデフォルト版と混同しないように、新しいまたは変更したDTDに新しい公開IDを与えることを忘れてはならない。

DITAモジュールの記述

各専門化は、その専門化のための要素を定義するためにひとつ以上のモジュールを要求する。専門化を利用する任意のDTDは、その専門化のためのモジュールを含まなければならない。

ある専門化特有のモジュールに加えて、あらゆるDITAのDTDによって使用される幾つかのファイルがある。それらはDTDの中で参照されなくても済むように、基本のトピックまたはマップ・モジュールに含まれている。—それらは、トピックまたはマップの型を単純にインクルードすると含まれる。

次の表は、OASIS DITA標準と共に来る各々のDTDモジュールを説明している。

表1 トピックとその専門化モジュールの記述

共通モジュール・ファイル 目的 DTDの中で使われる
topic.mod 基本トピック型の中で使うことができる全要素を定義する。 すべてのトピック・ベースのDITA DTDに含まれなければならない。
concept.mod 概念の専門化の中で使うことができる全要素を定義する。 concept.dtd, ditabase.dtd
glossary.mod 用語集の専門化の中で使うことができる全要素を定義する。 glossary.dtd, ditabase.dtd
reference.mod 参照の専門化の中で使うことができる全要素を定義する。 reference.dtd, ditabase.dtd
task.mod タスクの専門化の中で使うことができる全要素を定義する。 task.dtd, ditabase.dtd

表2 マップとその専門化モジュールの記述

共通モジュール・ファイル 目的 DTDの中で使われる
map.mod 基本マップ型の中で使うことができる全要素を定義する。 すべてのマップ・ベースのDITA DTDに含まれなければならない。
bookmap.mod ブックマップ専門化の中で使うことができる全要素を定義する。 bookmap.dtd

表3 領域モジュールの記述

共通モジュール・ファイル 目的 DTDの中で使われる
indexingDomain.ent, indexingDomain.mod 索引付け領域によって使用される実体と要素を定義する。 bookmap.dtd, concept,dtd, ditabase.dtd, glossary.dtd, map.dtd, reference.dtd, task.dtd, topic.dtd
highlightDomain.ent, highlightDomain.mod ハイライト領域によって使用される実体と要素を定義する。 concept.dtd, ditabase.dtd, glossary.dtd, reference.dtd, task.dtd, topic.dtd
programmingDomain.ent, programmingDomain.mod (原文誤り?) プログラミング領域によって使われる実体と要素を定義する。 concept.dtd, ditabase.dtd, glossary.dtd, reference.dtd, task.dtd, topic.dtd
softwareDomain.ent, softwareDomain.modソフトウェア領域によって使われる実体と要素を定義する。 concept.dtd, ditabase.dtd, glossary.dtd, reference.dtd, task.dtd, topic.dtd
uiDomain.ent, uiDomain.modユーザインターフェイス領域によって使われる実体と要素を定義する。 concept.dtd, ditabase.dtd, glossary.dtd, reference.dtd, task.dtd, topic.dtd
utilitiesDomain.ent, utilitiesDomain.mod ユーティリティ領域によって使われる実体と要素を定義する。 concept.dtd, ditabase.dtd, glossary.dtd, reference.dtd, task.dtd, topic.dtd
mapGroup.ent, mapGroup.mod マップ・グループ領域によって使われる実体と要素を定義する。 map.dtd, bookmap.dtd
xnalDomain.ent, xnalDomain.mod XNAL領域によって使われる実体と要素を定義する。 bookmap.dtd

表4 上述のファイルによって使われる他の共通モジュールの記述

共通モジュール・ファイル 目的 DTDの中で使われる
commonElements.ent, commonElements.mod マップとトピックの両方に現れることのできる全ての内容要素を定義する。 topic.mod, map.mod(これは、任意のDITA DTDの一部となる)
metaDecl.mod マップとトピックの両方に現れることのできる全てのメタ要素を定義する。 topic.mod, map.mod(これは、任意のDITA DTDの一部となる)
tblDecl.modDITAの中で使われる、OASIS 交換表モデルに基づく、複雑な表を定義する。 commonElements.mod(これは、任意のDITA DTDの一部となる)
topicDefn.entトピック・モジュールの中で使われる実体を定義する。 topic.mod(これは、任意のトピックに基づくDITA DTDの一部となる)

2.4 XML スキーマの組織化

OASIS DITA文書型はスキーマ・モジュールの組によって実装される。これらのモジュールのあるものはすべてのDITAスキーマ文書で使われる;他のものはトピックによって、マップによってのみ使われる、そしてあるものは特定の専門化の中でのみ使われる。

XMLスキーマ対モジュール

DITAの実装の重要な特徴は、それが、実際のヘッド・スキーマよりもモジュールにより重きを置いていることである。全ての要素と属性型宣言はモジュールの中でなされている。それらは次にヘッド・スキーマを使って文書型に統合される。実装者は、自由に、適切なように、モジュールを再組織化、新しいモジュールを導入、モジュールを再定義、モジュールを取り除く、新しいヘッド・スキーマを作ることができる。例えば、OASISからの標準トピックXMLスキーマは、すべての標準トピック領域を含む;付け加えてデフォルトのトピックXMLスキーマはトピックがネストするのを許すのに対して、概念を含むことはできない。新しいXMLスキーマは、これらの特徴のひとつまたは両方を変更して、なお、妥当であり得る;ditabase文書型におけるように、XMLスキーマは、領域を追加したり取り除いたりできる、そしてトピックが概念をネストすることを許す、または異なる型を同じレベルで編集することができる。

DITAモジュールの記述

各専門化は、その専門化のための要素を定義するひとつ以上のモジュールを要求する。ある専門化を利用する任意のXMLスキーマはその専門化のためのモジュールを含まなければならない。

ある専門化のために特有なモジュールに加えて、すべてのDITA XMLスキーマで使われるいくつかのファイルがある。これらは、基本トピックまたはマップ・モジュールに含まれているので、XMLスキーマから参照される必要がない—単にトピックまたはマップをインクルードすることにより既に含まれる。

次の表は、OASIS DITA標準と共に来る各XMLスキーマについて述べている。

表5 トピックとその専門化モジュールの記述

共通モジュール・ファイル 目的 XMLスキーマの中で使われる
topicMod.xsd, topicGrp.xsd 基本トピック型の中で使うことのできる全要素を定義する。 すべてのトピック・ベースのDITA XMLスキーマに含まれなければならない。
conceptMod.xsd, conceptGrp.xsd 概念の専門化の中で使うことができる全要素を定義する。 concept.xsd, ditabase.xsd
glossaryMod.xsd, glossaryGrp.xsd 用語集の専門化の中で使うことができる全要素を定義する。 glossary.xsd, ditabase.xsd
referenceMod.xsd, referenceGrp.xsd 参照の専門化の中で使うことができる全要素を定義する。 reference.xsd, ditabase.xsd
taskMod.xsd, taskGrp.xsd タスクの専門化の中で使うことができる全要素を定義する。 task.xsd, ditabase.xsd

表6 マップとその専門化モジュールの記述

共通モジュール・ファイル 目的 XML スキーマで使われる
mapMod.xsd 基本マップ型の中で使うことができる全要素を定義する。 すべてのマップ・ベースのDITA XMLスキーマに含まれなければならない。
bookmapMod.xsd ブックマップ専門化の中で使うことができる全要素を定義する。 bookmap.xsd

表7 領域モジュールの記述

共通モジュール・ファイル 目的 XML スキーマで使われる
indexingDomainMod.xsd 索引付け領域によって使用される実体と要素を定義する。 bookmap.xsd, concept.xsd, ditabase.xsd, glossary.xsd, map.xsd, reference.xsd, task.xsd, topic.xsd
highlightDomainMod.xsd ハイライト領域によって使用される実体と要素を定義する。 concept.xsd, ditabase.xsd, glossary.xsd, reference.xsd, task.xsd, topic.xsd
programmingDomainMod.xsd プログラミング領域によって使われる実体と要素を定義する。 concept.xsd, ditabase.xsd, glossary.xsd, reference.xsd, task.xsd, topic.xsd
softwareDomainMod.xsd ソフトウェア領域によって使われる実体と要素を定義する。 concept.xsd, ditabase.xsd, glossary.xsd, reference.xsd, task.xsd, topic.xsd
uiDomainMod.xsd ユーザインターフェイス領域によって使われる実体と要素を定義する。 concept.xsd, ditabase.xsd, glossary.xsd, reference.xsd, task.xsd, topic.xsd
utilitiesDomainMod.xsd ユーティリティ領域によって使われる実体と要素を定義する。 concept.xsd, ditabase.xsd, glossary.xsd, reference.xsd, task.xsd, topic.xsd
mapGroupMod.xsd マップ・グループ領域によって使われる実体と要素を定義する。 map.xsd, bookmap.xsd
xnalDomainMod.xsd XNAL領域によって使われる実体と要素を定義する。 bookmap.xsd

表8 上述のファイルによって使われる他の共通モジュールの記述

共通モジュール・ファイル 目的 モジュールの中で使われる
commonElementsMod.xsd, commonElementsGrp.xsd マップとトピックの両方に現れることのできる全ての内容要素を定義する。 topic.mod, map.mod(これは任意のDITA XMLスキーマの一部になる)
metaDeclMod.xsd, metaDeclGrp.xsd マップとトピックの両方に現れることのできる全てのメタ要素を定義する。 topic.mod, map.mod(これは任意のDITA XMLスキーマの一部になる)
tblDeclMod.xsd, tblDeclGrp.xsd DITAの中で使われる、OASIS 交換表モデルに基づく、複雑な表を定義する。 commonElements.mod(これは任意のDITA XMLスキーマの一部になる)
ditaarch.xsd DITAのアーキテクチャのバージョンを定義する。 トピック・ベースの任意のDITA XMLスキーマにインポートされなければならない。
xml.xsd XML名前空間と共に使われる属性を定義する。 トピック・ベースの任意のDITA XMLスキーマにインポートされなければならない。

アンテナハウス製品のお問い合わせ先 mail-to default