-
Filter,sort xml before binding to repeater
How I can filter, sort xml before binding it to a repeater? I have a xml data which I need to filter on the basis of querystring and then sort it before binding it into repeater.
I know how to bind xml with repeater and its working fine too but I am facing problem in filtering based on query string and sorting.
Any help would really be appreciated?
-
You can use an XPath query to select only the elements you want from the XML document. I can give you a generic example, but if you provide an example of your XML and how you'd like to filter it, we can give you a more specific example. Also, what programming language are you using?
Phil Weber
http://www.philweber.com
Please post questions to the forums, where others may benefit.
I do not offer free assistance by e-mail. Thank you!
-
My xml is like this: I m using C#
Code:
<Categories>
<Category>
<Title>Food<Title>
<Date>12/1/2009</Date>
<Duration>12/1/2009-12/1/2011</Duration>
<Description>Who is hungry</Description>
</Category>
</Categories>
I want to sort on the basis of Date and duration and filter if querystring matches with title
Last edited by PS123; 12-22-2009 at 06:43 PM.
Reason: Reformatted XML
-
Try something like this:
Code:
using System;
using System.Xml;
using System.Xml.Xsl;
// Use XSL to sort input file by date and duration
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load("sort_categories.xslt");
XmlDocument doc = new XmlDocument();
using (XmlWriter writer = XmlWriter.Create(doc.CreateNavigator().AppendChild()))
{
xsl.Transform("categories.xml", writer);
}
// Use XPath to select item(s) whose title matches
// query string
string title = Request.QueryString["title"].ToString();
XmlNodeList nodes = doc.SelectNodes(
String.Format("/Categories/Category[Title='{0}']", title));
The variable nodes will then contain the sorted, filtered XML. The stylesheet (sort_categories.xslt) looks like this:
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<Categories>
<xsl:for-each select="Categories/Category">
<xsl:sort select="Date" />
<xsl:sort select="Duration" />
<Category>
<Title>
<xsl:value-of select="Title"/>
</Title>
<Date>
<xsl:value-of select="Date"/>
</Date>
<Duration>
<xsl:value-of select="Duration"/>
</Duration>
<Description>
<xsl:value-of select="Description"/>
</Description>
</Category>
</xsl:for-each>
</Categories>
</xsl:template>
</xsl:stylesheet>
If you want the dates to sort correctly, you'll probably need to use substrings to extract the year, month and day as shown here: http://www.xml.com/pub/a/2002/07/03/...rm.html?page=2
Phil Weber
http://www.philweber.com
Please post questions to the forums, where others may benefit.
I do not offer free assistance by e-mail. Thank you!
Similar Threads
-
By Tim in forum xml.announcements
Replies: 0
Last Post: 10-11-2001, 04:00 PM
-
By xmlstartkabel in forum XML
Replies: 0
Last Post: 10-10-2001, 04:07 AM
-
By Tim Frost in forum xml.announcements
Replies: 0
Last Post: 04-02-2001, 10:53 AM
-
By Extensibility in forum web.announcements
Replies: 0
Last Post: 07-20-2000, 06:20 PM
-
By Sales in forum xml.announcements
Replies: 0
Last Post: 07-20-2000, 06:18 PM
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Development Centers
-- Android Development Center
-- Cloud Development Project Center
-- HTML5 Development Center
-- Windows Mobile Development Center
|