紙の本を作ると同時にXMLのファイルも出来てしまう。あるいはXMLを読み込むだけであらかたレイアウトができてしまう。そういうワークフローはいかがですか? メディア木龍はそういうワークフロー作りのお手伝いをしています。
XML組版の用途として、大きく分けて表の場合と文章の場合とがあるかと思います。イメージしやすいのは表かと思いますが、まずは表の例をご紹介したうえで、XMLの特徴について書きたいと思います。
次に示す画像は、「e-Gov法令検索XML一括ダウンロード 最近の更新法令データ」から令和4年にダウンロードしたデータに入っていたCSVです。
見づらいですね。Excelで表示することも多いかと思いますが、この例はそれほどではありませんが、CSVの表示が横長になって扱いに苦労した覚えのある方も多いかと思います。
これをXMLにするとこうなります。
だいぶ見通しが良くなりましたね。これをInDesign読込用のXMLに変換します。その際には、事前に作りたい表を1つInDesignで作り、XML書き出しすることでInDesignでの表の表現を確認し、そのうえで、その表現を組み込んだXSLTスタイルシートを作ります。それが下の画像です。
InDesignから書き出される表のXMLは、表にスタイルがついている場合とそうでない場合とで大きく異なります。上記のものは表にスタイルがついているものです。スタイルがついてはない場合はCALS形式の表として書き出すこともでき、InDesign側でもCALS形式の表を読み込んで組むことが可能です。
次の画像は、先のXMLを上記のXSLTスタイルシートで変換したものです。
ちょっと見たくないタグだらけのデータになりましたね。表内のタグの改行のしかたによっては多少は変わりますが。でも大丈夫です。InDesignに読み込むときに元のXMLにXSLTスタイルシートを当てて変換しながら組むことができますので、その際には見ないで済みます。ただし、1,000ページ超のものを組むような時には、変換しながらだと時間がかかってしまいますので(環境によりますが、法令文で8分くらい)、あらかじめXSLTのツールがあればそれで変換してから読み込むことをお勧めします。1ファイルであれば、よほどのサイズでない限り一瞬で変換できます。1,000ページ超のデータでも変換は一瞬です。変換結果を読み込む時間は、変換しながらと比較すると半分くらいになります。
メディア木龍チャンネルで公開している動画をご覧ください。InDesignで変換しながら読み込んでいます。
ご覧になっていただいたXMLは表組のものでしたが、表の場合は1行の長さは比較的限られますので、JSONもありますし、何もXMLでなくてもという点はあるかと思います。一方、XMLならば要素の前後を要素名で囲めばいいので長文でも読みやすいという特徴があります。さらに、なんといってもXSLTという強力な変換用言語が使えるという利点があります。
参考に、XMLをJSONに変換したものも貼っておきます。
なお、XSLT3.0ではJSONも扱えるようになりました。
下の画像は文章物の読込用XMLデータの例です。2ページ目に表が入り、本文はルビが多く、その分読みづらくなっていますが、こういうものを扱うときにXMLは威力を発揮します。また、青空文庫はXHTML(XHTMLもXML)で公開されていますので、そこからの変換も難しくはありません(できることならbrタグの連続でなくpタグと、本文が始まってからも必要なところには見出しタグを使っていただければもう少し楽に変換できるのですが)。
InDesign用のXMLを作るには、InDesign上でスタイルを当てた文章や図表をXMLでどのように表現するかを確認する必要があります。その仕事で培ってきたノウハウをどのように自動組版で実現するかという工程です。
そのために、まず最初に見本組みを作る工程をお勧めしています。あらかじめこういうものを作りたいというフォーマットをご用意いただいて相談いただければ、概算をお示ししたうえでご予算に合えば細かな調整に入り、最終的な金額をお見積りします。XML自動組版用のテンプレートとXMLを作成するためにはそれなりの時間もかかり、1回だけの組版では合わないかもしれませんが、何度も使用するものでしたら、テンプレートに読み込むXMLを変えるだけでおおよその組版ができてしまいますので、作業の効率化に大いに貢献できます。
こちらもご覧ください。このように、まず、少ないページ数でサンプルを作り、親ページ、段落スタイル、文字スタイル等を設定、実際のレイアウトや問題になる点などを確認します。
XSLTは、XMLを別の形式のXMLやHTML、テキスト等に変換する変換用言語です。XMLを処理する方法は他にもあり、InDesignに標準で搭載されている機能としては、XSLTで変換する方法とスクリプトでXPathを掴む方法等があります。仕事の内容によって使い分けたり併用したりするといいと思います。XSLTはかなり自由にXMLを編集できるのでメディア木龍では便利に使っていますが、XMLが複雑になったり、処理が複雑になるとXSLTも複雑になり、コストが上がるという性質があります。
メディア木龍で公開している詳細Book検索「比較検討」も、お役立ちリンクの読みたい記事に飛べるジャンプメニューも、パパッとBIB-Jも、谷崎潤一郎研究のつぶやきやラブレターズに登載しているサイト内全文検索もXSLTを使って作っています。
XSLT1.0でしたらフリーソフトもあります。まず勉強してみたいというときにすぐに始められます。一度に複数のファイルを出力する場合はXSLT2.0以降で登載された機能を使うことになりますが、その場合はoXygen XML Editor等の専用のXMLエディターを使うと便利です。oXygen XML Editorはいろいろな変換もサポートしており、仕事でXMLを扱う場合に心強いツールです。
2021年4月26日の学術情報XML推進協議会ウェビナー「全文XML作成に向けて」で使用したセットをブラッシュアップしたサンプルを公開しています。説明ページもご用意しました。ご活用ください。
メディア木龍チャンネルというYouTubeのチャンネルを公開しています。こちらでは、各手順についての操作説明や同梱のXSLTの説明もしていますのでよろしければご覧ください。
Wordデータを配置して半自動組版するサンプルも同梱しています。
一般的な書籍のパターンを応用して、神奈川県オープンデータサイトで公開されている新型コロナウイルス対策関係データのうち3つのCSVをもとに作ったサンプルを公開します。頁物サンプル(クリックするとzipファイルがダウンロードされます)です。3つのCSVをデータベースソフトで処理してXML書き出しし、それをXSLTでInDesign用のXMLに変換して読み込んでいます。テンプレートには文字スタイル、段落スタイル、表スタイル、セルスタイル等必要なものを設定しておき、それをタグと関連付けしておきます。
XML組版のサンプルを作りました。
— 木龍美代子 (@miyokosroom) July 17, 2020
ご活用ください。https://t.co/32lugq05rP pic.twitter.com/rJ1JNhsEY2
組み上がったものを見て、ちょっと修正したいところがあると思います。たとえば「専用ダイヤル相談件数」の数字をもう少し右に寄せたいとか、「居住地」であふれている行があるとか。そういう場合には、たとえば数字の位置を変更する場合はテンプレートの段落スタイルのタブの位置を修正します。居住地であふれているのを何とかしたい場合は、居住地の値が何文字以上の場合は長体(たとえば横幅90%とか)の文字スタイルを作ってXSLTで条件分岐して適用するか、この例の場合では10歳未満のケースでずれているので、居住地の左揃えのタブを2文字分移動すれば問題を解決できます。いろいろ弄って試してみてください。
2020-08-01 上記の修正の場合のビデオを作りました。
7月に公開したXML組版のサンプルで、テンプレートを修正するビデオを作りました。https://t.co/g7qOCY30kC pic.twitter.com/Yk0GgIui87
— 木龍美代子 (@miyokosroom) July 31, 2020
2020-08-05 表枠の修正に伴うXSLTの修正から、InDesignの標準機能でXML読み込みの際にXSLTを適用する方法、さらに細かな部分の修正までのビデオを作りました。
XSLT等を修正するビデオを作りました。
— 木龍美代子 (@miyokosroom) August 4, 2020
お役に立てればうれしいです。
なお、手動機や電算写植の経験がある方はご存知かと思いますが、1Qは1/4mmです。 pic.twitter.com/uMy6MJRMcK
2020-08-11 XML組版のブラッシュアップ法のビデオを作りました。
XML組版のブラッシュアップ法です。
— 木龍美代子 (@miyokosroom) August 10, 2020
今回の修正では、後の処理はテンプレートの修正(全削除後、indtファイルを上書き)のみで大丈夫です。
1. 罫線と文字の間隔を上下揃える
2. 罫線と文字の間隔をもう少しゆったり組みたい場合の例
となっております。 pic.twitter.com/nJMwpHC7ta
下記のように、InDesign上で見本組を作り、その見本組みから作ったサンプルを公開します。花粉症シールおよび疫病退散シール(クリックするとzipファイルがダウンロードされます)です。ラベルは、エーワンの品番72236を使っています。
セットには、サンプルが2つあります。kafun_sample1とkafun_sample2です。それぞれにinddファイルとindtファイル(テンプレート)、読込用xml(kafun_sumple1.xml、kafun_sample2.xml)があります。kafun_sample2では画像も読み込めるように、imagesに画像が入っています。kafun_sample1はインラインで画像を入れているため、その部分には【画像】という文字を入れています。
indtを開くと、名称未設定-1が作成されますので、そこに読込用xmlを読み込んでみてください。一瞬で組み上がります(画像はkafun_sample2の例)。その後はindesign上で修正したり、読込用xmlを修正する等、いろいろ試してみてください。
段落スタイルや文字スタイルを修正することでの変化等もお楽しみください。
そのまま印刷して使いたいという場合はpdfも入っていますのでご活用ください。