InDesign では XML文書を流し込み組版するための仕組みが予め備わっています。 所定のルールでXMLを書いておき、それを所定の方法で読み込めばよいだけです。
たとえば、こんな感じ…
<?xml version="1.0" encoding="UTF-8"?>
<story xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/" xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">
<Table aid:table="table" aid:trows="3" aid:tcols="2">
<Cell aid:table="cell" aid:theader="" aid:crows="1" aid:ccols="1" aid:ccolwidth="150.0">見出しA</Cell>
<Cell aid:table="cell" aid:theader="" aid:crows="1" aid:ccols="1" aid:ccolwidth="150.0">見出しB</Cell>
<Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="150.0">内容A-1</Cell>
<Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="150.0">内容B-1</Cell>
<Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="150.0">内容A-2</Cell>
<Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="150.0">内容B-2</Cell>
</Table>
</story>
別に難しいことはないですが、 aid: で名前空間を指定してXMLを記述していくのが面倒ですね。
この記述の手間を省くには…… 余計面倒な気もしますが、 とりあえず以下のようにすれば、XML文書から名前空間の記述を省いて作成して、あとからそれを機械的に(バッチ処理などで)追加することも可能です。
名前空間なしのシンプルなXML文書
<?xml version="1.0" encoding="UTF-8"?>
<story>
<Table table="table" trows="3" tcols="2">
<Cell table="cell" theader="" crows="1" ccols="1" ccolwidth="150.0">見出しA</Cell>
<Cell table="cell" theader="" crows="1" ccols="1" ccolwidth="150.0">見出しB</Cell>
<Cell table="cell" crows="1" ccols="1" ccolwidth="150.0">内容A-1</Cell>
<Cell table="cell" crows="1" ccols="1" ccolwidth="150.0">内容B-1</Cell>
<Cell table="cell" crows="1" ccols="1" ccolwidth="150.0">内容A-2</Cell>
<Cell table="cell" crows="1" ccols="1" ccolwidth="150.0">内容B-2</Cell>
</Table>
</story>
以下のXSLで名前空間を追加
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"
xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/"
version="1.0">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:template name="table-proc" >
<xsl:element name="{name()}" >
<xsl:for-each select="@*">
<xsl:attribute name="aid:{name()}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="Cell">
<xsl:call-template name="table-proc" />
</xsl:template>
<xsl:template match="Table">
<xsl:call-template name="table-proc" />
</xsl:template>
</xsl:stylesheet>
たとえば、XML文書が mytable.xml で XSLが convert.xsl だった場合 それらを使って InDesign 用XML文書に変換するには以下のようにします。
xsltproc convert.xsl mytable.xml > mytable-for-indesign.xml
たくさんXML文書を用意する場合は、XSLを使うと楽かもしれない。