xsl-list
[Top] [All Lists]

Re: complicacy of sorting

2002-11-03 14:22:20
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 [(_at_)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)[(_at_)IStationID = $isid]/@Price"
            order="ascending"/>
  <xsl:if test="position() = 1">
    <xsl:value-of select="key('MPCs', @ID)[(_at_)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[(_at_)CountryID=current()/@ID][
@IStationID=$isid]/@Price"/>
        <xsl:if test="position()=1">
<xsl:value-of select="//MonthPriceCountryList/MonthPriceCountry[(_at_)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



<Prev in Thread] Current Thread [Next in Thread>