Re: [xsl] complicacy of sorting

Subject: Re: [xsl] complicacy of sorting
From: Joerg Heinicke <joerg.heinicke@xxxxxx>
Date: Sun, 03 Nov 2002 22:22:20 +0100
Hello Evgenia,

your code looks ok, so there is no obvious error. Maybe you can show us the according XML structure? And what's $isid? And what processor are you using? Some have problems with current() in some cases (MSXML if I recall correctly).

Furthermore you can use keys to get something like [@id = current()/@idref]. So in you case it would look like the following:

<xsl:key name="MPCs" match="MonthPriceCountryList/MonthPriceCountry" use="@CountryID"/>

This will shorten the rest of the code:

<xsl:for-each select="CountryList/Country">
  <xsl:sort select="key('MPCs', @ID)[@IStationID = $isid]/@Price"
            order="ascending"/>
  <xsl:if test="position() = 1">
    <xsl:value-of select="key('MPCs', @ID)[@IStationID = $isid]/@Price"/>
  </xsl:if>
</xsl:for-each>

This shell be at least more efficient, but it's the same logic. If current() is not the reason, this won't help you neither.

Regards,

Joerg

Evgenia Firsova wrote:
Hello.

I write this:

<xsl:for-each select="CountryList/Country">
<xsl:sort order="ascending" select="//MonthPriceCountryList/MonthPriceCountry[@CountryID=current()/@ID][
@IStationID=$isid]/@Price"/>
<xsl:if test="position()=1">
<xsl:value-of select="//MonthPriceCountryList/MonthPriceCountry[@CountryID=current()/@ID][
@IStationID=$isid]/@Price"/>
</xsl:if>
</xsl:for-each>


I need to get minimum Price from all Country (from CountryList).
Each Country has attribute ID, and each MonthPriceCountry has attribute CountryID, which are the same values.
For some reason sorting doesn't implements. Please, please, help me to find out the mistake.



XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



Current Thread