<?xml version="1.0" encoding="shift_jis"?>
<?xml-stylesheet type="text/xsl" href="readme.xsl"?>
<document>
<body>
<h1><a name="name_RD2XML-20for-20MocaScript">RD2XML for MocaScript</a></h1>
<h2><a name="name_Name">Name</a></h2>
<p>RD2XML for MocaScript - convert rd files to XML</p>
<h2><a name="name_Abstract">Abstract</a></h2>
<p><![CDATA[主にRubyで使われるドキュメント形式であるRD形式を、
XMLに変換するMocaScriptLibraryです。
一般には、これで生成したXMLをXSLTでHTMLに変換して使うことになります。]]></p>
<h2><a name="name_Description">Description</a></h2>
<p><![CDATA[RDの存在を知って、いろいろ遊んでみようと思ったのですが、
RDtoolはRubyが必要な上に、外部依存のライブラリを集めるだけで一苦労、
Windowsで動かすためにコンパイル済みのライブラリを探すのでへとへと、
とあまりに大変だったので、あきらめかけました。
そんなこんなで逆に開き直って、自分でRD解析機を作ることにしたのです。]]></p>
<p><![CDATA[どの言語で作ろうか、少し迷ったのですが、
ここはせっかくなのでMocaScriptで作ることにしました。
MocaScriptで作っておけば、JavaScriptに移植するのも楽ですし、
JavaScriptで動けば、近頃のOSにはたいていブラウザが存在し、JavaScriptが動くので、
まさに“Write Once, Run Anywhere”です。（違]]></p>
<p><![CDATA[これはRDtoolのように、単体でRDから任意の形式に変換することを目指さず、
一度中間形式としてのXMLに変換して、その後XSLTで任意の形式に変換することにしました。
このため、別の形式に変換したくなったとしても、
このスクリプトのソースを細部まで読まなくてもよく、
XSLTだけを書けばよいのです。]]></p>
<p><![CDATA[本スクリプトは「RDtoolのMocaScript版」ではなく、
]]><a href="#name_RD-20working-20draft-20-e6-97-a5-e6-9c-ac-e8-aa-9e-e7-89-88"><![CDATA[RD working draft 日本語版]]></a><![CDATA[を参考に、RD解析･表現を独自に実装しているため、
RD処理機の事実上の標準である]]><a href="#name_RDtool">RDtool</a><![CDATA[とは、解釈が異なる場合があります。]]></p>
<p><![CDATA[これがどのように働くのかわかりにくいときは、
このライブラリ自体の解説もRDで書かれているので、
まずこのファイルを変換してみるとわかりやすいでしょう。]]></p>
<h2><a name="name_Synopsis">Synopsis</a></h2>
<dl>
  <dt><a name="name_rd2xml.ms:Dialog"><![CDATA[rd2xml.ms:Dialog]]></a></dt>
  <dd><![CDATA[ダイアログを表示し、そこで指定したRDファイルを読み込み、
アウトプットウィンドウのスクリプトタブにXMLへの変換結果を書き出すと同時に、
指定したXMLファイルに書き出します。
XMLファイルの指定を省略すると、ファイルへの書き込みは行いません。]]></dd>
  <dt><a name="name_rd2xml:Files"><![CDATA[rd2xml:Files]]></a></dt>
  <dd>
    <p><![CDATA[ただ実行しても「ファイルが指定されていません」とエラーが出ます。
]]><var><![CDATA[global.array_of_rd2xml_files]]></var><![CDATA[に二次元arrayをあらかじめセットしておいた上で、
他のMocaScriptから]]><code><![CDATA[runScript("rd2xml:Files")]]></code><![CDATA[と呼び出して使います。]]></p>
    <pre><![CDATA[global.array_of_rd2xml_files=[
  ['C:/rd/rdtest.rd','C:/xml/rdtest.xml'],
  ['C:/Program Files/Anchor/share/script/rd2xml.ms','C:/xml/rd2xml.xml'
    ,'C:/xml/readme.xsl','C:/xml/rd2xml.html']]]><![CDATA[
];

runScript("rd2xml.ms:Files");
]]></pre>
  </dd>
  <dt><a name="name_rd2xml.ms:View"><![CDATA[rd2xml.ms:View]]></a></dt>
  <dd><![CDATA[現在編集中のウィンドウの内容をRDとみなして、XMLに変換した結果を、
アウトプットウィンドウのスクリプトタブに表示します。]]></dd>
  <dt><a name="name_-23include-20-22rd2xml.ms-22"><![CDATA[#include "rd2xml.ms"]]></a></dt>
  <dd><![CDATA[MocaScriptLibraryとしても使えます。
ただし、呼び出し元のスクリプトのファイル名がrd2xml.msだと誤動作します。]]></dd>
</dl>
<h2><a name="name_Bugs-20and-20Limitations">Bugs and Limitations</a></h2>
<dl>
  <dt><a name="name_-e8-84-9a-e6-b3-a8-e3-81-8c-e5-87-a6-e7-90-86-e3-81-a7-e3-81-8d-e3-81-aa-e3-81-84"><![CDATA[脚注が処理できない]]></a></dt>
  <dd><![CDATA[実装する必要があるかどうか、どうやって実装するか、迷ってます。]]></dd>
  <dt><a name="name_-e3-82-b3-e3-83-bc-e3-83-89-e3-81-8c-e6-b1-9a-e3-81-84"><![CDATA[コードが汚い]]></a></dt>
  <dd><![CDATA[解析にInterpreterパターンを使い、XML書き出しをMSXML ParserをcreateObjectで呼び出して行う、
ということも夢見たのですが、現時点ではどちらも良くわからなかったので、こうなってしまいました。
コードの綺麗さよりもとりあえず動くものが欲しかったもので。。。
将来的に書き直したいとは思っているのですが。]]></dd>
  <dt><a name="name_RDtool-e3-81-a8-e5-a4-89-e6-8f-9b-e7-b5-90-e6-9e-9c-e3-81-8c-e7-95-b0-e3-81-aa-e3-82-8b"><![CDATA[RDtoolと変換結果が異なる]]></a></dt>
  <dd><![CDATA[仕様です。]]></dd>
  <dt><a name="name_-e3-83-95-e3-82-a1-e3-82-a4-e3-83-ab-e5-90-8d-e3-82-92rd2xml.ms-e4-bb-a5-e5-a4-96-e3-81-ab-e3-81-99-e3-82-8b-e3-81-a8-e5-8b-95-e4-bd-9c-e3-81-97-e3-81-aa-e3-81-84"><![CDATA[ファイル名をrd2xml.ms以外にすると動作しない]]></a></dt>
  <dd><![CDATA[仕様です。]]></dd>
  <dt><a name="name_-e3-83-95-e3-82-a1-e3-82-a4-e3-83-ab-e3-81-ab-e6-9b-b8-e3-81-8d-e5-87-ba-e3-81-99-e3-81-a8-e3-81-8d-e3-81-ae-e3-82-a8-e3-83-b3-e3-82-b3-e3-83-bc-e3-83-89-e3-81-8cShift_JIS-e5-9b-ba-e5-ae-9a"><![CDATA[ファイルに書き出すときのエンコードがShift_JIS固定]]></a></dt>
  <dd><![CDATA[仕様です。]]></dd>
</dl>
<h2><a name="name_See-20also">See also</a></h2>
<dl>
  <dt><a name="name_RD-20working-20draft-20-e6-97-a5-e6-9c-ac-e8-aa-9e-e7-89-88"><![CDATA[RD working draft 日本語版]]></a></dt>
  <dd><a href="http://www.ruby-lang.org/~rubikitch/RDP.cgi?cmd=view;name=RD">&#xab;<![CDATA[http://www.ruby-lang.org/~rubikitch/RDP.cgi?cmd=view;name=RD]]>&#xbb;</a></dd>
  <dt><a name="name_Ruby-20Documentation-20Project">Ruby Documentation Project</a></dt>
  <dd><a href="http://www.ruby-lang.org/~rubikitch/RDP.cgi?cmd=view;name=top">&#xab;<![CDATA[http://www.ruby-lang.org/~rubikitch/RDP.cgi?cmd=view;name=top]]>&#xbb;</a></dd>
  <dt><a name="name_RD-e4-ba-8b-e5-a7-8b-e3-82-81"><![CDATA[RD事始め]]></a></dt>
  <dd><a href="http://www.ruby-lang.org/~rubikitch/computer/rd-intro/">&#xab;<![CDATA[http://www.ruby-lang.org/~rubikitch/computer/rd-intro/]]>&#xbb;</a></dd>
  <dt><a name="name_CGI-e7-89-88RD-e3-82-b3-e3-83-b3-e3-83-90-e3-83-bc-e3-82-bf"><![CDATA[CGI版RDコンバータ]]></a></dt>
  <dd><a href="http://www.ruby-lang.org/~rubikitch/makerd.html">&#xab;<![CDATA[http://www.ruby-lang.org/~rubikitch/makerd.html]]>&#xbb;</a></dd>
  <dt><a name="name_RDtool">RDtool</a></dt>
  <dd><a href="http://www2.pos.to/~tosh/ruby/rdtool/ja/">&#xab;<![CDATA[http://www2.pos.to/~tosh/ruby/rdtool/ja/]]>&#xbb;</a></dd>
</dl>
<h2><a name="name_License">License</a></h2>
<p><![CDATA[一切を放棄し、PublicDomainとします。
このソースの一部または全部を利用しても、著作権表示をする必要はありませんし、
派生物のソースを公開する義務もありません。
このスクリプトを綺麗に書き直して下さった場合、公開してくださると助かりますが、
これもやはり義務ではありません。]]></p>
<p><![CDATA[ちなみに、]]><a href="#name_RDtool">RDtool</a><![CDATA[のソースは一切見ていません。
参考にしたのは、]]><a href="#name_RD-20working-20draft-20-e6-97-a5-e6-9c-ac-e8-aa-9e-e7-89-88"><![CDATA[RD working draft 日本語版]]></a><![CDATA[と、]]><a href="#name_RD-e4-ba-8b-e5-a7-8b-e3-82-81"><![CDATA[RD事始め]]></a><![CDATA[の紹介の部分です。
]]><a href="#name_CGI-e7-89-88RD-e3-82-b3-e3-83-b3-e3-83-90-e3-83-bc-e3-82-bf"><![CDATA[CGI版RDコンバータ]]></a><![CDATA[のソースは見ていません。
言語規格に著作権は無いはずなので、このスクリプトの著作権は成瀬のみに属していました。]]></p>
<h2><a name="name_History">History</a></h2>
<dl>
  <dt><a name="name_Revision:-201.4-20(2003-2d05-2d26)"><![CDATA[Revision: 1.4 (2003-05-26)]]></a></dt>
  <dd>
    <ul>
      <li><![CDATA[XSLT処理もできるようにした]]></li>
      <li><![CDATA[nameやhrefの値をエスケープする際の処理を修正]]></li>
    </ul>
  </dd>
  <dt><a name="name_Revision:-201.3-20(2003-2d05-2d23)"><![CDATA[Revision: 1.3 (2003-05-23)]]></a></dt>
  <dd>
    <ul>
      <li><![CDATA[nameやhrefの値をエスケープする際の処理をUTF8ベースに変更]]></li>
    </ul>
  </dd>
  <dt><a name="name_Revision:-201.2-20(2003-2d03-2d22)"><![CDATA[Revision: 1.2 (2003-03-22)]]></a></dt>
  <dd>
    <ul>
      <li><![CDATA[JavaScriptとの互換性を強化]]></li>
      <li><![CDATA[非ASCII文字をA要素name属性の値にするときのエスケープ方法を変更]]></li>
      <li><![CDATA[rd2xmlFiles()で最後に変換したファイルを表示するようにした]]></li>
      <li><![CDATA[そのほかバグを修正]]></li>
    </ul>
  </dd>
  <dt><a name="name_Revision:-201.2-20(2003-2d01-2d23)"><![CDATA[Revision: 1.2 (2003-01-23)]]></a></dt>
  <dd>initial Release</dd>
</dl>
<h2><a name="name_Author">Author</a></h2>
<p><![CDATA[成瀬ゆい ]]><a href="mailto:naruse@airemix.com">&#xab;<![CDATA[mailto:naruse@airemix.com]]>&#xbb;</a></p>
<h2><a name="name_Copyright">Copyright</a></h2>
<p><![CDATA[Copyright (c) 2001-2003 Airemix. No rights reserved.]]></p>
</body>
</document>
