我有一个散落着以下评论的XSLT文件:
<xsl:comment>Entering shipping block</xsl:comment>
有没有办法明确禁用这些注释,以便它们不会在生产中的运行时输出? XSLT文件的输出显示在公共API中,因此虽然它对调试很有用,但我宁愿能够将其关闭。
我能想到的唯一方法是在开发模式中设置一个标志来打开注释:
<xsl:if test="$enableDebug='true'">
<xsl:comment>Entering shipping block</xsl:comment>
</xsl:if>
还有其他办法吗?
(我正在使用XSLT 2.0。)
答案 0 :(得分:1)
只需在部署到生产中包含此转换步骤:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="comment()"/>
</xsl:stylesheet>
我甚至没有在indent
上指定任何<xsl:output>
属性,以防可读性不是目标。
答案 1 :(得分:0)
您可以在XSL的最顶部声明变量verbose
:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="UTF-8" indent="yes" method="xml"/>
<xsl:variable name="verbose">1</xsl:variable>
<xsl:template match="@*|node()">
<xsl:copy>
...
并将您的评论包装在<xsl:if>
中,如下所示:
<xsl:if test="$verbose">
<xsl:comment>Applying the template...</xsl:comment>
</xsl:if>
如果您想暂时停用评论,只需从1
变量中移除verbose
:
<xsl:variable name="verbose"></xsl:variable>