我在xsl中使用if / else条件时遇到问题。在下面的代码片段中,我有一个表从数据库值中获取其值。最初,我的代码看起来像
<fo:table-body>
<xsl:for-each select="//ROWSET3_ROW">
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="cell">
<fo:block>
<xsl:value-of select = "MODIFICATION_NUMBER" />
</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="cell">
<fo:block>
<xsl:value-of select = "STATUS_DATE" />
</fo:block>
</fo:table-cell>
.
.
....
MODIFICATION_NUMBER,STATUS_DATE和其他属性来自xml工作表:
<ROWSET3>
<ROWSET3_ROW>
<MODIFICATION_NUMBER>0</MODIFICATION_NUMBER>
<SURVEY_JOB_STATUS_ID />
<STATUS_DATE>5/13/2008</STATUS_DATE>
<STATUS_NOTES />
在某些情况下,数据库中存在这些值的空值,因此我试图对那些没有值的列设置条件。因此,如果所选值为NULL,则在其中放置一个随机字符,例如“ - ”。我的代码似乎没有工作
<fo:table-cell xsl:use-attribute-sets="cell">
<fo:block>
<xsl:value-of select = "30" />
<xsl:choose>
<xsl:when test = "STATUS_NOTES != ''">
<xsl:value-of select = "STATUS_NOTES"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select = "blank" />
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
这是我试图做的。任何帮助将不胜感激。
答案 0 :(得分:0)
<xsl:choose>
<xsl:when test = "STATUS_NOTES">
<xsl:value-of select = "STATUS_NOTES"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select = "blank" />
</xsl:otherwise>
</xsl:choose>
如果STATUS_NOTES
是空元素,这将有效。如果它也可以包含空字符串,则可以使用test="not(normalize-space(STATUS_NOTES) = '')"
。
答案 1 :(得分:0)
使用强>:
<xsl:value-of select=
"Concat(STATUS_NOTES, substring('blank', 6 - 5*boolean(STATUS_NOTES)))"/>
上述单行使用了定义:
的事实number(true()) = 1
和强>
number(false()) = 0