您好,请告诉我如何在xslt中对值进行排序?
这是我的代码 http://xsltransform.net/bEzjRJq/1
XML
<livescore gn="192.168.24.87">
<calendar potime="715">
<test matchstatus="Match Ended" name="ccc" matchnumber="Match 1"/>
<test matchstatus="adsds" name="bb" matchnumber="Match 2"/>
<test matchstatus="Match Ended" name="aaa" matchnumber="Match 4"/>
<test matchstatus="Match Ended" name="bbb" matchnumber="Match 3"/>
</calendar>
</livescore>
码
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<hmtl>
<head>
<title>New Version!</title>
</head>
<xsl:apply-templates select="livescore/calendar/test[@matchstatus ='Match Ended']"/>
</hmtl>
</xsl:template>
<xsl:template match="livescore/calendar/test[@matchstatus ='Match Ended']" >
<h1><xsl:value-of select="@name"/></h1>
</xsl:template>
</xsl:transform>
输出
<h1>ccc</h1>
<h1>aaa</h1>
<h1>bbb</h1>
预期输出
<h1>aaa</h1>
<h1>bbb</h1>
<h1>ccc</h1>
我试过这一行
<xsl:sort select="normalize-space(substring-after(matchnumber,' '))" data-type="number" order="descending"/>
但没有工作
答案 0 :(得分:2)
AFAICT,您只需将遗失的@
添加到您的尝试中即可:
<xsl:sort select="normalize-space(substring-after(@matchnumber,' '))" data-type="number" order="descending"/>
答案 1 :(得分:-2)
<xsl:sort select="//@matchnumber"/>