InDesign CC 2014导入XML应用XSLT时支持node-set()函数吗?所用处理器是什么?
核心疑问解答
InDesign CC 2014 内置的XSLT处理器类型
- 这款版本的InDesign没有绑定独立的第三方XSLT处理器,XML导入流程中用到的XSLT能力,是Adobe基于Java标准库自带的基础XSLT 1.0引擎裁剪定制的版本
- 定制过程中Adobe移除了绝大多数第三方扩展函数的注册加载逻辑:既没有集成EXSLT公共扩展函数库,也没有挂载Xalan专属的扩展函数模块,从底层不支持任何非XSLT 1.0官方规范定义的自定义函数
能否在InDesign的XML导入流程中使用node-set函数
- 走默认的「文件」→「Import XML...」选择应用XSLT的流程时,无法直接使用任何版本的node-set类扩展函数
- 你遇到的两次报错并非命名空间声明错误、函数名拼写错误导致:不管是EXSLT标准定义的
ext:node-set,还是Xalan实现的xalan:nodeset,都不属于XSLT 1.0官方规范内置函数的覆盖范围,而InDesign内置的裁剪版处理器根本没有为这两个函数编写对应实现,无论怎么调整命名空间匹配规则,都会抛出函数不支持的错误
实际可落地的替代方案
- 前置完成XSLT转换:在本地用支持EXSLT扩展的独立XSLT处理工具跑完整套XSLT逻辑,生成符合InDesign导入格式要求的最终XML,再直接导入生成的XML文件,跳过InDesign内置的XSLT处理环节
- 改写XSLT逻辑绕开node-set依赖:调整模板结构,把原本需要靠node-set转换才能遍历的临时节点树,直接通过模板匹配规则输出到XML根节点下的固定独立位置,后续逻辑直接遍历该位置的节点,不需要对临时节点做集合转换
内容的提问来源于stack exchange,提问作者Alexander Dyuzhev
相关产品推荐
相关产品推荐

