這個問題是有點老,但沒有一個公認的答案,所以我會看到,如果我可以提供幫助。
用於創建新文檔的代碼在我看來就像剛剛創建一個新的空白文檔。你正在導入的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掙扎。有時候它可能會非常棘手和激烈。
我做了一些漫談,如果有人發現這有幫助,但仍然無法完成它的工作,我可以詳細闡述一個具體問題,所有你需要做的是問! ;)快樂編碼!
即便如此,沒有任何反應。文檔已創建,我瀏覽保存XML文件的文件夾,然後在沒有任何內容導入的情況下停止。 –