首页 > 解决方案 > 如何使用 indesign 脚本从 textFrame 段落中找出 XML 的父元素

问题描述

我有用脚本标签标记的 TextFrames,并且文本框架内的段落有一个段落标签,并且一些段落在 XML 中组合在一起并给出了一个标签名称。我正在尝试将脚本标签与文档的 XML 结构相匹配,以了解需要将哪个段落放置在哪个特定的 TextFrame 中,我正在遍历所有段落,然后搜索父 XML 元素,但它反过来给了我文档根目录。

示例代码:

// to get the parent markup tag name
TextFrame.paragraphs[2].associatedXMLElements[0].parent.markupTag.name
// this works perfectly for to get the markup for a given paragraph
TextFrame.paragraphs[2].associatedXMLElements[0].markupTag.name

段落和相关XMLElements 的文档都有父级来提取标记标签名称

段落 - Indesing Scripting

pc_XMLItem - Indesing 脚本

我不确定我是否遗漏了什么,

我确实尝试了Glue Code.jsx来提取 XML 标记,但我想从文本框架的段落中获取它,因为胶水代码对带有文本框架的页面布局没有任何影响,它将提供整个结构.


例如:

- Chapter
 - C1
 - C2
 - C3
  - C3-1
  - C3-2
 - C4
 - C5

假设所有这些段落都存在于一个名为TextFrame No iam 的 textFrame 中,将所有段落作为

for (eachP = 0; eachP < TextFrame.paragraphs.length; eachP++) {
    allAssociatedXMLElements = TextFrame.paragraphs[eachP].associatedXMLElements.length
    for (eachAsXML = 0; eachAsXML < allAssociatedXMLElements; eachAsXML++) {
        $.writeln(TextFrame.paragraphs[eachP].associatedXMLElements[eachAsXML].markupTag.name)
    }
$.witeln(" -- ")
}

这给了我

Chapter
C1
 -- 
Chapter
C2
 -- 
Chapter
 -- 
C3
C3-2
 -- 
Chapter
C4
 -- 
Chapter
C5

XML Structure

<C1>Content1</C1>¶
<C2>Content2</C2>¶
<C3>
    <C3-1>Content5</C3-1>¶
    <C3-2>Content6</C3-2>¶
</C3>
<C4>Content3</C4>¶
<C5>Content4</C5>¶

不知道为什么它没有得到根C3-1,如果我在某处做错了,请告诉我。

标签: javascriptscriptingadobe-indesignextendscript

解决方案


推荐阅读