2014-04-03 57 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聲明它可能沒有注入內容的原因。

相關問題