使用XSLT 1将一个XML文件拆分为多个XML文件,用于InDesign

时间:2015-08-27 14:46:58

标签: javascript xml xslt adobe-indesign

早上好,

在InDesign中,我尝试使用具有以下结构的XML创建多个数据库记录:

<Root>
     <record>
     </record>
     <record>
     </record>
</Root>

我完全有XML导出,但是我想应用XSLT来打破每个记录的这些单独文件,并将记录作为每个记录的根。例如:

File1.xml:
<record>
</record>

File2.xml:
<record>
</record>

我使用Google搜索并看到有人说您不能将XSLT 2.0功能与InDesign导出功能一起使用。是否可以使用XSLT 1.0执行此操作?

谢谢!

2 个答案:

答案 0 :(得分:0)

我对InDesign XSLT引擎并不这么认为。相反,脚本可以通过导出到xml特定节点来工作:

&#13;
&#13;
var main = function() {
	var root, records, f, n, doc;
	
	if ( !app.documents.length ) return;
	
	doc = app.activeDocument;
	root = doc.xmlElements[0];
	
	records = root.evaluateXPathExpression ( "./record" );
	n = records.length;
	
	while ( n-- ) {
		f = File ( Folder.desktop+"/"+doc.name.replace (".indd", "")+"_"+(n+1)+".xml" );
		records[n].exportFile ( ExportFormat.XML, f );
	}
}


main();
&#13;
&#13;
&#13;

答案 1 :(得分:0)

Loic是正确的,InDesign使用XSLT 1.0引擎,我认为CC 2015仍然如此。

另一种选择是导出XML未转换并运行外部脚本,调用您选择的XSLT 2.0引擎来转换XML。