使用Java将XSLT与import/include语句合并

使用Java将XSLT与import/include语句合并,java,xslt,saxon,xalan,Java,Xslt,Saxon,Xalan,假设我有两个xslt A和B。在xslt A中,我们有一个import/include语句来使用B中的某个模板。在Java中有没有一种方法可以生成结果xslt(A与导入的模板合并)??有可能吗 SAXON有一种导出已编译XSLT的方法,但不幸的是,已编译XSLT具有指向导入XSLT的链接,这是我们不希望看到的。欢迎您的任何意见 在这方面还没有研究过XALAN。为什么要使用Java,而不是XSLT 大部分工作都很简单,可以通过几个模板规则来完成: <xsl:mode on-no-match=

假设我有两个xslt A和B。在xslt A中,我们有一个import/include语句来使用B中的某个模板。在Java中有没有一种方法可以生成结果xslt(A与导入的模板合并)??有可能吗

SAXON有一种导出已编译XSLT的方法,但不幸的是,已编译XSLT具有指向导入XSLT的链接,这是我们不希望看到的。欢迎您的任何意见


在这方面还没有研究过XALAN。

为什么要使用Java,而不是XSLT

大部分工作都很简单,可以通过几个模板规则来完成:

<xsl:mode on-no-match="shallow-copy"/>
<xsl:mode name="nested" on-no-match="shallow-copy"/>

<xsl:template match="xsl:stylesheet | xsl:transform" mode="nested">
  <xsl:apply-templates mode="nested"/>
</xsl:template>

<xsl:template match="xsl:import | xsl:include" mode="#all">
  <xsl:apply-templates select="document(@href)" mode="nested"/>
</xsl:template>

但是,如果使用了某些XSLT功能,则会出现一些复杂情况,例如:

  • 导入先例可能无法正确转换

  • xsl:apply-imports
    不起作用

  • xsl:stylesheet
    上具有模块作用域的属性(例如
    exclude result prefixes
    )将丢失


是的!你应该再描述一下你的尝试,我投了赞成票(因为这是你要求的合理的事情,我认为,只是以一种值得改进的形式)来撤销反对票(不是我)。谢谢迈克尔·凯。我们也可以使用XSLT。”我也会朝这个方向探索。由于“导入优先级”,我假设JAVA处理器可以提供帮助,这就是我计划使用JAVA的原因。导入优先级算法相当棘手,但在XSLT中实现并不比在任何语言中实现更困难(我们已经做到了)。