在使用<xsl:for-each>?</xsl:for-each>时,如何测试零记录?

时间:2009-03-04 21:12:22

标签: xslt

我的代码生成以下XML:

<person_app>
  <person_data>
    <person>
         ...person details here...
    </person>
  </person_data>
</person_app>

使用XSLT,我按如下方式解析人员记录:

<xsl:template match="/person_app/person_data">
  <xsl:for-each select="person">
      ...generate person HTML...
  </xsl:for-each>
</xsl:template>

然而,在我收到零人的情况下,我想显示“没有找到记录”(或类似的东西)。当应用程序返回零记录时,XML类似于以下内容:

<person_app/>

长话短说,当我使用&lt; xsl:for-each /&gt;时,如何测试空结果集?解析我的人事记录?我试过以下但没有成功:

<xsl:if test="not(person)">
  <div style="font-size:18pt"><xsl:text>No records found</xsl:text></div>
</xsl:if>

2 个答案:

答案 0 :(得分:7)

这样的事情:

<xsl:choose>
  <xsl:when test="person">
    <xsl:for-each select="person">
       ...generate person HTML...
    </xsl:for-each>
  </xsl:when>
  <xsl:otherwise>
    <div style="font-size:18pt"><xsl:text>No records found</xsl:text></div>
  </xsl:otherwise>
</xsl:choose>

答案 1 :(得分:2)

<xsl:template match="/person_app/person_data">
  <xsl:if test="count(person) = 0">
    <div style="font-size:18pt"><xsl:text>No records found</xsl:text></div>
  </xsl:if>
  <xsl:for-each select="person">
      ...generate person HTML...
  </xsl:for-each>
</xsl:template>