福嶋です。 Content-Type: Multipart/Mixed; boundary="--Next_Part(Wed_Oct_28_18:58:33_1998_542)--" Content-Transfer-Encoding: 7bit ----Next_Part(Wed_Oct_28_18:58:33_1998_542)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Motoyuki Kasahara <m-kasahr / sra.co.jp> wrote: > どうしたものかと思っていたら、ちょうど福島さんが XML によるアプローチ > を示して下さっています。既に String クラスのマニュアルを XML で書いた > ものと、それを HTML に変換したものがあるようです。 > > # rubyapi.dtd も公開して頂きたいです。(^_^) 現在使っているものを載せました。(このメールにも添付します) http://www.goto.info.waseda.ac.jp/~fukusima/ruby/xml/rubyapi.dtd XMLParser モジュール (とその下にある expat ライブラリ) は現状では XML 文章が DTD に従っているか検証する機能は無いので、私は IBM XML for Java を使って検証 しています。 いろいろな XML パーサについては吉田さんのページが詳しいです。 http://www.bekkoame.ne.jp/~yoshidam/XML_ja.html > マニュアルをまず XML で書いておいて、そこから > > 1. HTML への変換 > (「前 - 次 - 目次」のようなリンクを作成する。 > 2. TeX, LaTeX のような紙面印刷向けの形式への変換 > > という処理をそれぞれ行えば、本質的な解決になるような気がするんですが、 > どうでしょう。XML は詳しくないのですが、技術的に 2. は可能でしょうか。 手間がどれくらいになるかどうかは分かりませんが、可能だと思います。 あるいは SGML => LaTeX とかなら既にありそうですね。 > もちろん技術面以外にも、本当に導入するとなったら、ツールの整備や記述ルー > ルの明確化、書き方を覚えるなど、導入前後は負担になる、というのはもちろ > んありますが。 そうですね。「記述ルールの明確化」は XML を使うメリットが大きいところだと思 います。「ツールの整備」も XMLParser モジュールを使えばほぼ DOM に近い APIが 既に ruby 上に用意されているので、それほど大変な作業にはならないでしょう。 --- 福嶋 ----Next_Part(Wed_Oct_28_18:58:33_1998_542)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=rubyapi.dtd <!-- <!DOCTYPE rubyapi [ --> <!ENTITY % text_elm "#PCDATA|r|a|ul|dl|sample|var|code|samp|strong"> <!ELEMENT rubyapi (author*,(class|module)+)> <!ELEMENT author (#PCDATA)> <!ELEMENT class (name,super?,include*,desc*, constants?,class_methods?,instance_methods?)> <!ELEMENT module (name,include*,desc*, constants?,module_functons?,instance_methods?)> <!ELEMENT name (#PCDATA)> <!ELEMENT super (#PCDATA)> <!ELEMENT include (#PCDATA)> <!ELEMENT constants (consts|const)*> <!ELEMENT consts (const+,desc*)> <!ELEMENT const (name,desc*)> <!ELEMENT class_methods (methods|method|alias)*> <!ELEMENT instance_methods (methods|method|alias)*> <!ELEMENT module_functions (methods|method|alias)*> <!ELEMENT methods ((method|alias)+,desc*)> <!ELEMENT method (usage*,alias*,desc*)> <!ELEMENT usage (#PCDATA)> <!ELEMENT alias (#PCDATA)> <!ELEMENT desc (%text_elm;|p)*> <!ELEMENT p (%text_elm;)*> <!ELEMENT r (#PCDATA)> <!ELEMENT a (#PCDATA)> <!ELEMENT ul (li)*> <!ELEMENT li (%text_elm;)*> <!ELEMENT dl (dt,dd)*> <!ELEMENT dt (%text_elm;)*> <!ELEMENT dd (%text_elm;)*> <!ELEMENT sample (#PCDATA)> <!ELEMENT var (#PCDATA)> <!ELEMENT code (#PCDATA)> <!ELEMENT samp (#PCDATA)> <!ELEMENT strong (#PCDATA)> <!ATTLIST rubyapi xml:lang NMTOKEN #IMPLIED> <!ATTLIST author href CDATA #IMPLIED xml:lang NMTOKEN #IMPLIED> <!ATTLIST alias real CDATA #IMPLIED> <!ATTLIST desc xml:lang NMTOKEN #IMPLIED> <!ATTLIST r href CDATA #IMPLIED> <!ATTLIST a xml:link CDATA #FIXED "simple" href CDATA #REQUIRED> <!ATTLIST sample xml:space (default|preserve) #FIXED "preserve" skipindent (no|first) "no"> <!-- ]> --> ----Next_Part(Wed_Oct_28_18:58:33_1998_542)----