XSL 排序在 XSL:应用模板上不起作用



我正在尝试通过以下指令减小直径来对有关行星数据的 xml 文件进行排序:

<xsl:sort select ="diametre" order="descending" data-type="number" />

但是 XSL:排序不起作用:

<?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 不按直径排序吗?

我猜你想做这样的事情:

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>

最新更新