2009-03-04 4 views
5

मेरे कोड निम्न XML उत्पन्न करता है:<xsl: for-each> का उपयोग करते समय शून्य रिकॉर्ड के लिए आप कैसे परीक्षण करते हैं?

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

हालांकि, मामलों में जब मैं शून्य लोग प्राप्त करते हैं, मैं प्रदर्शित करना चाहते हैं "कोई रिकॉर्ड नहीं मिला" (या कुछ समान)। एप्लिकेशन शून्य रिकॉर्ड देता है, एक्सएमएल जैसा दिखता है निम्नलिखित:

<person_app/> 

लंबी कहानी संक्षेप में, जब मैं < XSL का उपयोग कैसे मैं एक खाली परिणाम सेट के लिए परीक्षण कर सकते हैं: के लिए-प्रत्येक/> मेरी व्यक्ति रिकॉर्ड पार्स करने के लिए? कोई सफलता के साथ निम्नलिखित मैं कोशिश की है:

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

ओह। पता लगा लिया। जब शून्य रिकॉर्ड होते हैं तो यह टेम्पलेट से मेल खाने में विफल रहता है। – Huuuze

उत्तर

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

कोई पासा नहीं। वह या तो काम नहीं किया। – Huuuze

+0

अजीब, यह होना चाहिए। – andynormancx

+0

मैं सहमत हूं। मैंने चीजों को बहुत ही सरल टुकड़ों में तोड़ दिया और अभी भी कुछ भी नहीं। – 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> 
संबंधित मुद्दे