xsl:sort

xml Mauritius
  • 14 years ago

    hi..

    am a beginner in xml programming and i'd like some help on how to sort data in the xml file.

    my xml is as follows:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="test2.xsl"?>

    <company>
        <vehicle>
         <reg_plate>1FTN-707</reg_plate>
         <driver_id>101786J</driver_id>
          <day>
           <date>2006-7-27</date>
           <trip>
              <odometer>
               <t_start>9100</t_start>
              <t_finish>10001</t_finish>
             </odometer>
             <purpose>seminar</purpose>
             <purchase>
                 <fuel>95</fuel>
                 <cost>133</cost>
             </purchase>
           </trip>
         </day>
           <day>
         <date>2006-7-28</date>
         <trip>
                    <odometer>
                       <t_start>10001</t_start>
              <t_finish>10010</t_finish>
             </odometer>
             <purpose>demo</purpose>
             <purchase>
                 <fuel>20.5</fuel>
                 <cost>31</cost>
             </purchase>
         </trip>
         <trip>
                    <odometer>
                       <t_start>10010</t_start>
              <t_finish>10015</t_finish>
             </odometer>
             <purpose>demo</purpose>
             <purchase>
                 <fuel>-</fuel>
                 <cost>-</cost>
             </purchase>
         </trip>
     </day>
        </vehicle>










































        <vehicle>
     <reg_plate>1CBL-099</reg_plate>
     <driver_id>195767B</driver_id>
           <day>
         <date>2006-7-2</date>
         <trip>
                    <odometer>
                       <t_start>1001</t_start>
              <t_finish>1050</t_finish>
             </odometer>
             <purpose>to conference</purpose>
             <purchase>
                <fuel>-</fuel>
                <cost>-</cost>
             </purchase>
         </trip>
         <trip>
                    <odometer>
                       <t_start>1050</t_start>
              <t_finish>1100</t_finish>
             </odometer>
             <purpose>from conference</purpose>
             <purchase>
                <fuel>-</fuel>
                <cost>-</cost>
             </purchase>
         </trip>
     </day>
           <day>
         <date>2006-7-3</date>
         <trip>
                    <odometer>
                       <t_start>1100</t_start>
              <t_finish>1500</t_finish>
             </odometer>
             <purpose>Customer tour</purpose>
             <purchase>
                 <fuel>80</fuel>
                 <cost>120</cost>
             </purchase>
         </trip>
     </day>
        </vehicle>









































        <vehicle>
     <reg_plate>1ADA-095</reg_plate>
     <driver_id>234100K</driver_id>
           <day>
         <date>2006-7-10</date>
         <trip>
                    <odometer>
                       <t_start>27675</t_start>
              <t_finish>27700</t_finish>
             </odometer>
             <purpose>private</purpose>
             <purchase>
                <fuel>-</fuel>
                <cost>-</cost>
             </purchase>
         </trip>
     </day>
           <day>
         <date>2006-7-11</date>
         <trip>
                    <odometer>
                       <t_start>27700</t_start>
              <t_finish>27710</t_finish>
             </odometer>
             <purpose>private</purpose>
             <purchase>
                <fuel>-</fuel>
                <cost>-</cost>
             </purchase>
         </trip>
         <trip>
                    <odometer>
                       <t_start>27710</t_start>
              <t_finish>27730</t_finish>
             </odometer>
             <purpose>private</purpose>
             <purchase>
                 <fuel>50</fuel>
                 <cost>70.5</cost>
             </purchase>
         </trip>
     </day>
        </vehicle>









































        <vehicle>
     <reg_plate>1CPP-101</reg_plate>
     <driver_id>101001A</driver_id>
           <day>
         <date>2006-7-21</date>
         <trip>
                    <odometer>
                       <t_start>30054</t_start>
              <t_finish>30090</t_finish>
             </odometer>
             <purpose>Service call</purpose>
             <purchase>
                 <fuel>25.5</fuel>
                 <cost>32.3</cost>
             </purchase>
         </trip>
     </day>
        </vehicle>
















        <vehicle>
     <reg_plate>1BSC-303</reg_plate>
     <driver_id>100101B</driver_id>
           <day>
         <date>2006-7-9</date>
         <trip>
                    <odometer>
                       <t_start>45171</t_start>
              <t_finish>45221</t_finish>
             </odometer>
             <purpose>Test drive</purpose>
             <purchase>
                <fuel>-</fuel>
                <cost>-</cost>
             </purchase>
         </trip>
     </day>
           <day>
         <date>2006-7-10</date>
         <trip>
                    <odometer>
                       <t_start>45221</t_start>
              <t_finish>45250</t_finish>
             </odometer>
             <purpose>Car service</purpose>
             <purchase>
                <fuel>-</fuel>
                <cost>-</cost>
             </purchase>
         </trip>
     </day>
           <day>
         <date>2006-7-11</date>
         <trip>
                    <odometer>
                       <t_start>45250</t_start>
              <t_finish>45300</t_finish>
             </odometer>
             <purpose>private</purpose>
             <purchase>
                <fuel>-</fuel>
                <cost>-</cost>
             </purchase>
         </trip>
         <trip>
                    <odometer>
                       <t_start>45300</t_start>
              <t_finish>45375</t_finish>
             </odometer>
             <purpose>demo</purpose>
             <purchase>
                 <fuel>60</fuel>
                 <cost>75.5</cost>
             </purchase>
         </trip>
         <trip>
                    <odometer>
                       <t_start>45375</t_start>
              <t_finish>45420</t_finish>
             </odometer>
             <purpose>Service call</purpose>
             <purchase>
                <fuel>-</fuel>
                <cost>-</cost>
             </purchase>
         </trip>
     </day>
        </vehicle>
    </company>



































































     

    i hav to sort the date using a xslt stylesheet and i hav done something like that:

    <?xml version="1.0" ?>

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

    <xsl:template match="/">
      <html>
        <body>
          <table>
            <tr>
              <td>Date</td>
              <td>Registration Plate</td>
              <td>Driver ID</td>
              <td>Trip Start</td>
              <td>Trip Finish</td>
              <td>Purpose</td>
              <td>Fuel</td>
              <td>Cost</td>
              <td>km Travelled</td>
              <td>km Travelled/day</td>
            </tr>
           
            <xsl:apply-templates select="*" />
           
          </table>
        </body>
      </html>
    </xsl:template>





















      <xsl:template match="*">
        <xsl:for-each select="vehicle">
          <xsl:sort select="day/date" data-type="text" />
          <tr>
            <td><xsl:apply-templates select="vehicle"/></td>
          </tr> 
        </xsl:for-each>
      </xsl:template>






      <xsl:template match="vehicle">
        <tr>
          <td><xsl:value-of select="reg_plate" /></td>
          <td><xsl:value-of select="driver_id" /></td>
          <td><xsl:apply-templates select="day" /></td>
        </tr>
      </xsl:template>





      <xsl:template match="day">
        <tr>
          <td>
            <xsl:value-of select="date" />
          </td>
          <td>
            <xsl:apply-templates select="trip" />
          </td>
        </tr>
      </xsl:template>








      <xsl:template match="trip">
        <tr>
          <td>
            <xsl:apply-templates select="odometer" />
          </td>
          <td>
            <xsl:value-of select="purpose" />
          </td>
          <td>
            <xsl:apply-templates select="purchase" />
          </td>
        </tr>
      </xsl:template>











      <xsl:template match="odometer">
        <tr>
          <td>
            <xsl:value-of select="trip_start" />
          </td>
          <td>
            <xsl:value-of select="trip_finish" />
          </td>
        </tr>
      </xsl:template>








      <xsl:template match="purchase">
        <tr>
          <td>
            <xsl:value-of select="fuel" />
          </td>
          <td>
            <xsl:value-of select="cost" />
          </td>
        </tr>
      </xsl:template>
    </xsl:stylesheet>











    there is something wrong with this xsl..

    could any1 plz help?

    would be very grateful if some1 could..

    thx..

  • 14 years ago

    Dear Iznogood

    Duplicating the post may confuse you and miss the answer, check your other post

    Regards

    DoctorMahdi

Post a reply

Enter your message below

Sign in or Join us (it's free).

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“C++: an octopus made by nailing extra legs onto a dog.” - Steve Taylor