XSLT隐藏元素IF字符串为空

时间:2013-03-11 10:17:54

标签: xslt

我想隐藏“imageText”,div IF字符串为空。目前,此imageText将文本叠加到具有背景颜色的图像上(文本在Umbraco中指定)。

我已经尝试过了:

<xsl:if test = "imageText" != ''">

有人可以帮我解决这个问题吗?

这是我的代码:

<td width="300" height="114" valign="top">

    <div class="imageTitle">
    <xsl:call-template name="getText">
      <xsl:with-param name="imageText" select="$bottomImageLeftText" />
    </xsl:call-template>   
    </div>

    </td>

3 个答案:

答案 0 :(得分:1)

文本是名为imageText的元素,还是名为$bottomImageLeftText的变量?好像是后者,所以请试试这个:

<td width="300" height="114" valign="top">
  <xsl:if test="$bottomImageLeftText != ''">
    <div class="imageTitle">
      <xsl:call-template name="getText">
        <xsl:with-param name="imageText" select="$bottomImageLeftText" />
      </xsl:call-template>   
    </div>
  </xsl:if>
</td>

答案 1 :(得分:0)

您需要对要传递给with-param的值进行条件调整,而不是参数名称(在调用模板中只有有意义的)。因此将div元素包装在

<xsl:if test="string($bottomImageLeftText)">

如果$bottomImageLeftText的字符串值非空 - 这将包括div及其内容 - 其中包括仅包含空格的情况。如果你想要处理空格 - 只有完全空白,你可以使用

<xsl:if test="normalize-space($bottomImageLeftText)">

答案 2 :(得分:0)

我会尝试这样的事情:

<!-- Code which calls the getText template and passes the bottomImageLeftText variable -->
<xsl:call-template name="getText">
  <xsl:with-param name="imageText" select="$bottomImageLeftText" />
</xsl:call-template>

<!-- getText template which checks the param imageText for an empty string. -->
  <xsl:template name="getText" >
    <xsl:param name="imageText" />

    <xsl:if test="$imageText" >
      <div class="imageTitle">
        <!-- your code, display image title -->
      </div>
      </xsl:if>
  </xsl:template>