2014-04-03 62 views
0

我已经创建了一个脚本,用于选择包含要导入的XML文件的文件夹,创建文档并插入这些XML文件,但脚本以下列结尾消息,这不是非常有用:“执行完成,结果:未定义”。InDesign CS6通过脚本在文档中导入多个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]); 
} 

回答

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; 
} 

别的东西看起来与创建XML结构的INDT的帮助是使用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挣扎。有时候它可能会非常棘手和激烈。

我做了一些漫谈,如果有人发现这有帮助,但仍然无法完成它的工作,我可以详细阐述一个具体问题,所有你需要做的是问! ;)快乐编码!

0

“执行结束结果:未定义”

这意味着 文件被成功地导入。

和InDesign不适用于本声明返回任何值...

+0

即便如此,没有任何反应。文档已创建,我浏览保存XML文件的文件夹,然后在没有任何内容导入的情况下停止。 –

0

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

相关问题