sorting..

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
  • 14 years ago
  • 14 years ago

    its not easy to debug xsl file.

    I remember that there are tools which can validate and even write for you the xsl file.

     

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.

“The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'” - Isaac Asimov