Click here to Skip to main content
15,888,908 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi Team,
I created the html file using xml and xslt.
I need minimum date using xslt. here my task is i have one xml file with different nodes like flightList,HotelList,CarList,.... I need to get the lowest date from all nodes(flightList,HotelList,CarList).
I have created application as mentioned below.
My XML File written like this:
----------------------------
XML
<TRSummary>
    <FlightList>
        <TravelDate>28/04/2014</TravelDate>
    </FlightList>
    <FlightList>
        <TravelDate>24/04/2012</TravelDate>
    </FlightList>
    <FlightList>
        <TravelDate>30/04/2013</TravelDate>
    </FlightList>
    <HotelsList>
        <CheckInDate>29/04/2015</CheckInDate>
    </HotelsList>
    <HotelsList>
        <CheckInDate>22/04/2015</CheckInDate>
    </HotelsList>
    <HotelsList>
        <CheckInDate>31/05/2016</CheckInDate>
    </HotelsList>
    <CarList>
        <CarFromDate>29/04/2015</CarFromDate>
    </CarList>
    <CarList>
        <CarFromDate>29/04/2011</CarFromDate>
    </CarList>
    <CarList>
        <CarFromDate>23/04/2015</CarFromDate>
    </CarList>
</TRSummary>



My xml document written like this:
-----------------------------

XML
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
    <xsl:output method="xml" indent="yes"/>
    <!--<xsl:template match="TRSummary">-->

        <!--Flight TravelDate Minimum date-->

        <xsl:variable name="Flight">
            <xsl:for-each select="TRSummary/FlightList">
                <xsl:sort select="number(substring(TravelDate, 7, 4))" order="ascending"/>
                <xsl:sort select="number(substring(TravelDate, 3, 2))" order="ascending"/>
                <xsl:sort select="number(substring(TravelDate, 1, 2))" order="ascending"/>
                <xsl:if test="position() = 1">
                    <xsl:value-of select="TravelDate"/>
                </xsl:if>
            </xsl:for-each>
        </xsl:variable>

        <!--Hotel CheckInDate Minimum date-->

        <xsl:variable name="Hotel">
            <xsl:for-each select="TRSummary/HotelsList">
                <xsl:sort select="number(substring(CheckInDate, 7, 4))" order="ascending"/>
                <xsl:sort select="number(substring(CheckInDate, 3, 2))" order="ascending"/>
                <xsl:sort select="number(substring(CheckInDate, 1, 2))" order="ascending"/>

                <xsl:if test="position() = 1">
                    <xsl:value-of select="CheckInDate"/>
                </xsl:if>
            </xsl:for-each>
        </xsl:variable>

        <!--Car CarFromDate Minimum date-->

        <xsl:variable name="Car">
            <xsl:for-each select="TRSummary/CarList">
                <xsl:sort select="number(substring(CarFromDate, 7, 4))" order="ascending"/>
                <xsl:sort select="number(substring(CarFromDate, 3, 2))" order="ascending"/>
                <xsl:sort select="number(substring(CarFromDate, 1, 2))" order="ascending"/>

                <xsl:if test="position() = 1">
                    <xsl:value-of select="CarFromDate"/>
                </xsl:if>
            </xsl:for-each>
        </xsl:variable>

        <xsl:variable name="arrays"  >
            <Item>
                <xsl:value-of select="$Car"/>
            </Item>
            <Item>
                <xsl:value-of select="$Hotel"/>
            </Item>
            <Item>
                <xsl:value-of select="$Flight"/>
            </Item>
        </xsl:variable>
    <xsl:param name="array" select="msxsl:node-set($arrays)"/>
    <xsl:template match="/">
        <xsl:for-each select="TRSummary">
            <xsl:value-of select="$array/Item"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>



The above code am getting output :
-----------------------------------

24/04/2012 22/04/2015 29/04/2011


I need output like this:
---------------
29/04/2011

How to get minimum date.
plz guide me ASAP.

Thanks&Regards,
Ramu.
Posted

1 solution

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900