個人用途での電子書籍管理は引用管理ソフトウェアであるZotero[1]を利用しています。物理的な文書も登録管理できますが、蔵書量の関係からまだ手をつけていません。休日にちまちまと登録しているのですが、休日の度に本が増えるので終わりはしばらく来なさそうです。
書きもので技術的内容・事実に依拠した内容を扱うにあたっては参考文献が重要になりますが、参考文献の書式は学会や論文誌によって異なっているものです。つまり、書誌情報と書式を分離して管理、利用する仕組みが求められることになります。このうちオープンで普及しているものとしてはBibTeXといったものがあります。どんなものを使おうとおこる問題ではありますが、BibTeXを使うにはBiBTeXの記法やBiBTeXを処理するツールへの習熟が必要です。
さて、Zoteroではさまざまな形式で管理している参考文献リストを、プラグインによってMicrosoft Wordなどにも出力できます。そしてより柔軟にこのリストを扱うフォーマットとしてCitation Style Language(CSL)[2]というXMLに基づくオープンフォーマットが利用できます。
CSLを処理するスタンドアロンのソフトウェア*もありますが、XMLですのでXSLTによる処理も可能です。次のCSLはCSL primer[3]のページから一部抜粋しています。
<?xml version="1.0" encoding="utf-8"?> <style xmlns="http://purl.org/net/xbiblio/csl" version="1.0" default-locale="en-US"> <!-- Generated with https://github.com/citation-style-language/utilities/tree/master/generate_dependent_styles/data/asm --> <info> <title>Applied and Environmental Microbiology</title> <id>http://www.zotero.org/styles/applied-and-environmental-microbiology</id> <link href="http://www.zotero.org/styles/applied-and-environmental-microbiology" rel="self"/> <link href="http://www.zotero.org/styles/american-society-for-microbiology" rel="independent-parent"/> <link href="http://aem.asm.org/" rel="documentation"/> <category citation-format="numeric"/> <category field="biology"/> <issn>0099-2240</issn> <eissn>1098-5336</eissn> <updated>2014-04-30T03:45:36+00:00</updated> <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights> </info> </style>
この基本情報と、テキスト中での引用書式、参考文献リストでの引用書式、
ロケールによる表示変更、その他書式のためのマクロといった要素を組み合わせたものがCSLの構造です。
つまり、XSLTを記述する方針は、テキスト中での引用書式cs:citation
や
参考文献リストでの書式cs:bibliography
の記述を元に出力書式を用意し、そこに情報を流しこんで出力を行うことになります。
cs:macro
の内の記述方法などはXSLTと似通ってはいますが、if文でelse節が使えたり、variableやtextの使い方が異なるなど注意を要します。
来週はCSLの経緯の概略と、CSLからXSL-FOへの変換に挑戦予定です。
* CSLを利用できるソフトウェアのリストはCSLのトップページ[2]にあります。
[1] https://www.zotero.org/
[2] https://citationstyles.org/
[3] https://docs.citationstyles.org/en/1.0.1/primer.html
関連記事
Citation Style Languageの話(2) – 引用データJSONのXML化