你可以根据输出格式分支xslt吗?

时间:2011-02-21 15:42:54

标签: xslt xslt-1.0

我正在创建一个xlst脚本,并想知道是否可以根据输出格式分支一些代码?

在我的xlst文件之上,我有这个:

<xsl:output 
 version="4.0" 
 method="html" 
 indent="no" 
 encoding="UTF-8" 
 use-character-maps="spaces"/>

因此,我认为有一些东西需要咨询某种全球性的事情:

<xsl:if test='global_output is html'>
      do this
</xsl:if>

谢谢!

2 个答案:

答案 0 :(得分:3)

如果要创建样式表的变体以供在不同情况下使用,请不要在模板规则中放置if / then / else代码以在运行时测试条件。这样你最终会得意大利面。创建两个样式表模块到-html.xsl和to-xml.xsl,并导入包含共享代码的模块common.xsl。当需要调用两种情况之间不同的功能时,common.xsl模块可以回调导入模块。这两种情况之一的差异当然是xsl:output声明本身。

答案 1 :(得分:0)

在1.0中可以使用:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output version="4.0"
    method="html" indent="no" encoding="UTF-8"/>
    <xsl:template match="/*">
        <xsl:if test="document('')/*/xsl:output/@method = 'html'">
            Output method is HTML
        </xsl:if>
        <xsl:if test="document('')/*/xsl:output/@method = 'xml'">
            Output method is XML
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

可能在XSLT 2.0中有一种更为分类的方法。