我是Adobe Indesign的新手,但我对各种编码语言都很满意。
我想创建一个基于网络的文档,其中列出了一些产品和产品描述,每个产品描述都充当了在线产品本身的超链接。
我已经创建了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并知道每个产品都会链接到相关的超链接。
非常感谢任何帮助。
答案 0 :(得分:3)
XML与InDesign DOM对象断开连接。您必须明确定义哪个XML元素与哪个InDesign对象一起使用,通常是通过标记。通过为product
XML元素提供一个href
属性,您实际上并没有告诉InDesign它是一个超链接。
为了告诉InDesign 是超链接,您可以使用InDesign javascript引擎遍历每个product
XML元素,并根据元素的属性将超链接应用于文本。
以下是一个例子:
#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;
}
}
}
可能有一种更简单的方法,但我不知道。