2009-03-04 13 views
5

Benim kodum aşağıdaki XML üretir:<Xsl: for-each> kullanırken sıfır kayıtları nasıl test edersiniz?

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

XSLT kullanarak, kişi kayıtlarını şu şekilde ayrıştırıyorum:

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

Ancak, sıfır kişi aldığım durumlarda, görüntülemek istiyorum " Hiçbir kayıt bulunamadı "(veya benzer bir şey). Uygulamanın sıfır kayıtları döndüğünde, XML aşağıdakine benzer:

<person_app/> 

Uzun hikaye kısa, < xsl: for-each/> kullandığımda boş bir sonuç kümesi için nasıl test edebilirim? Aşağıdakileri başarı ile denedim:

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

Ugh. Anladım. Sıfır kayıt olduğunda şablonla eşleşmiyor. – Huuuze

cevap

7

şey:

<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> 
+0

Zar yok. Bu da işe yaramadı. – Huuuze

+0

Garip olmalı. – andynormancx

+0

Katılıyorum. İşleri bile çok basit parçalara ayırdım ve hala hiçbir şey. – Huuuze

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> 
İlgili konular