2009-03-04 11 views
5

mio codice genera il seguente codice XML:Come si esegue il test per zero record quando si utilizza <xsl: for-each>?

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

Usando XSLT, ho analizzare il record persona come segue:

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

Tuttavia, nei casi in cui ricevo a zero la gente, mi piacerebbe visualizzare "Nessun record trovato" (o qualcosa di simile). Quando l'applicazione restituisce zero record, l'XML è simile al seguente:

<person_app/> 

Per farla breve, come posso provare per un set di risultati vuoto quando uso < xsl: for-each/> per analizzare il mio record di persona? Ho provato la seguente senza successo:

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

Ugh. Capito. Non riesce ad abbinare il modello quando ci sono zero record. – Huuuze

risposta

7

Qualcosa di simile a questo:

<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

Nessun dado. Neanche questo ha funzionato. – Huuuze

+0

Strano, dovrebbe avere. – andynormancx

+0

Sono d'accordo. Ho persino rotto le cose in pezzi molto semplici e ancora niente. – 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> 
Problemi correlati