Index > InDesign(CS3)でXML書き出ししたときの改行(u2029 = PARAGRAPH SEPARATOR)の取り扱い方法
Mon, July 14, 2008

InDesign(CS3)でXML書き出ししたときの改行(u2029 = PARAGRAPH SEPARATOR)の取り扱い方法

InDesignでXML書き出しするときに、改行情報はどうなるのか?の調査。

このエントリは移動しました.

改行がどう扱われるか

現在、 XMLを意識しないで作成されたInDesign文書をXML化する仕事をしている。
InDesign上で 各テキストフレームを選択して→タグ作成 の繰り返しで、構造化した上で、 構造ウインドウメニューから[XMLの書き出し]を 選択するとXMLが書き出される。
(このとき「改行、空白、特殊文字を再マップ」オプションはチェックしない)

書き出されたXMLファイルをメモ帳などで開くと、 ぱっと見た感じでは、改行コードは入っていないように見える。 しかし、実際にはInDesign上で改行した位置に何か文字が入っていることは わかる。

何が入っているかわからなかったので、Javaを使って調べるコードを書いた。 (あとでわかったのだが、emacsで開くと改行位置に確実に何か文字があることが わかる。なんの文字かはわからないから、やはり調べる必要がある。)

テスト用コード

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class Test {

    public static void main(String[] args) {

        File f=new File("sample.xml");
        try{
            FileInputStream fin=new FileInputStream(f);
            InputStreamReader r=new InputStreamReader(fin,"UTF-8");

            int ch=0;
            while( (ch=r.read())!=-1 ){

                System.out.print((char)ch);
                System.out.print("->");
                System.out.println(Integer.toHexString(ch));
            }
            r.close();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

テスト対象となるXMLファイル(InDesignから書き出したXMLの抜粋)

ボイスレコーダー
品番 120RM

実行結果の抜粋

ボ->30dc
イ->30a4
ス->30b9
レ->30ec
コ->30b3
ー->30fc
ダ->30c0
ー->30fc
?->2029

->0
品->54c1
番->756a

※ボイスレコーダーの直後に改行(u2029)が入っていることがわかる。 (その後ろにも何か文字があり気になるが、まだ調べはついていない。)

参考ページ

翻訳時のトラブルの可能性

この件でネットをさまよっていると、InDesignから書き出したXMLをトラドスで翻訳するときに、 この改行がらみで、不都合があるという書き込みを見つけた。

その書き込んだ方によるとトラドスは、

  1. 改行コードを見つけられない
  2. 本来改行前までをひとつの文として認識してほしいところを、次の行までふくめてひとつの文として認識してしまう(ゆえに不都合)

とのこと、現在のバージョンのトラドスでも起きるのかは不明だが、 この仕事でも書き出したXMLをベースに多言語に翻訳をしていくため、他人事ではない。

対応策

XMLデータをトラドスに渡す前に u2029 の改行コードを別の文字列(たとえば
など) に置き換えるといった処理でなんとかなるのではないかと。

 Twitter
follow me on Twitter
 Categories