Fetch records selectively from XML file by passing dynamic value through XSL
This code snippet called on Page_Load shows how to selectively pick records from a XML file based on a dynamic value passed through XSL and doing a transformation in C# . Needs a little more fine tuning.... XsltArgumentList does the trick!
string node = Request.QueryString["country"];
if (node!=null)
{
XmlDocument docXml = new XmlDocument();
docXml.Load(Server.MapPath("users.xml"));
XslTransform docXsl = new XslTransform();
docXsl.Load(Server.MapPath("users.xsl"));
XsltArgumentList xslarg = new XsltArgumentList();
xslarg.AddParam("country", "", node);
docXsl.Transform(docXml, xslarg, Response.Output);
}
else
{
Response.Write("Parameter missing");
}
}
users.xml
<users>
<user>
<name>Anil</name>
<city>Hyderabad</city>
<country>India</country>
</user>
<user>
<name>Moe</name>
<city>New York</city>
<country>USA</country>
</user>
</users>
users.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="country"></xsl:param>
<xsl:template match="users">
<html><head>
<title>Users</title></head>
<body>
<xsl:for-each select="user">
<xsl:if test="country=$country">
<b><xsl:value-of select="city"></xsl:value-of></b>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
I found the sample on Paging Through XML Records using ASP.NET and XSLT useful.
string node = Request.QueryString["country"];
if (node!=null)
{
XmlDocument docXml = new XmlDocument();
docXml.Load(Server.MapPath("users.xml"));
XslTransform docXsl = new XslTransform();
docXsl.Load(Server.MapPath("users.xsl"));
XsltArgumentList xslarg = new XsltArgumentList();
xslarg.AddParam("country", "", node);
docXsl.Transform(docXml, xslarg, Response.Output);
}
else
{
Response.Write("Parameter missing");
}
}
users.xml
<users>
<user>
<name>Anil</name>
<city>Hyderabad</city>
<country>India</country>
</user>
<user>
<name>Moe</name>
<city>New York</city>
<country>USA</country>
</user>
</users>
users.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="country"></xsl:param>
<xsl:template match="users">
<html><head>
<title>Users</title></head>
<body>
<xsl:for-each select="user">
<xsl:if test="country=$country">
<b><xsl:value-of select="city"></xsl:value-of></b>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
I found the sample on Paging Through XML Records using ASP.NET and XSLT useful.
Comments
Post a Comment