从多个导入的XSLT中进行选择

时间:2019-01-03 20:44:41

标签: xml xslt

我正在尝试选择一个XSLT文件以应用于我的整个XML输入文件。我不确定该怎么做。我想做的就是这个。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0">
  <xsl:import href="a.xslt" />
  <xsl:import href="b.xslt" />      
  <xsl:output method="xml" indent="no" omit-xml-declaration="yes" />

  <xsl:template match="/">
    <xsl:choose>
      <xsl:when test="(/*[local-name()='1'])>
        ---------Apply file a.xslt here----------
      </xsl:when>
      <xsl:when test="(/*[local-name()='2'])>
        ----------Apply file b.xslt here-------------
      </xsl:when>
    </xsl:choose>
  </xsl:template>    

</xsl:stylesheet>

我想根据我的XML输入应用不同的XSLT文件。有什么方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

在XSLT 3.0中,您可以直接使用fn:transform()函数执行此操作。

如果您无法访问XSLT 3.0,通常的解决方案是使用模式:使用不同的模式在a.xslt和b.xslt中定义模板规则,并以适当的模式应用模板。

(偶然地,元素的local-name()永远不会是数字。)