xsl:什么时候不在xsl-fo中工作?

时间:2015-11-24 10:40:54

标签: xml xslt xsl-fo

我有这样的示例代码:

<fo:block>
    <xsl:value-of select="totalsForMonth/@totalI" />
</fo:block>

<xsl:when test="totalsForMonth/@totalI != '0.0'">
    <fo:block>
        <xsl:value-of select="totalsForMonth/@totalI" />
    </fo:block>
</xsl:when>

输出将是:

13.0

在导出的pdf中。

我期待看到

13.0
13.0

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您正在将xsl:whenxsl:if混合。

xsl:when用于在xsl:choose块(http://xml.apache.org/xalan-j/xsltc/xsl_choose_design.html)中选择不同的案例。对于单个测试,请使用xsl:ifhttp://xml.apache.org/xalan-j/xsltc/xsl_if_design.html)。

与C或Java相比:xsl:chooseswitch语句完全不同,只是条件when块中而不在choose块中if .. else if ..本身。这意味着您可以在每个测试中添加任何测试,更像是一个长链xsl:otherwise块,其中else具有最终SELECT (CASE WHEN SrNo = 1 THEN ANAME ELSE '' END) AS ANAME , BNAME FROM ( SELECT ROW_NUMBER OVER (PARTITION BY dbo.A.NAME ORDER BY dbo.B.NAME) AS SrNo, dbo.A.NAME AS ANAME, dbo.B.NAME AS BNAME FROM dbo.A LEFT OUTER JOIN dbo.B ON dbo.A.AID = dbo.B.AID ) AS tbl 的角色。