将 XML 个元素链接到 InDesign 中的页面项目

Linking XML elements to page items in InDesign

我可以像这样检查 selected 文本的 XML:

app.selection[0].associatedXMLElements[0];

但在我的研究中,我仍然对如何使用脚本对 XML 做最基本的事情摸不着头脑:如何将 XML 分配给项目?我可以通过打开结构窗格,然后将元素拖到页面上所需的框架上来手动执行此操作。如果可以用老式的方式,我想用脚本也可以。

您可以引用 xml 节点和文本框并使用 placeXML

    myXMl = myDoc.xmlElements[0];

    var myXmlNode = myXMl.evaluateXPathExpression("/myXML/node1")[0];

    var myFrame =  app.activeDocument.pages[0].textFrames[0];

    myXmlNode.placeXML(myFrame);

这种方法的优点是任何 aid:pstyle 或 aid:cstyle 都将自动链接到现有的匹配样式

另一种方法是 select 将节点的值作为文本并将其放入文本框中的插入点:

 myXMl = myDoc.xmlElements[0];

 var myText = myXMl.xpath("/myXML/node1[1]/text()");

 var myFrame =  app.activeDocument.pages[0].textFrames[0];

 myFrame.parentStory.insertionPoints[-1].contents = myText + '\r';

有两个特定的属性。 AssociatedXMLElement 适用于包含 textFrames 的 pageItems,如果未应用标记,则可能为空。 AssociatedXMLElements 仅适用于文本对象(字符、单词...),因为它们可以应用多个标签。请注意,非标记文本 return 是一个空数组而不是 null。

将标签关联到 pageItems 要求您首先创建或定位现有的 xml 元素,然后使用 myInDesignObject.markup ( myXMLElement )。

一旦您想浏览 XML 结构,Nicolai 建议的 EvaluateXPathExpression 就很有趣。但有时从对象中调查关联的 XML 元素确实比调查 xml 结构更快。

FWIW