0
這是我一直在摔跤幾個小時,雖然在不同的非工作形式。如何在Indesign中使用XML循環混合內容?
我有一個簡單的XML,我通過文件導入>導入XML
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<page>
<p id="1">
hello <test /> alien world <br /> from space
</p>
<p id="2">
hello <test /> another alien world <br /> from space
</p>
</page>
</doc>
現在我的目標很簡單,即遍歷所有元素。這個工作,直到我想在我的p標籤內的(混合)內容迭代。
// check version
if (parseInt (app.version) > 4 && app.documents.length > 0){
main();
}
function main() {
// get active document
var doc = app.activeDocument;
// get xml that has been imported
var xmlDocument = doc.xmlElements[0];
// get page elements
const page_elements = xmlDocument.evaluateXPathExpression('/doc/page')
// iterate over page elements
for(var x = 0; x < page_elements.length; x++) {
// within each page element look for p elements
const p_elements = page_elements[x].evaluateXPathExpression('./p');
for(var y = 0; y < p_elements.length; y++) {
var child_elements = p_elements[y].evaluateXPathExpression('./node()');
for (var z = 0; z < child_elements.length; z++) {
$.writeln(child_elements[z].markupTag.name);
$.writeln(child_elements[z].contents);
}
}
}
}
問題是,似乎沒有記住子項目的順序。
輸出 - 根據擴展工具包 - 是「外星人來自太空測試br」,而它應該是「hello測試外星人來自太空的世界」。
我自己的基礎,包括使用XmlElements或XmlItems的,但沒有可用這裏的文檔(http://jongware.mit.edu/idcs4js/index_XML%20Suite.html)上佔上風:-(
那我現在在想一個更多鈔票替代方法是閱讀通過JavaScript的XML文件,從字符串創建一個XML對象,並從這裏走的更遠。