スポンサーリンク

表組み:XMLデータの流し込み

InDesign XMLデータの流し込み(表組み)

前回、InDesignにXMLデータを流し込むための表のプレースホルダーを完成させました。

今回は、その表に流し込むXMLデータを作成して、実際にデータの流し込みをしていきます。

XMLデータを書き出して構造を確認

XMLデータ作成の前に、InDesignで作成した表がどんなXMLになっているか、レイアウトからXMLデータを書き出して確認してみます。前回作成したのは次の表です。

これをXMLデータとして書き出します。

構造画面の右上メニューから[XMLを書き出し…]をクリックして〈Root〉以下の全てを書き出します。
今回のXMLデータの書き出しは、ドキュメント上で何も選択されていない状態で実行して、全データを書き出します。

書き出し設定は、次のようにしました。
「タグなしの表をCALS XMLとして書き出し」はチェックしてありますが、今回は関係ないのでどちらでもかまいません。

書き出したXMLデータを、テキストエディターで開いてみます。
黒い文字以外は、全てタグの情報です。

わかりずらいので、GoogleCromeに投げてツリー表示してみます。

先頭行の〈Root〉の下に、InDesignの構造画面で見たのと同じ構造ができているのがわかります。
この構造に合わせて、流し込むXMLデータを作成します。

作成するXMLデータは、InDesignとXMLの階層構造が合致すれば流し込みができます。
言い換えると、階層構造が違うときちんと読み込むことができません。(兄弟要素を複製することはできます)

この書き出された各要素には、セル幅などの属性が細かく入っていますが、作成するXMLデータにいつも全てが必要なわけではありません。
というか、今回読み込むXMLデータには属性は必要ありません。

XMLデータの準備

書き出されたXMLデータの構造を参考にして、組版する実際のデータで流し込み用のXMLデータを作ります。

XMLデータを作る方法は、実際の案件の状況によっていろいろな方法が考えられると思うので、ここでは割愛します。

下図は、左側が参考用として書き出したXML構造、右側が流し込み用に作成したXMLデータです。

ここで、着目して欲しいポイントは次の3つです。

属性値

もうすでにInDesignでレイアウトを作成してあるので、今回読み込むXMLデータにはレイアウト関連の属性情報は入れていません。

なので、右側の流し込み用のXMLデータは、データ量が少なくて済んでいます。

空白要素は「読み込まない」

InDesignで作った表の先頭行にある「税別」「円」の文字や、サイズごとの寸法表のヘッダ部分の文字は、既にレイアウト上に入力してあるものを生かすのでXMLデータには入れません。
〈セル /〉(または〈セル〉〈/セル〉)としてカラ要素にします。

XMLをInDesignに読み込む際に、「空白のみの要素を読み込まない」という読み込みオプションの設定ができるからです。

「税別」「円」の文字にはタグをつけていないので、カラ要素さえ必要ありません。
なにも入れません。

なのでもし、金額表示を「税別 0,000円」ではなくて「¥0,000(税別)」としたり、ヘッダ文字の「肩幅」を「肩はば」に変更したければ、InDesignのドキュメントを修正しさえすればよいのです。面倒くさいXMLを修正する必要はありません。

複数サイズ展開は「既存の構造に一致しない要素」も読み込む

プレースホルダーでは、価格帯金額とサイズ別の寸法表は、先頭の1行分しか作成しませんでした。
下図が、そのプレースホルダーです。

実際の組版では複数のサイズが入るので、XMLデータでは、その分を繰り返しデータとして作成しています。

XMLをInDesignに読み込む際の設定で、「既存の構造に一致する要素のみ読み込む」のチェックを外しておくことで、構造に一致していないデータも読み込まれ、それと同時にセルも複写されます。

繰り返しデータの読み込み方について、読み込みオプションの設定で間違った情報を載せていました。訂正して、お詫びします。(2019.6.3)

XMLデータの読み込み

XMLデータの準備ができたら、そのデータをInDesignに読み込みます。

構造画面の右上のメニューボタンから[XMLを読み込み…]をクリックします。

ファイル選択ダイアログボックスで、[XML読み込みオプションを表示]にチェックを入れ、[内容を結合]でファイルを選択します。

読み込みオプション画面で、モード(M)が、[内容を結合]となっていることを確認し、次の2つにチェックを入れてOKします。

  • タグが一致した場合テキスト要素を表に読み込む(I)
  • 空白のみの要素を読み込まない(D)

「既存の構造に一致する要素のみ読み込む」はチェックを外しておきます。

XML読み込みオプション

下図のようにデータが入りました。

繰り返しデータも読み込まれ、XMLデータでは文字のなかった要素では、InDesignのもとの文字がそのままイキています。

XML組版の手法はさまざま

今回は、XML組版の基本的な手作業の手法を、ひとつ紹介しました。

今回の組版レイアウトの作成では、段落スタイルをあらかじめ適用させておきましたが、XMLのタグと段落スタイルとを紐付け(マッピング)するやり方もあります。

読み込みオプションの設定しだいでは、XSLTを適用して読み込んだり、XMLデータをリンクテキストとすることもできます。
また[内容を追加]にすれば、プレースホルダーには関係なく構造に追加して読み込むこともできます。

XML組版を大量にシステマチックに動かす際には、今回のような一部分だけを手作業するのは現実的ではありません。
ライブラリやスニペットやテンプレートと組み合わせてXMLを読み込む全体の流れを作って、それら全体の動きをスクリプトで制御するなどすると、大量一括処理の流れを作ることができます。