Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > XML > Sorting XSLT output items

Reply
Thread Tools

Sorting XSLT output items

 
 
Jure Sah
Guest
Posts: n/a
 
      02-28-2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello,

I have an XSLT that checks several XML files (using document() ) and
outputs their combined contents. The items inside it have a date
argument according to which I would like to sort the result. How can
this be done?

That is... the usual sort will allow you to sort values from the input
file, but since my XSLT uses several other files in succession and
processes each of their items in a nested loop, I do not see where I
should put the sort tag to achieve the desired effect.

The only solution I see is to use an XSLT sort on the XSLT file output,
but that seems silly.

Thanks for any help in advance.

LP,
Jure
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFJqK5pB6mNZXe93qgRArpKAJ95RHmaUjJ2xoBDW2+fAy l22y5urgCeJZPC
20XWXIcqPfzV0Ft0ynWW8Q8=
=dTj9
-----END PGP SIGNATURE-----
 
Reply With Quote
 
 
 
 
Martin Honnen
Guest
Posts: n/a
 
      02-28-2009
Jure Sah wrote:

> I have an XSLT that checks several XML files (using document() ) and
> outputs their combined contents. The items inside it have a date
> argument according to which I would like to sort the result. How can
> this be done?


<xsl:apply-templates select="document('file1.xml')/foo/bar |
document('file2.xml')/foo/bar">
<xsl:sort select="dateElement"/>
</xsl:apply-templates/>

Note that only XSLT 2.0 has support for sorting dates in the W3C XML
schema date format. With XSLT 1.0 you will need to make sure you have
the date in a format like '2009-02-28' that allows string sorting.



--

Martin Honnen
http://JavaScript.FAQTs.com/
 
Reply With Quote
 
 
 
 
Jure Sah
Guest
Posts: n/a
 
      03-01-2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Martin Honnen pravi:
> <xsl:apply-templates select="document('file1.xml')/foo/bar |
> document('file2.xml')/foo/bar">
> <xsl:sort select="dateElement"/>
> </xsl:apply-templates/>


I can't use that, my files are defined in the XML file I am processing.

Any additional ideas?

LP,
Jure
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFJqga1B6mNZXe93qgRAkB4AJ94ab4yjywTrzrMDvqagL pn+Kc3YwCgwJO0
oPruOVHNsVhJUlmGhkULDXw=
=5mF/
-----END PGP SIGNATURE-----
 
Reply With Quote
 
Martin Honnen
Guest
Posts: n/a
 
      03-01-2009
Jure Sah wrote:

> Martin Honnen pravi:
>> <xsl:apply-templates select="document('file1.xml')/foo/bar |
>> document('file2.xml')/foo/bar">
>> <xsl:sort select="dateElement"/>
>> </xsl:apply-templates/>

>
> I can't use that, my files are defined in the XML file I am processing.
>
> Any additional ideas?


Nevertheless you should be able to process the union of nodes in those
documents and sort them. But you keep us guessing, show us your XML
input(s) and the result you want to produce, then we can suggest a way
how to solve that.

--

Martin Honnen
http://JavaScript.FAQTs.com/
 
Reply With Quote
 
Jure Sah
Guest
Posts: n/a
 
      03-01-2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Martin Honnen pravi:
>>> <xsl:apply-templates select="document('file1.xml')/foo/bar |
>>> document('file2.xml')/foo/bar">
>>> <xsl:sort select="dateElement"/>
>>> </xsl:apply-templates/>

>>
>> I can't use that, my files are defined in the XML file I am processing.
>>
>> Any additional ideas?

>
> Nevertheless you should be able to process the union of nodes in those
> documents and sort them. But you keep us guessing, show us your XML
> input(s) and the result you want to produce, then we can suggest a way
> how to solve that.


My code is available here:
http://dustwolf.ctrl-alt-del.si/down...egator_src.zip

As the name says, the code is a RSS Aggregator. Picks the URLs of the
RSS feeds to combine from an XML file and outputs the resulting feed.
Everything works fine, except the results are not sorted by date.

The code goes a little like this:
<xsl:for-each select="feed:rss2">
<xsl:variable name="myURL" select="." />
<xsl:for-each select="document($myURL)/rss/channel/item">

...that is the two nested "for-each"es.

Any ideas?

Thanks.. really.

LP,
Jure
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFJqt9jB6mNZXe93qgRApx7AJ9ZV5a82giJvMzw/857+KlOaFjO6QCgomZ7
4yAoOfSa7GSdnfIQH2YbtT8=
=HeXO
-----END PGP SIGNATURE-----
 
Reply With Quote
 
David Carlisle
Guest
Posts: n/a
 
      03-02-2009
Jure Sah wrote:

> The code goes a little like this:
> <xsl:for-each select="feed:rss2">
> <xsl:variable name="myURL" select="." />
> <xsl:for-each select="document($myURL)/rss/channel/item">
>
> ..that is the two nested "for-each"es.
>
> Any ideas?
>


just use one for-each then it's easier to sort over the whole collection.

<xsl:for-each select="document(feed:rss2)/rss/channel/item">
<xsl:sort select= something ...


--
http://dpcarlisle.blogspot.com
 
Reply With Quote
 
Jure Sah
Guest
Posts: n/a
 
      03-02-2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

David Carlisle pravi:
> just use one for-each then it's easier to sort over the whole collection.
>
> <xsl:for-each select="document(feed:rss2)/rss/channel/item">
> <xsl:sort select= something ...


That worked great! Thanks a bunch!

LP,
Jure
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFJrCKyB6mNZXe93qgRAm7NAJ44ULtgBzuybjIZLWlw5s 280T3y7gCaAsPz
SSxm9T0MZS6GTz8cAAoGnjg=
=MWke
-----END PGP SIGNATURE-----
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Removing Menu Items and Child Menu Items Larry Bud ASP .Net 13 01-07-2008 02:12 PM
Recognising Sub-Items and sub-sub items using xslt Ben XML 2 09-19-2007 09:35 AM
Looping through CheckBoxList items doesn't pick up selected ones when items were disabled Bart Van Hemelen ASP .Net 2 09-04-2006 08:35 AM
Items in Outbox not moving to Sent Items Ben Lord Computer Support 0 10-23-2003 08:47 AM
grouping items among a list according to items subtag value Gilles Kuhn XML 0 09-15-2003 12:01 PM



Advertisments