This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Sorting outside of a for-each
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: Re: [xsl] Sorting outside of a for-each
- From: "Thomas B. Passin" <tpassin at mitretek dot org>
- Date: Fri, 12 Oct 2001 15:23:39 -0400
- References: <F64g3Sv0YKpDS7hx27k00004648@hotmail.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
In addition to Jeni's suggestion, you could create a node-set of the unique
country names using the "Muenchian" method (look it up in one of the FAQs),
then do a for-each over the unique names. Within each for-each interation,
use for-each or apply-templates selecting template matching the country that
is currently active:
<xsl:variable name='current-country' select='@country_id/>
<xsl:apply-templates
select='/root/country_name[@country_id=$current-country]'/>
(assumes that the document element is called "root"). I didn't test this
but it should be pretty close to what you need.
Cheers,
Tom P
[Steve Bruce]
>
> The XML I am using to create a HTML page is not generated in a sorted
order.
> Below is a subset of the XML I am using.
>
> <country_name country_id="US">United States</country_name>
> <country_name country_id="US">United States Dollar</country_name>
> <country_name country_id="GB">United Kingdom Pound</country_name>
> <country_name country_id="GB">United Kingdom</country_name>
> <country_name country_id="FR">France Francs</country_name>
> <country_name country_id="FR">France</country_name>
> <country_name country_id="DE">Germany</country_name>
> <country_name country_id="DE">Germany Marks</country_name>
>
> <country_sort country_sort_id="US">
> <country_sort country_sort_id="GB">
> <country_sort country_sort_id="FR">
> <country_sort country_sort_id="DE">
>
> The country_name tags are not returned in a sorted order. I want to loop
by
> the country_sort tags, because they only show 1 instance of the items in
the
> country_name tags. If I looped by the country_name, I would duplicate my
> results. For my output, I want to return the country_name for the
> country_sort_id that excludes the currency (dollar, pounds, francs,
marks).
> So, what I believe I want to do is a for-each on the country_sort tag and
> then return the first country_name field for that id, assuming the
> country_name tags have been sorted in ascending order. This would then
> ensure the name with the currency is always second.
>
> However, I have not been able to determine a process for sorting the
> country_name tag without a corresponding for-each. Is this possible?
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list