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の抜粋)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
<div>ボイスレコーダー
品番 120RM</div>
</Root>
実行結果の抜粋
ボ->30dc
イ->30a4
ス->30b9
レ->30ec
コ->30b3
ー->30fc
ダ->30c0
ー->30fc
?->2029
->0
品->54c1
番->756a
※ボイスレコーダーの直後に改行(u2029)が入っていることがわかる。 (その後ろにも何か文字があり気になるが、まだ調べはついていない。)
この件でネットをさまよっていると、InDesignから書き出したXMLをトラドスで翻訳するときに、 この改行がらみで、不都合があるという書き込みを見つけた。
その書き込んだ方によるとトラドスは、
とのこと、現在のバージョンのトラドスでも起きるのかは不明だが、 この仕事でも書き出したXMLをベースに多言語に翻訳をしていくため、他人事ではない。
対応策
XMLデータをトラドスに渡す前に u2029 の改行コードを別の文字列(たとえば<br/>など) に置き換えるといった処理でなんとかなるのではないかと。