DITA4Publishersのword2ditaを試してみた
DITA-OTのプラグイン、DITA4Publishersには、Wordファイル(docx)をDITAに変換する機能があります。仕事で必要があって、この機能が使い物になるかどうか調べてみました。使用したバージョンは、0.9.16です。結論から言うと、トピックだけの変換ならそこそこ使えますが、マップに関しては実用に耐えません。
変換対象の文書が、コンテンツのない階層だけのタイトルを含んでいたため、その階層をtopicheadに変換することにしました。style2tagmap.xmlを下記のように指定することにより、見出し1、見出し2、見出し3のスタイルはtopicheadに変換されるはずです。
<style styleName="Title" level="0" format="map" mapType="map" prologType="topicmeta" structureType="mapTitle" tagName="title" /> <style styleName="heading 1" structureType="topicHead" level="1" tagName="navtitle" /> <style styleName="heading 2" structureType="topicHead" level="2" tagName="navtitle" /> <style styleName="heading 3" structureType="topicHead" level="3" tagName="navtitle" /> <style styleName="heading 4" structureType="topicTitle" topicDoc="yes" topicType="concept" bodyType="conbody" format="concept" topicrefType="topicref" tagName="title" level="4" />
ところが、どうしてもtopicheadが出力されないので、XSLを調べてみました。word2dita変換では、Wordから抽出したコンテンツを、simpleWpDoc.xmlという名前の一時ファイルに出力します。これにsimple2dita.xslという名前のXSLを適用して、マップとトピックを生成します。マップを生成するテンプレートの名前はgenerateTopicrefsですが、よく調べたらgenerateTopicrefs-origというテンプレートがありました。generateTopicrefs-origの方にはtopicheadを出力するコードが入っていますが、generateTopicrefsの方にはtopicheadを出力するコードが入っていません。どうも、このテンプレートは実装途中のようです。
generateTopicrefs-origをgenerateTopicrefsにリネームすると、topicheadが出力されるようになりますが、今度はトピックが出力されなくなります。
word2ditaが生成するtopicheadの構造は、下記のようにtopichead→topicmeta→navtitleという階層を持ちます。
<topichead xtrc="/w:document/w:body[1]/w:p[3]"> <topicmeta xtrc="/w:document/w:body[1]/w:p[3]"> <navtitle xtrc="/w:document/w:body[1]/w:p[3]" xtrf="file:/C:/DITA-DOC/kaigisho/doc/temp/temp20110707225900176/shugyokisoku/word/document.xml"> トピックヘッドタイトル1 </navtitle> </topicmeta> <topicref href="topics/topic_1_1.dita" xtrc="/w:document/w:body[1]/w:p[3]"> <topichead xtrc="/w:document/w:body[1]/w:p[6]"> <topicmeta xtrc="/w:document/w:body[1]/w:p[6]"> <navtitle xtrc="/w:document/w:body[1]/w:p[6]" xtrf="file:/C:/DITA-DOC/kaigisho/doc/temp/temp20110707225900176/shugyokisoku/word/document.xml"> トピックヘッドタイトル1−1 </navtitle> </topicmeta> <topicref href="topics/topic_1_1_1.dita" xtrc="/w:document/w:body[1]/w:p[6]"/></topichead></topicref> </topichead>
という訳で、トピックのコンテンツだけword2ditaで変換し、マップの変換は自前で作ることにしました。
DITA4Publishersの実装が早く進みますように。。。