InDesign CS6通过脚本导入文档中的多个XML文件

时间:2014-04-03 17:11:32

标签: javascript adobe-indesign

我创建了一个脚本,我在其中选择包含我要导入的xml文件的文件夹,创建文档并插入这些XML文件,但我的脚本以下面的消息结束,这不是很有用:“执行结果:未定义“。

任何帮助将不胜感激。

var myDocument = app.documents.add();

var MyFolderWithFiles = Folder.selectDialog ("Choose a folder");
var myFiles = MyFolderWithFiles.getFiles("*.xml");
for(var i = 0; i < myFiles.length; i++) {
    myDocument.importXML(myFiles[i]);
 }

3 个答案:

答案 0 :(得分:1)

这个问题有点陈旧,但没有接受答案,所以我会看看能否提供帮助。

您创建新文档的代码在我看来就像您只是创建一个新的空白文档。您导入的XML如何知道要去哪里?可能有用的一件事是在您完成导入后检查文档中XML的“结构”。

var myDocument = app.documents.add();

当我导入XML时,我不创建新的空白文档,我从具有预定义结构的模板创建新文档,以便InDesign知道将每个XML节点放在模板中的位置。 Here是一个很好的参考,可帮助您开始设置INDT文件。

var myDoc = app.open( '//path/to/myTemplate/myTemplate.indt', OpenOption.OPEN_COPY );
// NOTE: I'm running against an InDesign server, if you're running against your ID GUI then you'll need an extra param on the app.open() call like in the following line
var myDoc = app.open( '//path/to/myTemplate/myTemplate.indt', true, OpenOption.OPEN_COPY ); // This is probably what you'll need to use
// The extra param for showingWindow should be true if running against the ID GUI, this feature is NOT available when executing against the ID server

此外,我设置了我的XML导入首选项 - 您可能与我的不同 - 因此InDesign知道该怎么做,比如说与XML导入结构形成对比的是无法匹配的XML节点。例如,这是我不时使用的xmlImportPreference集之一。

with ( myDoc.xmlImportPreferences )
{
    allowTransform = false;
    createLinkToXML = false;
    ignoreUnmatchedIncoming = false;
    ignoreWhitespace = true;
    importCALSTables = false;
    importStyle = XMLImportStyles.mergeImport;
    importTextIntoTables = false;
    importToSelected = false;
    removeUnmatchedExisting = true;
    repeatTextElements = true;
}

在为INDT创建XML结构的帮助下,要查看的其他内容是使用DTD(文档类型定义)文件。 Here是另一个很好的InDesign和XML帮助参考,它也详细介绍了DTD文件。一个简单的DTD文件的例子可能是这样的。

<!ELEMENT Root (Root*)>
<!ELEMENT Customer(name, Address*)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT Address(street, city, state, zip)>
<!ELEMENT street(#PCDATA)>
<!ELEMENT city(#PCDATA)>
<!ELEMENT state(#PCDATA)>
<!ELEMENT zip(#PCDATA)>

在XML中代表这样的东西:

<Root>
    <Customer>
        <name>Billy Bob</name>
        <Address>
            <street>123 Test Ave</street>
            <city>Testville</city>
            <state>IA</state>
            <zip>12345</zip>
        </Address>
    </Customer>
</Root>

我希望这有助于指出正在努力解决ID和XML问题的人。有时候这可能很棘手,也很有气质。

我确实絮絮叨叨,所以如果有人觉得这很有帮助,但仍然无法让它发挥作用,我可以详细说明具体问题,你所要做的就是问! ;)快乐的编码!

答案 1 :(得分:0)

“执行完毕。结果:未定义”

意味着 文件已成功导入。

  

和indesign不会返回此语句的任何值...

答案 2 :(得分:0)

我是第二个Sulaiman_J。消息表明一切都很顺利。您没有导入任何内容的事实可能与xml导入选项有关。您应该检查手动xml导入并显示xml选项。检查&#34;仅导入与现有结构匹配的元素&#34;。因为如果选中此选项并且正在处理新文档,则不会存在现有结构,导入将不会注入任何节点。 这就是为什么即使InDesign说它也没有注入内容的原因。