XML2EB は独自に規定するXML(book.xml)ファイルを読み込んで JIS X4081形式の電子書籍を作成するプログラムです。
使用方法:
$ bin/xml2eb.sh [book.xmlのパス]
実行後、book.xmlが存在するディレクトリのbuildディレクトリ以下に 辞書データが作成されます。
書籍はbook要素にて定義します。 book要素はXMLのルート要素であり、XML文書内に2つ以上記述することはできません。 この要素内に必要な数だけ副本を記述します。
例:
<book> <subbook> ... </subbook> <subbook> ... </subbook> </book>
副本はsubbook要素にて定義します。 この要素内にコンテンツ、画像、音声、外字を記述します。
subbook要素の属性:
例:
<subbook dir="hoge" title="ほげほげ事典" type="0x60"> <content> ... </content> <graphic> ... </graphic> <sound> ... </sound> <font> ... </font> </subbook>
コンテンツはcontent要素にて定義します。 この要素内にコンテンツ項目、メニュー、著作権を記述します。
例:
<content> <item> ... </item> <menu> ... </menu> <copyright> ... </copyright> </content>
コンテンツ項目はitem要素にて定義します。 この要素内に見出し、本文、検索語、キーワードを記述します。
item要素の属性:
例:
<item id="ほげほげ"> <head> ... </head> <word> ... </word> <keyword> ... </keyword> <body> ... </body> </item>
見出しはhead要素にて、本文はbody要素にて定義します。 要素内には以下の要素を含めることができます。 また、本文は必ずkey要素から始めなければなりません。
char要素の属性:
ref要素の属性(項目参照):
ref要素の属性(データ参照):
例:
<head>辞書</head> <body> <key>辞書</key><br/> <indent>辞書とは...</indent> </body>
検索語はword要素にて、キーワードはkeyword要素にて定義します。 検索語は前方/後方一致検索で検索する際の検索語になります。 キーワードは条件検索で検索する際の検索語になります。 片仮名を含んでいる場合は平仮名に変換したものも自動的に登録されます。 複数の検索語/キーワードを定義する場合は各要素を複数記述します。
例:
<word>辞書</word> <word>じしょ</word> <keyword>英和</keyword> <keyword>和英</keyword>
メニューはmenu要素にて定義します。 メニューの各項目はlayer要素を用いて階層化します。 layer要素内には本文要素と同様の要素を含めることができます。 なお、最上位階層は先頭に記述する必要があります。
layer要素の属性:
例:
<menu>
<layer id="top">
<ref id="first">はじめに</ref><br/>
<ref id="about">この辞書について</ref><br/>
<ref id="symbol">表記について</ref><br/>
</layer>
<layer id="first">
<key>はじめに</key><br/>...
</layer>
<layer id="about">
<key>この辞書について</key><br/>...
</layer>
<layer id="symbol">
<key>表記について<key><br/>...
</layer>
</menu>
著作権はcopyright要素にて定義します。
例:
<copyright> Copyright (c) 2006 xxxx </copyright>
画像はgraphic要素内にdata要素を記述して定義します。
data要素の属性:
例:
<graphic> <data name="g001" src="g001.bmp" format="bmp" /> <data name="g002" src="g002.bmp" format="bmp" /> <data name="g003" src="g003.bmp" format="bmp" /> </graphic>
音声はsound要素内にdata要素を記述して定義します。
data要素の属性:
例:
<sound> <data name="s001" src="s001.wav" format="wav" /> <data name="s002" src="s002.wav" format="wav" /> <data name="s003" src="s003.mid" format="mid" /> </sound>
外字はfont要素内にchar要素を記述して定義します。 外字のビットマップイメージファイルはchar要素内にdata要素を記述して定義します。
char要素の属性:
data要素の属性:
例:
<font>
<char name="n001" type="narrow">
<data size=16 src="n001-16.xbm" />
<data size=30 src="n001-30.xbm" />
</char>
<char name="n002" type="narrow">
<data size=16 src="n002-16.xbm" />
<data size=30 src="n002-30.xbm" />
</char>
<char name="w001" type="wide">
<data size=16 src="w001-16.xbm" />
<data size=30 src="w001-30.xbm" />
</char>
<char name="w002" type="wide">
<data size=16 src="w002-16.xbm" />
<data size=30 src="w002-30.xbm" />
</char>
</font>
下記に示すような要素間の空白のみのテキストノードは無視します。
<key>...</key> <br/> <b>...</b>...<i>...</i> <em>...</em> ...
</key>と<br/>の間、<br/>と<b>の間、<b/>と<i>の間、 </i>と<em>の間に存在するテキストノードが無視する対象になります。
テキスト内に存在する改行はすべて無視します。 テキスト内に改行を含める場合は br要素を使用します。