Transcript DocBookの概要
DocBookの概要
イースト株式会社
コミュニケーション事業部
渋谷 誠
[email protected]
1
DocBookとは
SGMLのDTD
OASISが維持管理
• the DocBook Technical Committee
コンピューター関連の書籍や
文献に適している
http://www.oasis-open.org/docbook/
2
歴史(1)
HAL&O’Reilly時代
• 1991年: HaL Computer Systemsと
O‘Reilly & Associatesの共同プロジェクト
として生まれる
• V1.1発表後、Davenport Groupで活発に
議論され始める
• V1.2はNovell と Digitalの影響大
3
Davenport Group
O‘Reillyの作った
コンピュータードキュメント作成者のフォーラム
初期メンバー
•
•
•
•
•
•
•
•
•
•
Jon Bosak, Novell
Dale Dougherty, O'Reilly & Associates
Ralph Ferris, Fujitsu OSSI
Dave Hollander, Hewlett-Packard
Eve Maler, Digital Equipment Corporation
Murray Maloney, SCO
Conleth O'Connell, HaL Computer Systems
Nancy Paisner, Hitachi Computer Products
Mike Rogers, SunSoft
Jean Tappan, Unisys
4
歴史(2)
Davenport時代
• 1994年: V1.2.2リリース。
同時にDavenport Groupが公認機関に
• 最大ユーザーであるNovelとSunの影響力
高まる
• 1997年: V3.0 リリース
• メンバーが増えて開発速度は低下
• スポンサーがDavenport解散と
OASISへの移管を決定
5
OASIS
Organization for the Advancement of
Structured Information Standards
SGML/XML/HTML 普及促進を目的とした
非営利団体
http://www.oasis-open.org/
6
歴史(3)
OASIS時代
• 1998年7月
OASIS DocBook Technical Committee発足
• 1999年2月 V3.1リリース
• XML版を計画中
7
仕様はWebで公開
The Davenport archive
• http://www.ora.com/davenport/
• ftp://ftp.ora.com/pub/davenport/
8
著作権
DocBook
•
•
•
•
DTDの著作権は以下の4社
HaL Computer Systems, Inc.
O'Reilly & Associates, Inc.
Fujitsu Software Corporation
ArborText, Inc.
が、権利は放棄されている
9
リビジョン管理方針
Majorリビジョンの変更
• 要素や属性の互換性のない変更が生じた時のみ
• 年に2回以上は更新しない
• 1回以下が望ましい
過去のリビジョン履歴
• 1.0 - 1.1 - 1.2 - 1.2.1
• 2.0 - 2.2.1 - 2.3 - 2.4 - 2.4.1
• 3.0 - 3.1
今回の説明図は2.4.1のもの
10
XMLへの対応
委員会でもXML版の計画はある
非公式のものならば既に存在する
• http://www.nwalsh.com/docbook/xml/
11
文書構造の定義
12
Set
Set
?
?
SetInfo
ToC
2+
Book
?
SetIndex
?
Title
TitleAbbrev
+
set info
char mix
13
Setの構成例
Set
Title
SetInfo
Book
Book
Book
SetIndex
14
Book
Book
?
?
BookInfo
?
*
ToC
LoT
?
Title
Preface
TitleAbbrev
*
BookBiblio
*
LegalNotice
*
Glossary
ModeSpec
Bibliography
15
Book (続)
Book
*
*
*
Appendix
+
Part
+
Chapter
+
+
Reference
Article
Glossary
Index
Bibliography
SetIndex
*
?
LoT
ToC
*
Reference
16
Bookの構成例
Book
Book
BookInfo
ToC
LoT
(for figures)
LoT
(for tables)
Preface
Chapter
Chapter
Chapter
Chapter
Reference
Appendix
Appendix
Glossary
Bibliography
Index
Book (Reference Manual)
BookInfo
Preface
Part
BookInfo
ToC
PartIntro
Chapter
Chapter
Part
LoT
Preface
Reference
Reference
PartIntro
Chapter
Chapter
Chapter
Part
PartIntro
Appendix
Appendix
Reference
Reference
Appendix
Appendix
Appendix
Appendix
Index
17
Part
Part
?
?
DocInfo
Title
+
?
TitleAbbrev
PartIntro
Chapter
Appendix
*
?
Title
?
TitleAbbrev
div component
mix
*
Sect1
*
RefEntry
*
ToC
LoT
Index
Bibliography
Glossary
Preface
RefEntry
SimpleSect
Reference
18
Chapter
Chapter
?
DocInfo
?
Title
TitleAbbrev
?
ToCchap
*
*
div component
mix
Glossary
Index
*
Sect1
*
RefEntry
*
SimpleSect
Bibliography
19
Sect<n>
Sect<n>
?
Sect<n>Info
n = 1,2,3,4,5
?
Title
TitleAbbrev
*
*
div component
mix
Glossary
Index
*
Sect<n+1>
*
RefEntry
*
SimpleSect
Bibliography
20
SimpleSect
SimpleSect
?
Title
TitleAbbrev
*
div component
mix
21
Preface
Preface
?
DocInfo
?
Title
TitleAbbrev
*
div component
mix
*
Sect1
*
RefEntry
*
SimpleSect
22
Appendix
Appendix
?
DocInfo
?
Title
TitleAbbrev
?
ToCchap
*
div component
mix
*
Sect1
*
RefEntry
*
SimpleSect
23
Reference
Reference
?
DocInfo
?
Title
TitleAbbrev
*
?
PartIntro
RefEntry
24
RefEntry
RefEntry
?
DocInfo
*
?
?
RefNameDiv
RefMeta
RefSynopsisDiv
+
RefSect1
Comment
?
RefEntryTitle
ManVolNum
*
Link char
class
RefMiscInfo
25
BookBiblio
BookBiblio
?
?
Subtitle
?
Edition
?
?
AuthorGroup
?
InvPartNumber ProductNumber
?
ProductName
?
Title
TitleAbbrev
ISSN
?
VolumeNum
?
IssueNum
?
PageNum
ISBN
?
VolumeNum
26
BookBiblio(続)
BookBiblio
?
PubsNumber
?
ReleaseInfo
*
PubDate
*
Publisher
?
?
Copyright
+
Year
SeriesInfo
*
Abstract
*
ConfGroup
*
Holder
27
BookBiblio(続)
BookBiblio
*
?
?
PrintHistory
RevHistory
*
ContractNum
Revision
ContractSponsor
RevNumber
Date
*
AuthorInitials
?
RevRemark
28
本文内容モデル
本文内容として定義されている要素
種類別にクラス分けされている
そのクラスも大きく2つのに分類
• Objectレベルクラス
• Characterレベルクラス
29
Objectレベルクラス(1)
list.class
CalloutList
GlossList
ItemizedList
OrderedList
SegmentedList
SimpleList
VariableList
admon.class
Caution
Important
Note
Tip
Warning
30
Objectレベルクラス(2)
linespecific.class
LiteralLayout
ProgramListing
ProgramListingCO
Screen
ScreenCO
ScreenShot
synop.class
Synopsis
CmdSynopsis
FuncSynopsis
para.class
FormalPara
Para
SimPara
31
Objectレベルクラス(3)
informal.class
Address
BlockQuote
Graphic
GraphicCO
MediaObject
MediaObjectCO
InformalEquation
InformalExample
InformalFigure
InformalTable
formal.class
Equation
Example
Figure
Table
compound.class
MsgSet
Procedure
Sidebar
QandASet
32
Objectレベルクラス(4)
compound.class
MsgSet
Procedure
Sidebar
QandASet
descobj.class
Abstract
AuthorBlurb
Epigraph
genobj.class
Anchor
BridgeHead
Comment
Highlights
33
Characterレベルクラス(1)
ndxterm.class
IndexTerm
xref.char.class
FootnoteRef
XRef
link.char.class
Link
OLink
ULink
gen.char.class
Abbrev
Acronym
Citation
CiteRefEntry
CiteTitle
Emphasis
FirstTerm
ForeignPhrase
GlossTerm
Footnote
Phrase
Quote
Trademark
WordAsWord
34
Characterレベルクラス(2)
base.char.class
Anchor
other.char.class
Comment
Subscript
Superscript
inlineobj.char.class
InlineGraphic
InlineMediaObject
InlineEquation
docinfo.char.class
Author
AuthorInitials
CorpAuthor
ModeSpec
OtherCredit
ProductName
ProductNumber
RevHistory
35
Characterレベルクラス(3)
tech.char.class
Action
Application
ClassName
Command
ComputerOutput
Database
Email
EnVar
ErrorCode
ErrorName
ErrorType
Filename
Function
GUIButton
GUIIcon
GUILabel
GUIMenu
GUIMenuItem
GUISubmenu
Hardware
Interface
InterfaceDefinition
KeyCap
KeyCode
KeyCombo
KeySym
Literal
Constant
Markup
MediaLabel
MenuChoice
MouseButton
MsgText
Option
Optional
Parameter
Prompt
Property
Replaceable
ReturnValue
SGMLTag
StructField
StructName
Symbol
SystemItem
Token
Type
UserInput
VarName
36
関数仕様定義
<funcsynopsis>
<funcsynopsisinfo>#include <stdlib.h></funcsynopsisinfo>
<funcdef>double <function>atof</function></funcdef>
<paramdef>const char *<parameter>nptr</parameter></paramdef>
</funcsynopsis>
#include <stdlib.h>
double atof(const char *nptr);
37
ソースコード
<example>
<title>A simple C program</title>
<programlisting role="C">
#include <stdio.h>
main()
{
printf("Hello, world!\n");
}
</programlisting>
</example>
#include <stdio.h>
main()
{
printf("Hello, world!\n");
}
38
カスタマイズ可能な設計
カスタマイズする事を前提としている
• Customizer‘s Guideが用意されている
モジュールごとに再利用が可能
• うまくモジュール分割されている
サブセットの定義や追加定義が可能
• 外部ファイルのみでカスタマイズ可能
39
ファイル構成
40
基本構成図
docbook.dtd
(driver file, notation, ISO entities)
dbgenent.dtd
dbhier.mod (document hierarchies)
dbpool.mod (information pool)
docbook.dcl
SGML declaration
calstbl.mod
(CALS tables)
docbook.cat
DocBook DTD
Catalog data
41
docbook.dtd
dbgenent.dtd
docbook.dcl
docbook.dcl
dbhier.mod
dbpool.mod
calstbl.mod
docbook.cat
SGML宣言ファイル
<!SGML “ISO 8879:1986”
.
.
.
>
42
docbook.dtd
dbgenent.dtd
docbook.dtd
docbook.dcl
dbhier.mod
dbpool.mod
calstbl.mod
docbook.cat
SGMLドライバファイル=DocBook DTD の本体
dbhier.mod, dbhier.mod, dbpool.modを
インクルード
rdbXXX.mod を条件付きインクルード
43
docbook.dtd
dbgenent.dtd
docbook.dtd
calstbl.mod
docbook.cat
ISO標準の19種の文字エンティティ宣言をインクルード
(V3.1ではdbcent.modに分離)
"ISO
"ISO
"ISO
"ISO
"ISO
"ISO
"ISO
docbook.dcl
dbhier.mod
dbpool.mod
8879:1986//ENTITIES
8879:1986//ENTITIES
8879:1986//ENTITIES
8879:1986//ENTITIES
8879:1986//ENTITIES
8879:1986//ENTITIES
8879:1986//ENTITIES
・ ・ ・ ・
Diacritical Marks//EN"
Numeric and Special Graphic//EN"
Publishing//EN"
General Technical//EN"
Added Latin 1//EN"
Added Latin 2//EN"
Greek Letters//EN”
文字エンティティ宣言
<!ENTITY aacute SDATA "[aacute]"--=small a, acute accent-->
文字エンティティ参照
%aacute;
44
docbook.dtd
dbgenent.dtd
docbook.dtd
docbook.dcl
dbhier.mod
dbpool.mod
calstbl.mod
docbook.cat
各種記法宣言をインクルード
(V3.1ではdbnotn.modに分離)
各種外部参照フォーマットの宣言
BMP, CGM-CHAR , CGM-BINARY , CGM-CLEAR , DITROFF , DVI
EPS , EQN , FAX , GIF , GIF87a , GIF89a , JPG , JPEG , IGES , PCX
PIC , PS , SGML , TBL , TEX , TIFF , WMF , WPG
記法宣言例
<!NOTATION BMP
PUBLIC
"+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows bitmap//EN">
45
docbook.dtd
dbgenent.dtd
dbhier.mod
docbook.dcl
dbhier.mod
dbpool.mod
calstbl.mod
docbook.cat
ドキュメントの階層構造の定義
rdbhier.mod, rdbhier2.mod を
条件付きでインクルード
46
docbook.dtd
dbgenent.dtd
dbpool.mod
docbook.dcl
dbhier.mod
dbpool.mod
calstbl.mod
docbook.cat
階層構造以外の定義
本文内容のクラス等
calstbl.modをインクルード
(V3.1 では cals-tbl.dtd)
47
docbook.dtd
dbgenent.dtd
calstbl.mod
docbook.dcl
dbhier.mod
dbpool.mod
calstbl.mod
docbook.cat
CALS仕様の表の定義
(V3.1では cals-tbl.dtd)
48
docbook.dtd
dbgenent.dtd
dbgenent.mod
docbook.dcl
dbhier.mod
dbpool.mod
calstbl.mod
docbook.cat
一般エンティティ宣言
コメントのみの空ファイル
追加定義をここに記述できる
49
docbook.dtd
dbgenent.dtd
docbook.cat
docbook.dcl
dbhier.mod
dbpool.mod
calstbl.mod
docbook.cat
SGMLカタログデータファイル
共通の外部参照ファイルの位置などを
環境に合わせて定義するファイル
C言語で言えばインクルードファイルの検
索パスの指定のようなもの
50
カスタマイザ使用時の構成
docbook.dtd
(driver file, notation, ISO entities)
rdbmods.dtd
dbgenent.dtd
dbhier.mod (document hierarchies)
rdbhier.dtd
rdbhier2.dtd
dbpool.mod (information pool)
docbook.dcl
SGML declaration
rdbpool.dtd
calstbl.mod
(CALS tables)
docbook.cat
Catalog data
51
rdbXXXX.mod
カスタマイズ時に使用
定義の変更や追加を記述
標準では提供はされない
•
•
•
•
rdbmods.mod
rdbhier1.mod
rdbhier2.mod
rdbpool.mod
52
ファイル参照関係
docbook.dtd
dbpool.mod
rdbpool.mod
rdbmods.dtd
calstbl.dtd
dbhier.mod
rdbhier.mod
dbgenent.dtd
rdbhier2.dtd
53
カスタマイズの仕組み
モジュール単位での選択
定義の上書き
定義の追加
54
モジュール単位での選択
モジュールは条件付きセクションで
括られている
<!ENTITY % biblioentry.module "INCLUDE">
<![ %biblioentry.module; [
…
(書誌情報の各種定義)
…
<!--end of biblioentry.module-->]]>
外部ファイルでのモジュール無視の指定
<!ENTITY % biblioentry.module "IGNORE">
55
定義の上書き
要素の定義はパラメータを使用
<!ELEMENT Set - O (SetInfo?, Book+, SetIndex?) >
<!ENTITY % book.class
"Book">
<!ELEMENT Set - O (SetInfo?, (%book.class;)+, SetIndex?) >
Set = (SetInfo?, Book+, SetIndex?)
外部での定義の上書き
<!ENTITY % book.class
"Article">
Set = (SetInfo?, Article+, SetIndex?)
56
定義の追加
パラメータの定義にはlocalパラメータを付加
<!ENTITY % local.book.class "">
<!ENTITY % book.class "Book %local.book.class;">
%book.class; = Book
外部ファイルで定義を追加
<!ENTITY % local.book.class ”| Article">
%book.class; = Book|Article
57
まとめ
企業ベースで開発
SGMLの模範的応用例のひとつ
DTDは複雑
• DTDテクニックを駆使してモジュール化
カスタマイズが前提
コンピュータ書籍にフォーカス
コンピュータ業界での利用例が多い
58