xslt:我需要按编号排序
问题描述:
我有一个问题来排序,当我通过任何属性由文本排序一切正常,但我想按数量排序金额属性,我不能做到这一点。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>
请帮助我。
答
只尝试从第四个 字符的子字符串中取出字符,我没有运行它。
它为我的作品:
<xsl:sort select="substring(AMOUNT/@DATA, 4)" data-type="number" order="descending"/>
当然,这是假设所有金额有一个3字符前缀。
感谢您的回复,但它仍然不起作用,它应该是变量的类型,因为通过text(data-type =“text”)(如果它是有序的)。你能帮助我吗? – BAEE
你必须更清楚地解释自己,恐怕我根本不理解这句话。 –
@BAEE它可以用于排序部分,如您在此处所见:http://xsltransform.net/jz1PuPk您的问题的其余部分不清楚。 –