2010-08-17 15 views
7

मैंने साइट पर चारों ओर देखा लेकिन किसी विशेष XSL समस्या के समाधान का पता लगाने में सक्षम नहीं था। यदि आप इसे डुप्लिकेट पोस्ट के रूप में पहचानते हैं तो मैं क्षमा चाहता हूं और सही दिशा में इंगित करने के लिए आभारी रहूंगा।सीमा क्रमबद्ध सशर्त xsl: प्रत्येक-परिणामों के लिए एन मान

अपेक्षाकृत सरल XML डेटा मैं नीचे सेट के आधार पर परियोजना द्वारा एक तालिका बनाने के लिए, लेकिन यह भी कुछ अधिक 'सुपाच्य' 'आधुनिक' 10 कि परियोजना के लिए की तरह करने के लिए प्रविष्टियों को सीमित करना चाहते हैं।

+---------------------------------------------------+ 
| Alpha     | Beta     | 
+---------------------------------------------------+ 
| Log_20091014_0900PM.xml | Log_20091015_0900PM.xml | 
| Log_20091013_0900PM.xml | ...      | 
| ...      |       | 
+---------------------------------------------------+ 
| Gamma     | Delta     | 
+---------------------------------------------------+ 
| ...      | ...      | 
+---------------------------------------------------+ 

फार्म के XML स्रोत डेटा:

<LogResults> 
    <Result> 
    <Project>Alpha</Project> 
    <Data>Log_20091013_0900PM.xml</Data> 
    <Name>Log_20091013_0900PM.xml</Name> 
    </Result> 
    <Result> 
    <Project>Alpha</Project> 
    <Data>Log_20091014_0900PM.xml</Data> 
    <Name>Log_20091014_0900PM.xml</Name> 
    </Result> 
    <Result> 
    <Project>Beta</Project> 
    <Data>Log_20091015_0900PM.xml</Data> 
    <Name>Log_20091015_0900PM.xml</Name> 
    </Result> 
    <Result> 
    <Project>Gamma</Project> 
    <Data>Log_20091016_0900PM.xml</Data> 
    <Name>Log_20091016_0900PM.xml</Name> 
    </Result> 
    <Result> 
    <Project>Delta</Project> 
    <Data>Log_20091019_0900PM.xml</Data> 
    <Name>Log_20091019_0900PM.xml</Name> 
    </Result> 
    <Result> 
    <Project>Delta</Project> 
    <Data>Log_20091020_0900PM.xml</Data> 
    <Name>Log_20091020_0900PM.xml</Name> 
    </Result> 
    ... 
</LogResults> 

मैं दिखाने के लिए सभी परिणाम निम्न XSL का उचित बदलाव के साथ प्रत्येक परियोजना के लिए कर रहा हूँ:

<xsl:for-each select="LogResults/Result"> 
    <xsl:sort select="Data" order="descending" /> 
    <xsl:if test="(Project='Alpha')"> 
    <li> 
     <a style="font-size:11pt;"> 
     <xsl:attribute name="href"> 
      Alpha/<xsl:value-of select="Data" /> 
     </xsl:attribute> 
     <xsl:value-of select="Name" /> 
     </a> 
    </li> 
    </xsl:if> 
</xsl:for-each> 

प्रश्न :

क्या परिणाम को 'नवीनतम' 10 (या 20 ...) तक सीमित करना संभव है? और यदि ऐसा है तो आप यह कैसे करने के लिए सुझाव देंगे?

मैं उदाहरण के लिए निम्नलिखित तरीके से position() का उपयोग करने की कोशिश की

<xsl:for-each select="(LogResults/Result) [position &lt; 11]"> 

या

<xsl:if test="(Project='Alpha')"> 
    <xsl:for-each select=". [position &lt; 11]"> 
    <li> 
     <a style="font-size:11pt;"> 
     <xsl:attribute name="href"> 
      Alpha/<xsl:value-of select="Data" /> 
     </xsl:attribute> 
     <xsl:value-of select="Name" /> 
     </a> 
    </li> 
    </xsl:for-each> 
</xsl:if> 

लेकिन अब तक मैं यह काम करने के लिए नहीं मिल सका। निश्चित रूप से क्योंकि यह अभी और अधिक निशान और त्रुटि है।

धन्यवाद और किसी भी संभावित सलाह को पढ़ने के लिए बहुत बहुत धन्यवाद। -टी

+0

अच्छा प्रश्न (+1)। एक विस्तृत समाधान के लिए मेरा जवाब देखें। –

उत्तर

12

आप काफी सही समाधान के करीब हैं।

उपयोग:

<xsl:for-each select="LogResults/Result[Project='Alpha']"> 
    <xsl:sort select="Data" order="descending" /> 
    <xsl:if test="not(position() > 10)"> 
    <li> 
     <a style="font-size:11pt;"> 
     <xsl:attribute name="href"> 
      Alpha/<xsl:value-of select="Data" /> 
     </xsl:attribute> 
     <xsl:value-of select="Name" /> 
     </a> 
    </li> 
    </xsl:if> 
</xsl:for-each> 
+0

+1 आप कठोर थे, अब मैं इसे देखता हूं। मेरा जवाब हटाना –

+0

बहुत बढ़िया! बहुत बहुत धन्यवाद :) – Tobias

संबंधित मुद्दे