文章物こそXML組版

紙の本を作ると同時にXMLファイルも出来てしまう。あるいはXMLを読み込むだけであらかたレイアウトができてしまう。そういうワークフローはいかがですか? メディア木龍はそういうワークフロー作りのお手伝いをしています。

count="false">Tweet

「文章物こそ」と書く理由――表の場合と文章の場合

XML組版の用途として、大きく分けて表の場合と文章の場合とがあるかと思います。イメージしやすいのは表かと思いますが、まずは表の例をご紹介したうえで、XMLの特徴について書きたいと思います。

次に示す画像は、「e-Gov法令検索XML一括ダウンロード 最近の更新法令データ」から令和4年にダウンロードしたデータに入っていたCSVです。

「e-Gov法令検索XML一括ダウンロード 最近の更新法令データ」から令和4年にダウンロードしたデータに入っていたCSV
(クリックで拡大表示できます)

見づらいですね。Excelで表示することも多いかと思いますが、この例はそれほどではありませんが、CSVの表示が横長になって扱いに苦労した覚えのある方も多いかと思います。

これをXMLにするとこうなります。

「e-Gov法令検索XML一括ダウンロード 最近の更新法令データ」から令和4年にダウンロードしたデータに入っていたCSVを変換して作成したXML
(クリックで拡大表示できます)

だいぶ見通しが良くなりましたね。これをInDesign読込用のXMLに変換します。その際には、事前に作りたい表を1つInDesignで作り、XML書き出しすることでInDesignでの表の表現を確認し、そのうえで、その表現を組み込んだXSLTプログラムを作ります。それが下の画像です。

「e-Gov法令検索XML一括ダウンロード 最近の更新法令データ」から令和4年にダウンロードしたデータに入っていたCSVをInDesignで自動組版するためのXSLTプログラム
(クリックで拡大表示できます)

InDesignから書き出される表のXMLは、表にスタイルがついている場合とそうでない場合とで大きく異なります。上記のものは表にスタイルがついているものです。スタイルがついてはない場合はCALS形式の表として書き出すこともでき、InDesign側でもCALS形式の表を読み込んで組むことが可能です。

次の画像は、先のXMLを上記のXSLTプログラムで変換したものです。

「e-Gov法令検索XML一括ダウンロード 最近の更新法令データ」から令和4年にダウンロードしたデータに入っていたCSVをInDesignで自動組版するためのXSLTプログラムで変換してできたXML
(クリックで拡大表示できます)

ちょっと見たくないタグだらけのデータになりましたね。表内のタグの改行のしかたによっては多少は変わりますが。でも大丈夫です。InDesignに読み込むときに元のXMLにXSLTプログラムを当てて変換しながら組むことができますので、その際には見ないで済みます。ただし、1,000ページ超のものを組むような時には、変換しながらだと時間がかかってしまいますので(環境によりますが、法令文で8分くらい)、あらかじめXSLT変換のツールがあればそれで変換してから読み込むことをお勧めします。1ファイルであれば、よほどのサイズでない限り一瞬で変換できます。1,000ページ超のデータでも変換は一瞬です。変換結果を読み込む時間は、変換しながらと比較すると半分くらいになります。

メディア木龍チャンネルで公開している動画をご覧ください。InDesignで変換しながら読み込んでいます。

ご覧になっていただいたXMLは表組のものでしたが、表の場合は1行の長さは比較的限られますので、JSONもありますし、何もXMLでなくてもという点はあるかと思います。一方、XMLならば要素の前後を要素名で囲めばいいので長文でも読みやすいという特徴があります。さらに、なんといってもXSLTという強力な変換用言語が使えるという利点があります。強力という意味は、リンク先のWikipediaに変換の指定は関数型言語として見ることもでき、実のところチューリング完全であるため、コンピュータ・プログラムを書くようにしてどんな応用も可能である。という表現からも何となくご理解いただけるかと思います。ただし、元のXMLが複雑だったり、複雑な変換になると変換コストも上がっていきます。

JSONも長文を表現しようと思えばできるのですが、データ形式だけでなく、それを扱うことが想定されるプログラミング言語との組み合わせによる得手不得手も影響してきます(参考:ブログ|Twilio - KDDI Web Communications)。XSLTはXMLを変換することに特化した変換言語ですので、その点は得意なのです。ただし、やりたいことが複雑になってくると難易度も急速に上がります。場合によってはJavaScriptを使用した方がいい場合もありますので、やりたいことの性質によって組み合わせていくのがいいでしょう。

参考に、XMLをJSONに変換したものも貼っておきます。

「e-Gov法令検索XML一括ダウンロード 最近の更新法令データ」から令和4年にダウンロードしたデータに入っていたCSVをXML化したものをさらにJSONに変換したもの
(クリックで拡大表示できます)

なお、XSLT3.0ではJSONも扱えるようになりました。

次に示す例は、e-Govからダウンロードした法令文のXMLを組版したものですが、e-Gov用の法令文のフォーマットですのでそれなりにタグが多くなりますが、長文でも読みやすいことはおわかりいただけるかと思います。

ここでもう1つ、小説の例を挙げておきます。青空文庫にある小栗風葉著『深川女房』を組んだものです。72ページあります。

読込用データは下の画像になります。2ページ目に表が入り、本文はルビが多く、その分読みづらくなっていますが、こういうものを扱うときにXMLは威力を発揮します。また、青空文庫はXHTML(XHTMLもXML)で公開されていますので、そこからの変換も難しくはありません(できることならbrタグの連続でなくpタグと、本文が始まってからも必要なところには見出しタグを使っていただければもう少し楽に変換できるのですが)。

小栗風葉著『深川女房』をInDsign読込用のXMLに変換したもの
(クリックで拡大表示できます)

ご提案するワークフロー

InDesign用のXMLを作るには、InDesign上でスタイルを当てた文章や図表をXMLでどのように表現するかを確認する必要があります。その仕事で培ってきたノウハウをどのように自動組版で実現するかという工程です。

そのために、まず最初に見本組みを作る工程をお勧めしています。あらかじめこういうものを作りたいというフォーマットをご用意いただいて相談いただければ、概算をお示ししたうえでご予算に合えば細かな調整に入り、最終的な金額をお見積りします。XML自動組版用のテンプレートとXMLを作成するためにはそれなりの時間もかかり、1回だけの組版では合わないかもしれませんが、何度も使用するものでしたら、テンプレートに読み込むXMLを変えるだけでおおよその組版ができてしまいますので、作業の効率化に大いに貢献できます。

1. 見本組み

まず、見本組みを作り、その見本組みから、その本に合ったXMLを設計します。

XMLファイルには、その項目がわかる名前でタグ名をつけます。見本組みから書き出したXMLファイルに上書きするような形で原稿を入力することで、XMLはわからないという人でもスムーズに入力作業ができますので、作業の効率化が図れます。

2. 入力したXMLファイルを見本組みから作ったテンプレートに読み込みます

XMLのタグと、InDesignの段落スタイルや文字スタイルを結びつけることで、自動組版ができます。

3. 校了になった時点で組版ファイルからXMLやHTML等、必要な形式に書き出します

書き出されたXMLデータはもちろんInDesign向けのXMLファイルですが、これにXSLTを使って新たに要素や属性を追加したり構造を編成し直すなどすることで、後で加工しやすいXMLデータにすることができます。必要な項目や形式については、ご相談のうえ作成、変換させていただきます。

原稿用XMLを作っておき、それをInDesign用、Web用にそれぞれ変換するという方法もあります。紙とWeb両方という流れでいけば、この方法が一番スムーズかと思います。

4. 原稿からXMLにするXMLワークロー

原稿用XML→原稿管理XML(各原稿のフォルダに1つずつ)を作っていくと、将来的には、原稿管理XMLのありかや他業務に回した日付等を付加したデータベースを作ることで、XMLワークフローによるオリジナルの業務管理システム構築も見えてきます。

たとえば画像についての項目ならワークフローを考えて
<fig no="1_1">
<graphic genpon="org" href="genpon/org/1_1.jpg"/>
<graphic genpon="psd" href="genpon/psd/1_1.psd"/>
<graphic use="web" href="images/1_1.jpg"/>
<graphic use="print" href="Links/1_1.psd"/>
</fig>
とか、より現場で誤解が発生しないように設計すればいいでしよう。

こうなってくれば、これは原稿XMLというより原稿管理XMLですよね。入稿元にはその部分をたとえば

<!-- 【】部分のみご入力ください--
<fig no="【ファイル名(拡張子無し)】">
<graphic genpon="org" href="【ファイル名(拡張子有り)】"/>
-->
というようにしておくといいでしょう。ファイル名に使用してほしくない文字や、使用できる文字についての注意もここに入れておけば便利でしょう。

5. 既存のInDesignデータも

すでにあるInDesignデータも、段落スタイルと文字スタイルがついていれば加工は難しくありません。作業に必要なものは、InDesignからパッケージで保存したPDFを含む一式のみです(ただし、Webもという場合は、CMYK変換前の画像も)。ぜひ一度ご相談ください。

メディア木龍ではXSLTで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を扱う場合に心強いツールです。

サンプル

サンプル3

2021年4月26日の学術情報XML推進協議会ウェビナー「全文XML作成に向けて」で使用したセットをブラッシュアップしたサンプルを公開しています。説明ページもご用意しました。ご活用ください。

メディア木龍チャンネルというYouTubeのチャンネルを公開しています。こちらでは、各手順についての操作説明や同梱のXSLTの説明もしていますのでよろしければご覧ください。

Wordデータを配置して半自動組版するサンプルも同梱しています。

サンプル2

一般的な書籍のパターンを応用して、神奈川県オープンデータサイトで公開されている新型コロナウイルス対策関係データのうち3つのCSVをもとに作ったサンプルを公開します。頁物サンプル(クリックするとzipファイルがダウンロードされます)です。3つのCSVをデータベースソフトで処理してXML書き出しし、それをXSLTでInDesign用のXMLに変換して読み込んでいます。テンプレートには文字スタイル、段落スタイル、表スタイル、セルスタイル等必要なものを設定しておき、それをタグと関連付けしておきます。

XML組版のサンプルを作りました。
ご活用ください。https://t.co/32lugq05rP pic.twitter.com/rJ1JNhsEY2

— 木龍美代子 (@miyokosroom) July 17, 2020

【カスタマイズ】

組み上がったものを見て、ちょっと修正したいところがあると思います。たとえば「専用ダイヤル相談件数」の数字をもう少し右に寄せたいとか、「居住地」であふれている行があるとか。そういう場合には、たとえば数字の位置を変更する場合はテンプレートの段落スタイルのタブの位置を修正します。居住地であふれているのを何とかしたい場合は、居住地の値が何文字以上の場合は長体(たとえば横幅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等を修正するビデオを作りました。
お役に立てればうれしいです。
なお、手動機や電算写植の経験がある方はご存知かと思いますが、1Qは1/4mmです。 pic.twitter.com/uMy6MJRMcK

— 木龍美代子 (@miyokosroom) August 4, 2020

2020-08-11 XML組版のブラッシュアップ法のビデオを作りました。

XML組版のブラッシュアップ法です。
今回の修正では、後の処理はテンプレートの修正(全削除後、indtファイルを上書き)のみで大丈夫です。
1. 罫線と文字の間隔を上下揃える
2. 罫線と文字の間隔をもう少しゆったり組みたい場合の例
となっております。 pic.twitter.com/nJMwpHC7ta

— 木龍美代子 (@miyokosroom) August 10, 2020

サンプル1

下記のように、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も入っていますのでご活用ください。

XML読込 結果