XML要素の要素名・内容・属性・属性値にアクセスする

InDesign
スポンサーリンク

InDesignでのXML技術の活用の仕方は、制作の現場によって千差万別です。

ドキュメント全体のXML構造を意識した本格的なXML組版をするなら、それは素晴らしいし、それこそがXML組版の真骨頂。

だけど、いつもいつもそんなXMLの使い方をしなくちゃいけないわけじゃない。
ちょっとした目印程度にXMLタグを利用することだって大いにある。

ここでは、「ちょっとした目印として文字列にXMLタグをつけている」ような場合にも大活躍する、XML要素に内容を入れたり、属性を設定したりするスクリプトを紹介します。

ドキュメントサンプル

ページ内に<著者紹介>のXMLタグのついたテキストフレームがひとつあります。

さらに、その中のテキストの最後に<著者>のXMLタグありますが、内容が入っていないので、ここにXML要素の内容としてスクリプトでテキストを入れます。

画面左の構造画面を見ると、<著者>に “id”属性がありますが、値は “0000” なのでこれも変更して、さらに新しい属性とその属性値を追加します。

XML要素にアクセスするサンプルドキュメント

コードサンプル

#target indesign

var objDoc = app.activeDocument;
var objXMLEle = objDoc.xmlElements[0].xmlElements[0].xmlElements[0];

// XML要素名
var strTagname = objXMLEle.markupTag.name;
// XML要素の内容
var strContents = objXMLEle.contents;
// XML要素の属性名
var strAttname = objXMLEle.xmlAttributes[0].name
// XML要素属性値
var strAttvalue = objXMLEle.xmlAttributes[0].value
// 今のタグの状態を表示
alert ("XMLタグの名前: " + strTagname + "\n\n" +
        "XML要素の内容: " + strContents + "\n\n" +
        "XMLタグの属性名: " + strAttname + "\n\n" +
        "XMLタグの属性値: "  + strAttvalue );

// 値を変更する
objXMLEle.contents = "リプちん";
objXMLEle.xmlAttributes[0].value = "1234";

// 新たな属性の追加とその値の設定
objXMLEle.xmlAttributes.add("性格", "のんき");

実行経過/実行結果/解説

コードサンプルの6〜13行目で、今のページの内容を変数に取得して、15行目でアラート表示しています。

XML要素にアクセスするサンプルドキュメントの内容表示

アラートはそのままOKボタン進み、で21行目で、<著者>の要素を「リプちん」と設定、22行目でid属性の値を「1234」と入れました。

最後に「性格」という名前で属性を追加するのと同時に、値を「のんき」に設定しています。

XML要素の内容と属性値が変更されたドキュメント

コメント

タイトルとURLをコピーしました