Hatena::ブログ(Diary)

文書遊戯 このページをアンテナに追加 RSSフィード Twitter

2011-07-07

DITA4Publishersのword2ditaを試してみた

| 23:27 | 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の実装が早く進みますように。。。

トラックバック - http://d.hatena.ne.jp/ditahack/20110707/1310048875
Connection: close