2

私は Adob​​e Indesign にかなり慣れていませんが、さまざまなコーディング言語に問題はありません。

オンライン製品自体へのハイパーリンクとして機能する各製品説明を使用して、いくつかの製品と製品説明をリストする Web ベースのドキュメントを作成したいと考えています。

XML 経由でインポートしたいさまざまな属性をリストする XML を作成するところまで来ましたが、ハイパーリンクとして機能する URL を定義するのに問題があります。

私の現在のxmlは次のようになります。

<?xml version="1.0" encoding="utf-8"?>

<list>

<product href="http://www.google.co.uk">
<BrandName>Brand 1</BrandName>
<Title>Shirt</Title>
<FullPrice>£25</FullPrice>
<ProductCode>ABC123</ProductCode>
</product>

<product href="http://www.google.co.uk">
<BrandName>Brand 2</BrandName>
<Title>Jacket</Title>
<FullPrice>£20</FullPrice>
<ProductCode>DEF456</ProductCode>
</product>

</list>

ただし、機能していません。私はおそらく本当に単純なものを見逃していますが、現在途方に暮れています。

要素を構造から自分のページにドラッグし、PDF として保存し、各製品が関連するハイパーリンクにリンクされることを知りたいだけです。

どんな助けでも大歓迎です。

4

1 に答える 1

3

XML は InDesign DOM オブジェクトから切り離されています。通常はタグ付けによって、どの XML 要素がどの InDesign オブジェクトに対応するかを明示的に定義する必要があります。productXML 要素に属性を与えることhrefで、それがハイパーリンクであることを InDesign に実際に伝えません。

ハイパーリンクであることを InDesign に伝えるに、InDesign の JavaScript エンジンを使用して各 XML 要素をループproductし、要素の属性に基づいてハイパーリンクをテキストに適用します。

次に例を示します。

#include "./XML Rules/glue code.jsx"

main();

function main() {
   var doc = app.activeDocument;
   var elems = doc.xmlElements;
   var ruleSet = new Array (new Rule);
   __processRuleSet(elems[0], ruleSet);

   function Rule() {
      this.name = "Rule";
      this.xpath = "//product[@href]";
      this.apply = function(elem, ruleProcessor) {
         var elemText = elem.texts[0];
         var linkURL = elem.xmlAttributes.itemByName("href").value;
         var linkSource = doc.hyperlinkTextSources.add(elemText);
         var linkDest = doc.hyperlinkURLDestinations.add(linkURL);
         doc.hyperlinks.add(linkSource, linkDest);
         return true;
      }
   }
}

もっと簡単な方法があるかもしれませんが、私はそれを知りません。

于 2012-11-03T01:59:20.050 に答える