代码之家  ›  专栏  ›  技术社区  ›  AdRock

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

  •  2
  • AdRock  · 技术社区  · 14 年前

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

    我找到了一个关于别人如何建议的答案,但这对我不起作用。

    这里是分类的地方。注释掉的行是进行排序的地方。

    <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 回复  |  直到 14 年前
        1
  •  3
  •   Tomalak    14 年前

    不需要进行复杂的字符串操作 <datefrom> 变成一个数字。日期在 yyyy-mm-dd 格式和文本都能很好地排序。

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