Monday, July 14, 2008
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/>など)に置き換えるといった処理でなんとかなるのではないかと。