[英]xsl sort doesn't work on xsl:apply-templates
我正在嘗試通過使用以下指令減小直徑來對有關行星數據的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不按直徑排序嗎?
我猜你想做這樣的事情:
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.