我正在尝试通过以下指令减小直径来对有关行星数据的xml文件进行排序:
<xsl:sort select ="diametre" order="descending" data-type="number" />
但是xsl:sort不起作用:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="//planete">
<html lang="fr">
<head>
<title>Les planètes</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="systeme_solaire/planete" >
<xsl:if test="nom!='Terre'">
<xsl:sort select ="diametre" order="descending" data-type="number" />
<ul>
<p><b><xsl:value-of select="nom"/> : </b></p>
<li>Distance au soleil: <xsl:value-of select="distance"/><xsl:value-of select="distance/@unit"/></li>
<li>Masse: <xsl:value-of select="masse"/><xsl:value-of select="masse/@unit"/></li>
<li>Diamètre: <xsl:value-of select="diametre"/><xsl:value-of select="diametre/@unit"/></li>
<xsl:if test="satellite>0"><li>Nombre de satellites: <xsl:value-of select="satellite"/></li></xsl:if>
</ul>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
XML文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<systeme_solaire>
<etoile>
<nom>Soleil</nom>
<type_spectral>G2</type_spectral>
<age unit="milliard d'annees">5</age>
</etoile>
<planete type="tellurique">
<nom>Mercure</nom>
<distance unit="UA">0.4</distance>
<masse unit="masse terrestre">0.06</masse>
<diametre unit="diamètre terrestre">0.4</diametre>
</planete>
</systeme_solaire>
您能帮我找到为什么xsl:sort不按直径排序吗?
答案 0 :(得分:2)
我猜你想做类似的事情:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/systeme_solaire">
<html lang="fr">
<head>
<title>Les planètes</title>
</head>
<body>
<xsl:apply-templates select="planete[nom!='Terre']">
<xsl:sort select ="diametre" order="descending" data-type="number" />
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="planete" >
<ul>
<p><b><xsl:value-of select="nom"/> : </b></p>
<li>Distance au soleil: <xsl:value-of select="distance"/><xsl:value-of select="distance/@unit"/></li>
<li>Masse: <xsl:value-of select="masse"/> <xsl:value-of select="masse/@unit"/></li>
<li>Diamètre: <xsl:value-of select="diametre"/> <xsl:value-of select="diametre/@unit"/></li>
<xsl:if test="satellite>0"><li>Nombre de satellites: <xsl:value-of select="satellite"/></li></xsl:if>
</ul>
</xsl:template>
</xsl:stylesheet>