2016-11-25 56 views
0

我有一個問題來排序,當我通過任何屬性由文本排序一切正常,但我想按數量排序金額屬性,我不能做到這一點。xslt:我需要按編號排序

XML:

<REGISTERS ORDER="AMOUNT" TIPEORDER="ASC" PAG="1" LPP="100"> 
    <DEFREGISTERS> 
     <COLUMN NAME="AMOUNT" DESC="Amount" FORMAT="NUMBER" TIPEDATA="NUMBER"/> 
    </DEFREGISTERS> 
    <REG> 
     <DESCRIPTION DATA="FARM. VILLE" /> 
     <AMOUNT DATA="EX$110.00" FORMAT="NUMBER" /> 
    </REG> 
    <REG> 
     <DESCRIPTION DATA="FARM. VILLE 2" /> 
     <AMOUNT DATA="EX$210.00" FORMAT="NUMBER" /> 
    </REG> 
    <REG> 
     <DESCRIPTION DATA="FARM. VILLE 3" /> 
     <AMOUNT DATA="EX$310.00" FORMAT="NUMBER" /> 
    </REG> 
    <REG> 
     <DESCRIPTION DATA="FARM. BILL" /> 
     <AMOUNT DATA="EX$150.00" FORMAT="NUMBER" /> 
    </REG> 
</REGISTERS> 

我的「數量」屬性有字符和數字,我希望它用數字進行排序,只有試圖把人物從第四個字符的子串,我沒有運行。

XSL:

<xsl:for-each select="REGISTERS/REG"> 
    <xsl:sort case-order="lower-first" select="./AMOUNT/@DATA" order="descending" data-type="number" /> 
    <xsl:if test="position() > 0 and position() < 101"> 
     <xsl:variable name="Row" select="4 - ((position() mod 2 * 2) + 1)" /> 
      <tr valign="middle" class="md-maketable-reg-tr">    
     </tr> 
    </xsl:if> 
</xsl:for-each> 

請幫助我。

回答

0

只嘗試從第四個 字符的子字符串中取出字符,我沒有運行它。

它爲我的作品:

<xsl:sort select="substring(AMOUNT/@DATA, 4)" data-type="number" order="descending"/> 

當然,這是假設所有金額有一個3字符前綴。

+0

感謝您的回覆,但它仍然不起作用,它應該是變量的類型,因爲通過text(data-type =「text」)(如果它是有序的)。你能幫助我嗎? – BAEE

+0

你必須更清楚地解釋自己,恐怕我根本不理解這句話。 –

+0

@BAEE它可以用於排序部分,如您在此處所見:http://xsltransform.net/jz1PuPk您的問題的其餘部分不清楚。 –