Как узнать родительский элемент XML из абзаца textFrame с помощью скриптов indesign - PullRequest
1 голос
/ 04 февраля 2020

У меня есть TextFrames, помеченные меткой сценария, а абзацы внутри текстового фрейма имеют метку абзаца, а некоторые абзацы сгруппированы в XML и имеют имя тега. Я пытаюсь сопоставить метку сценария со структурой XML документа, чтобы понять, какой абзац необходимо поместить в какой конкретный текстовый фрейм, для чего я перебираю все абзацы и затем ищу родительский элемент XML, но его inturn дает мне документ root.

Пример кода:

// 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 Scripting

Я не уверен, что что-то упустил,

Я попробовал Склейте Code.jsx , чтобы извлечь теги XML, но я бы хотел получить его из абзаца текстового фрейма, поскольку код клея не имеет никакого отношения к макету страницы с текстовыми фреймами, и он будет предоставить всю структуру.


Например:

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

При условии, что все эти абзацы присутствуют в текстовом фрейме с именем 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>¶

Не уверен, почему он не получает root для C3-1, Кто-то, пожалуйста, дайте мне знать, если я делаю это где-то не так.

...