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
© Copyright 2024 ExpyDoc