如何检查属性的值是否为null或者属性值中的字符长度是否大于0

时间:2009-09-10 07:12:24

标签: xslt

s0SelectedSite是表的类或列的属性。

<xsl:if test="string-length(@s0SelectedSite) &gt; '0'">
<tr>
  <td width="50%" bgcolor="#C0C0C0"><font size="2"><b>Selected Site:</b></font></td>
  <td><font size="2">&#160;<xsl:apply-templates select="DBE:Attribute   [@name='s0SelectedSite']"/></font></td>
</tr> 
</xsl:if>

在上文中,s0SelectedSite的值存在,但仍未打印行。

例如。它应显示以下内容: -

Selected Site:             Singapore

如果出现问题,请告诉我。

4 个答案:

答案 0 :(得分:2)

我发现这通常适用于检查标签是否已填充

<xsl:if test="@s0SelectedSite !=''">

你能不能提供xml的样本,因为我一直都在使用它,我想知道xpath是否是问题。

答案 1 :(得分:1)

  1. 尝试<xsl:if test="string-length(@s0SelectedSite) &gt; 0">(而不是'0')。
  2. 试试<xsl:if test="@s0SelectedSite">,看看它是否适合您。

答案 2 :(得分:0)

我现在尝试过这种方式 - &gt;它对我有用:

<xsl:choose>
  <xsl:when test="string-length(DBE:Attribute[@name='s0SelectedSite']/node()) &gt; 0"> 
    <table>
...
    </table>
  </xsl:when>
  <xsl:otherwise>
    <table>
...
    </table>
  </xsl:otherwise>
</xsl:choose>

答案 3 :(得分:0)

以下是我在模板中使用它的方法。 它匹配的每个@dateEnd都不是空的。

<xsl:template match="@dateEnd[. != '']">
   ...
</xsl:template>