如何在XSLT中按日期对XML文件进行排序

时间:2010-04-21 12:04:26

标签: xslt

我正在尝试按日期排序,并收到有关无法加载样式表的错误消息

我找到了其他人的建议答案,但它对我不起作用

这是它应该排序的地方。注释掉的行是排序的位置

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

 <xsl:template name="hoo" match="/">
  <html>
   <head>
    <title>Registered Festival Organisers and Festivals</title>
    <link rel="stylesheet" type="text/css" href="userfestival.css" />
   </head>
   <body>
    <h1>Registered Festival Organisers and Festivals</h1>

    <xsl:for-each select="folktask/member">

     <xsl:if test="user/account/userlevel='3'">
      <!--<xsl:sort select="concat(substring(festival/event/datefrom,1,4),substring(festival/event/datefrom, 6,2),substring(festival/event/datefrom, 9,2))" data-type="number" order="ascending"/>-->

XML的示例节点

    <festival id="1">
     <event>
      <eventname>Oxford Folk Festival</eventname>
      <url>http://www.oxfordfolkfestival.com/</url>
      <datefrom>2010-04-07</datefrom>
      <dateto>2010-04-09</dateto>
      <location>Oxford</location>
      <eventpostcode>OX1 9BE</eventpostcode>
      <coords>
       <lat>51.735640</lat>
       <lng>-1.276136</lng>
      </coords>
     </event>
    </festival>

1 个答案:

答案 0 :(得分:3)

无需进行复杂的字符串操作即可将<datefrom>转换为数字。 yyyy-mm-dd格式的日期与文本完全匹配。

<xsl:for-each select="folktask/member[user/account/userlevel='3']">
  <xsl:sort select="festival/event/datefrom" />
  <!-- ... -->
</xsl:for-each>