developおさらいすると、EBStudioでは次のようにHTMLからEPWINGへの変換をサポートしている。辞書系のコンテンツEBStudioの設計を行ったのは1999年頃だが、辞書や書籍の入力ソース形式をHTMLにしたのは正解だったと思っている。HTMLなら理解が簡単で、プログラマでなくても記述が容易だ。なによりも辞書コンテンツはすでにSGMLなどの何らかのマークアップ言語で記述されていることが多いはずで、HTMLなら既存のマークアップ言語からの変換が簡単だからである。当時はXML1.0が出たばかりで、利用が広がるかどうかはわからなかった。HTMLやXMLを解釈するには構文を解釈するパーサーが必要だが、当時はデファクトといえるパーサーのライブラリがなかった。当時利用できたC言語のXMLパーサーのなかで今日も命脈を保っているライブラリとしてはexpatがあるが、結局EBStudioではexpatは使わずにパーサーを自作した。実はこのパーサーを自作したことが、EBStudioの欠点の一つになった。その後XML関連の技術はXSLTやXPointerを始め大きく発展したが、EBStudioではこれらが使用できない。したHTML/XMLパーサーを搭載したいという構想はずっと持っていた。CパーサーであるLibxml2を採用した。Libxml2はHTML/XMLの両方がパースでき、DOM,SAX,XSLT,XPointerに対応している。Licenseなので商用でも利用できる。Libxml2と同時に使用する文字コード変換ライブラリであるlibiconvはLGPLなので、商用に使うには問題がある。調べたところ、libiconvの代わりにicuが使用出来ることが分かった。libxml2の紹介ただし、従来の自前のHTMLパーサーも残してあって、どちらのパーサーを使うかを選択できる。EBStudioを前提とした変換ツールキットがネット上に多数存在するので、下位互換性を残しておかないといけないからだ。JepaX,DicX,LeXMLについてさてXMLが利用できますと言っても、XMLは拡張可能なマークアップ言語に過ぎなくて、マークアップされた要素が見出しなのか、本文なのか、検索キーなのかを指定しなければならない。実は日本電子出版協会(JEPA)出版データフォーマット標準化研究委員会が定めた出版物交換用XMLフォーマットJepaXというものがあり、Ver0.9で仕様が止まっているが、出版業界内部では利用されていると聞いている。このJepaXをさらに辞書向けに改良したDicXという仕様案(イースト株式会社)もあったのだが、DicXはすでにメンテナンスがされておらず、サイトも消滅している。その後DicXの後継規格として株式会社ディジタルアシストが策定したLeXMLが普及し、出版業界ではデファクトになっている。LeXMLとは?EBStudioのリニューアルにあたっては、一応これらの規格との整合性を考えておかないといけない。新パーサーの考え方ではJepaXとLeXMLをサポートすればいいのかということだが、サポートしても恩恵をうけるユーザはほとんどいないという結論に達した(ディジタルアシストさんは確実に喜ぶと思うけど)。結局、EBStudio2の新パーサーでも、基本はHTML4.0とXHTML1.0を使用することにした。EPWINGは利用できる書式指定が限られており、HTMLでも十分なことが多いのと、利用者もHTMLに慣れているからだ。部分的にLeXMLの要素を利用したいケースがどうしてもある。具体的には、辞書の検索インデックスを指定したい場合だ。<h1>〜<h6>タグと<dt>タグは検索キーになるという仕様だが、それ以外に本文上は現れない検索インデックスをつけたい場合がある。DicX/LeXMLには<key>という専用の要素が定義されており、従来のEBStudioでも、HTMLに対する独自の拡張仕様として利用できた。これはHTMLとしては文法違反であり、Libxml2を使うならちゃんと整合性をとらないといけない。そこで次のようにXMLネームスペースを利用して、XHTMLで記述してもらう。これならXMLとして正当だ。変換してね」、というスタンスだ。ように意味を割り当てる方法もありえる。これなら既存のXMLをそのまま読ませることが可能なので、たとえばWikipediaのXMLを読ませることもできるかもしれない。こちらも将来の追加開発で検討したい。月別アーカイブはてなブログをはじめよう!hishidaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。