当xml元素的值表示不同的事情(如排序价格)但每个价格具有不同的货币时,如何对其进行排序
我有一个XML文档,描述课程及其标题价格等。, 我想使用XSLT生成一个HTML文档,其中输出将是一个表,但行应根据价格从低到高进行排序,但每门课程的货币不同。费率将通过一个名为rate example“rate=10.95”的新属性以XML硬编码。我已经把它们分类了,但根据价格,我没有考虑货币。< /P> 这是我的XML文档当xml元素的值表示不同的事情(如排序价格)但每个价格具有不同的货币时,如何对其进行排序,xml,sorting,xslt,Xml,Sorting,Xslt,我有一个XML文档,描述课程及其标题价格等。, 我想使用XSLT生成一个HTML文档,其中输出将是一个表,但行应根据价格从低到高进行排序,但每门课程的货币不同。费率将通过一个名为rate example“rate=10.95”的新属性以XML硬编码。我已经把它们分类了,但根据价格,我没有考虑货币。< /P> 这是我的XML文档 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="q2.xsl"?>
<catalogue>
<cours id="INFO-H-509" type="Informatique">
<titre>Technologies XML</titre>
<prix unite="Usd">4000</prix>
<session num="1">
<date>12-03-2015</date>
</session>
<session num="2">
<date>28-12-2015</date>
</session>
</cours>
<cours id="MATH-0-1" type="Mathematique">
<titre>Recheche Opérationelle</titre>
<prix unite="Euro">3000</prix>
<session num="1">
<date>12-03-2013</date>
</session>
</cours>
<cours id="INFO-B-9" type="Informatique">
<titre>Architecture client/serveur </titre>
<professeur cin="AD456"/>
<prix unite="Usd">5000</prix>
<session num="1">
<date>10-01-2016</date>
</session>
</cours>
</catalogue>
XML技术
4000
12-03-2015
28-12-2015
理性选择
3000
12-03-2013
架构客户端/服务器
5000
10-01-2016
这是到目前为止我的XSL文件:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01//EN" doctype-system="http://www.w3.org/TR/html4/strict.dtd" indent="yes" />
<xsl:template match="/catalogue">
<html>
<HEAD>
<TITLE>Titre</TITLE>
<link rel="stylesheet" href="q1_style.css"/>
</HEAD>
<BODY>
<div class="container">
<h1>Tableau qui resume le nombre d'ouvrage </h1>
<table class="table">
<tr >
<th></th>
<th class="table-head">Type</th>
<th class="table-head">Nombre de session</th>
<th class="table-head">Prix</th>
</tr>
<xsl:for-each select="cours">
<xsl:call-template name="afficherCours">
<xsl:with-param name="cours" select="."></xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</table>
</div>
</BODY>
</html>
</xsl:template>
<xsl:template name="afficherCours">
<xsl:param name="cours"/>
<tr>
<td>
<xsl:value-of select="$cours/titre"></xsl:value-of>
</td>
<td>
<xsl:value-of select="$cours/@type"></xsl:value-of>
</td>
<td>
<xsl:value-of select="count($cours/session)"></xsl:value-of>
</td>
<td>
<xsl:value-of select="concat($cours/prix,' ',$cours/prix/@unite)">
</xsl:value-of>
<!-- <xsl:value-of select="$cours/prix/@unite"></xsl:value-of> -->
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
乳头
名称恢复表
类型
会议名称
大奖赛
如果prix
元素具有rate
属性,则您可能可以使用以下方法进行排序:
<xsl:sort select="prix * prix/@rate" data-type="number"/>
我说可能,因为我们没有输入XML的实际示例。我没有看到任何尝试在显示的XSLT代码中进行排序。如果您想转换不同货币的价格,您想从哪里获取汇率以转换,例如欧元到美元?汇率将是硬编码的,无需从第三方应用程序获取,我使用进行排序,但我删除了它,因为它只是根据数字进行排序。汇率将在XML中硬编码吗?或者XSLT?“rate将通过一个名为rate的新属性以XML硬编码”请编辑您的XML示例,以准确显示它的外观。非常感谢您,但您能否向我解释一下数据类型与此指令有什么关系,因为一旦我删除数据类型,如果您删除
数据类型
属性,它将不起作用,排序将默认为字母顺序。这确实有效——只是不是你想要的方式。