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 引擎循环遍历每个productXML 元素,并根据元素的属性将超链接应用于文本。

这是一个例子:

#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 回答