InDesignを使用したXML組版について

14/12/16

IT・情報処理室のMです。

 最近、下版後の組版データより2次利用目的としてXMLやExcel等のデータへ書き出す機会が増えてきたので、組版段階からXMLを利用することにより、もう少し効率的に各種データを作成できるのではないかと思いまして、以前より興味がありましたInDesignを使用したXML組版について色々調べてみました。

 まずは手始めに、InDesignのXMLに関連する機能について調べまして、特に優れていると思われる機能がありましたので、いくつか挙げてみたいと思います。

 

●DTDを使用してXMLを検証することが可能
 取り込んだXMLが DTDで設定された規則からはずれていると、InDesign上で警告が出力されるので、文書構造の統一化を図ることができます。
 ※DTDについてはXML文書の構造定義について(1)で説明しています。

undefined

 

●XSLTで定義されたテンプレートに従ってさまざまな構造文書に変換が可能
 XSLTを使用することによりXMLをさまざまな構造文書に変換して『読み込み』『書き出し』することができます。
 ※XSLT(XSL Transformations)は、W3Cにより標準化されたXMLの変換用言語

undefined

 

●段落スタイルまたは文字スタイルにXMLタグをマッピングすることが可能
 InDesign上で定義した段落スタイルや文字スタイルを、XMLタグにマッピングすることが可能で、また、同じタグに複数のスタイルをマップすることもできます。
 ※逆にXMLタグにスタイルをマッピングすることも可能

undefined

 

●タグマーカーおよびタグ付きフレームの表示と非表示の切り替えが可能
 タグマーカーは、ページ上でタグ付きテキストの前後に表示されるブラケットで、タグマーカーを表示することにより、タグ付けされている場所を確認しながら編集作業ができるので視覚的に分かりやすい。

undefined

 

 今回いくつか優れている点を挙げましたが、実際にInDesign上でXMLを扱うには、XMLの基礎技術・利用技術を持ち合わせていないと厳しい印象を受けましたが、組版や2次利用データ作成等を効率的に処理していく上で、XMLの技術は覚えておいて絶対損はしないと思いますので、これを機にInDesignを使用したXML組版に取り組んでみてはいかがでしょうか(私もですが ( ̄∇ ̄) )。

 Adobe® product screenshot(s) reprinted with permission from Adobe® Systems Incorporated.

 


XML文書の構造定義について(4)

19/09/16

IT・情報処理室のMです。

 前回はXML Schema記述例の2行目までしか説明できませんでしたが、今回は残りの行を見ていきたいと思います。

●前回のXML Schema記述例
 <?xml version="1.0"?>
 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="root">
   <xsd:complexType>
    <xsd:sequence>
     <xsd:element ref="data" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="age" type="xsd:nonNegativeInteger" use="required" />
   </xsd:complexType>
  </xsd:element>
  <xsd:element name="data">
    <xsd:complexType>
    <xsd:sequence>
     <xsd:element name=" firstName " type="xsd:string" />
     <xsd:element name=" lastName " type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
 </xsd:schema>

 

  それでは、残りの行を見ていきましょう。

 3行目ではXMLの構造について表現します。今回作成するXML文書のルート要素名は「root」ですので、name属性の値は「root」となります。

 4~9行目までは要素の型定義を表現しています。
 6行目では『xsd:element ref="data"』と宣言していますが、name属性を使用せずにref属性を使用しています。
 ref属性を記述した場合、要素の構造については別の場所で宣言します。そして、ref属性の値に記されている要素、つまり11行目の『xsd:element name="data"』を参照していることになります。 

undefined

 

  また、『minOccurs="0" maxOccurs="unbounded"』と記述されていますが、同じ要素が繰り返し出現する場合は、minOccurs属性およびmaxOccurs属性を使用します。minOccurs属性は、「要素を最低何回記述しなければならないか」を指定する属性で、maxOccurs属性は、「要素を何個まで書くことができるか」を指定します。今回のようにminOccurs属性の値に「0」、maxOccurs属性の値に「unbounded」を指定した場合は、「data要素を0個以上何個でも記述することができる」ことを表しています。

 8行目では属性を定義していますが、属性を定義する際は『xsd:attribute』要素を使用して宣言します。属性の名前は、要素と同じようにname属性の値に指定します。ここでは「age」という名前の属性を宣言するので、name属性の値には「age」と記述します。
 また、『type="xsd:nonNegativeInteger" use="required"』と記述されていますが、type属性は属性のデータ型(属性値としてどのような値が記述できるか)を記述し、use属性は属性の必須/任意や固定値指定などを記述します。今回のようにtype属性の値に「xsd:nonNegativeInteger」、use属性の値に「required」を指定した場合は、「0以上の整数を必ず記述しなければならない」ことを表しています。

 11~18行目までは要素である「data」を定義しており、19行目は終了タグとなります。

 今回もそうですがXML Schemaについて駆け足での説明になってしまいましたが、少しでもXMLに興味を持っていただけたら嬉しいです (*⌒▽⌒*)。


参考サイト:SEのためのXML Schema入門(1)~(3)- @IT

 


XML文書の構造定義について(3)

03/07/16

IT・情報処理室のMです。

 前回は『DTD』と『XML Schema』の異なる点と記述例について書きましたが、今回は『XML Schema』の記述例についてもう少し具体的に説明いきたいと思います。

●前回のXML Schema記述例
 <?xml version="1.0"?>
 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="root">
   <xsd:complexType>
    <xsd:sequence>
     <xsd:element ref="data" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="age" type="xsd:nonNegativeInteger" use="required" />
   </xsd:complexType>
  </xsd:element>
  <xsd:element name="data">
    <xsd:complexType>
    <xsd:sequence>
     <xsd:element name=" firstName " type="xsd:string" />
     <xsd:element name=" lastName " type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
 </xsd:schema>

 では、1行目から確認していきましょう。

 1行目はXML宣言です。XML SchemaはXMLの構造を表すための言語ですが、XML Schemaそれ自体もXML文書ですので、XMLの文法に沿って要素や属性を記述しなければなりません。

 次に2行目はルート要素を示しておりXML Schemaのルート要素は“schema”になります。
ですが、要素名“schema”の頭に、“xsd:”という文字列が記述されていますが、これは『名前空間』と呼ばれる代物です。

 ところで名前空間とは何かというと、XMLでは、要素や属性などを自由に作成することができますので、もしかしたらschemaという名前の要素が、どこかでまったく別の用途に使用されているかもしれません。
 そこで、「ここでのschemaという要素は、XML Schemaで定義されたものである」ということを、明確に指示する必要があり、そのためXMLには名前空間と呼ばれる仕組みが用意されています。

 

undefined

 

 「xmlns:xsd="http://www.w3.org/2001/XMLSchema"」※1の部分ですが、「要素名の先頭にxsd:と付いたら、“http://www.w3.org/2001/XMLSchema”で定義された要素である」と宣言しています。これを『名前空間宣言』といいます。
 また、“xsd”を使って“xsd:schema”と書くと、「XML Schemaのschema要素」という意味になり、この例の“xsd”のことを、『名前空間接頭辞※2といいます。

 やっと3行目からXML文書の構造定義について表記していくのですが、前回同様に今回も説明が長くなってしまいましたので、次回に詳しい説明をしたいと思います。


※1 “http://www.w3.org/2001/XMLSchema”はXML Schemaを表す識別子(名前空間URI)なのですが、特にURIに決まりはなく他と違えばなんでもよいのですが、“http://www.w3.org/2001/XMLSchema”をURIとして使用することが多いようです。

※2 名前空間接頭辞は単に各要素を結びつける役割を果たすだけの文字列ですので、“xsd”だけではなく任意の文字列を使用することができます。

参考サイト:SEのためのXML Schema入門(1):簡単なXML Schemaから始めよう - @IT

 


← 古い記事