我正在创建一个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>
谢谢!
答案 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中有一种更为分类的方法。