CAS-UBでIDに使える文字の種類の問題に対応しました

一昨日、CAS-UBの試用ユーザーさんから、朝からPDFが出なくなったという話がきて調査して修正しました。

クラウド版も昨日の午後には修正完了しています。昨日の午後から、問題は解決してます!

原因は、当該出版物の中でID(固有識別子)に使った文字に、XSL変換用のパーサーで使えない文字と判断されるものがあったため、XSL変換の途中でエラーになっていたことです。

XMLではIDに使うことができる文字に制限があり、この制限はXML仕様で決まっているのですが、XMLV1.0の改訂版によってIDに使える文字が変化していることが原因です。

XML仕様V1.0は、周知のとおり1998年にできたのですが、これまでに何回か小さな改訂が行われています。V1.0の最新版は第5版です。

Extensible Markup Language (XML) 1.0 (Fifth Edition)
W3C Recommendation 26 November 2008
http://www.w3.org/TR/2008/REC-xml-20081126/

第5版では、IDに使える文字の範囲がかなり広くなっています。ところが、実際のプログラムの方は、まだ、第4版のままのものが多いため、第4版から第5版で追加された文字をIDに使うと、エラーを起こしてしまうのです。

ちなみにEPUBの妥当性をチェックするEPUBCheckというものがありますが、これも、第5版には未対応のようです。

ということで、CAS-UBも、IDに使える文字を第5版準拠とするのを諦めて次のように仕様を変更しました。

XML仕様のEditionに関わらずにIDに使える文字を選択して、その文字コードはそのままIDに使い、それ以外の文字は独自エスケープして使う。

これにより、今後は、この問題は起きないと思います。

結局、仕様が進んでも、なかなか世の中は進まないという。オープンな世界でいろいろなプログラムを使うと、いろんなところで小さな壁にぶつかり、思ったほど便利にならないものです。