2009-03-04 6 views
5

Mon code génère le code XML suivant:Comment testez-vous les enregistrements zéro lorsque vous utilisez <xsl: for-each>?

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

En utilisant XSLT, je parse les enregistrements de personne comme suit:

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

Cependant, dans les cas où je reçois zéro les gens, je voudrais afficher "Aucun enregistrement trouvé" (ou quelque chose de similaire). Lorsque l'application retourne d'enregistrements, le XML ressemble à ce qui suit:

<person_app/> 

Longue histoire courte, comment puis-je tester un jeu de résultats vide lorsque j'utilise < xsl: for-each/> pour analyser mes dossiers de personne? Je l'ai essayé ce qui suit sans succès:

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

Ugh. Deviner. Il ne parvient pas à correspondre au modèle lorsqu'il n'y a aucun enregistrement. – Huuuze

Répondre

7

Quelque chose comme ceci:

<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

Pas de dés. Cela n'a pas fonctionné non plus. – Huuuze

+0

Étrange, il aurait dû. – andynormancx

+0

Je suis d'accord. J'ai même cassé les choses en morceaux très simples et toujours rien. – 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> 
Questions connexes