選択したテキストにxmlタグ

[3659]選択したテキストにxmlタグ | 投稿者:ho | 投稿日:2009/09/25(Fri) 12:55:31
indesignCS3のjavascriptの質問です

テキストフレーム内のテキストを選択して選択部分にxmlタグ(選択したテキストの名前)を付けるという作業を繰り返えし行っています。
この作業をjavascriptで半自動化しようと挑戦し詰まっています。

var tagname = app.activeDocument.selection[0].contents;
app.activeDocument.xmlTags.add(tagname,[0,0,0]);

上記ではxmlタグ(選択したテキストの名前)は作成出来るのですがこれでは選択部分にタグが当てる事が出来ていません。

app.activeDocument.selection[0].xmlTags.add(tagname,[0,0,0]);
のように対象を変えて色々試してみましたが上手くいきませんでした。

色々調べて見ましたがこのような記事は見つけることができませんでした。根本的に無理なのでしょうか・・・

どなたかアドバイスよろしくお願いします。
» 1
[3660]Re: 選択したテキストにxmlタグ | 投稿者:せうぞー | 投稿日:2009/09/26(Sat) 20:25:12
タグはInDesign上で付けるよりも、なにかしらのDBを介した方がいいと思うのですが…
という意味で何をされたいのかよく分からない部分もありますので、思わぬ不都合がありかもしれません。
とりあえず。


var my_doc = app.activeDocument;
var my_textFrame = my_doc.selection[0].parentTextFrames[0];
var my_txt = my_doc.selection[0];

var my_root = my_doc.xmlElements[0];//Root要素

var my_textFrame_element = my_textFrame.associatedXMLElement;
if (my_textFrame_element === null) {
   my_textFrame_element = my_root.xmlElements.add("textFrame");
   my_textFrame_element.markup(my_textFrame);
}

var my_txt_element = my_txt.associatedXMLElements[1];
my_txt_element = my_textFrame_element.xmlElements.add("item");
my_txt_element.markup(my_txt);
» 2
[3662]Re: 選択したテキストにxmlタグ | 投稿者:ho | 投稿日:2009/09/28(Mon) 11:03:20
せうぞーさま

手動で行うのとまったく同じことが出来ました。
ありがとうございます!感激です。

既に完成しているファイルに規則性のない部分にユニークIDをふる作業のためDBを介す等は無理そうでしたのでこういう形にしていました。


markup()や、エレメントはxmlタグと同じ事というのは理解できましたが、一ヵ所理解できないのですが10行目の
var my_txt_element = my_txt.associatedXMLElements[1];
というのにはどんな意味があるのでしょうか。
もしよろしかったら教えていただけませんでしょうか?
» 3
[3663]Re: 選択したテキストにxmlタグ | 投稿者:せうぞー | 投稿日:2009/09/28(Mon) 12:06:38
あー、すいません。それは(上のテキストフレームの例と同様に)同じ文字列オブジェクトがすでにタグ付けされているときには処理しないようにと考えた残骸です。
現実的にいろんな重複もあり得るわけで、考えていたら煮えて来たのでさっくり削除しました。
その行を削除して
var my_txt_element = my_textFrame_element.xmlElements.add("item");
だけでもいいかもしれません。よくないかもしれませんけれど^^
» 4
[3664]Re: 選択したテキストにxmlタグ | 投稿者:ho | 投稿日:2009/09/28(Mon) 15:19:58
せうぞーさま

わかりました、問題は無さそうです。
ありがとうございました!
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア