Dynamic Data Manipulation using XSLT using c# methods

Dynamic Data Manipulation using XSLT using c# methods

If you want to display dynamic data/from database in xslt then this is a way to do your requirements.
In this we are directly firing a query which returns data in xml format then according to the node names u can transform your xslt.

Step 1:

Create a xslt named as Sample.xsl

<?xml version=”1.0″ encoding=”UTF-8″ ?>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>

<xsl:output method=”html”/>

<xsl:template match=”tblDetails“>

<div>
<xsl:value-of select=”Category)”/>
</div>
<div>
<div>
Category name : <xsl:value-of select=”Category“/>
</div>
<div>
Details on Category :<xsl:value-of select=”Details“/>
</div>
</div>
</xsl:template>
</xsl:stylesheet>

Step 2:

Now inside the aspx page named as TestXSLT.aspx use the below code.
<form id=”form1″ runat=”server”>
<div>
Head
</div>
<div id=”divContent” runat=”server”>
</div>
</form>

Step 3:

In the pageload og the TestXSLT.asp.cs write the below code.

protected void Page_Load(object sender, EventArgs e)
{
const string XSLT_FILE_NAME = “Sample.xsl“;
string xmlData QueryResult();
string html = GetPageHTML(XSLT_FILE_NAME, xmlData);
divContent.InnerHtml = html;
}

Here you r directly retrive ur required data from database in xml format.

public string QueryResult()
{
try
{
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[“myConnection”].ToString());
string sql = “select Category,Details from tblDetails for xml auto,root, elements“;
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
XmlReader reader = command.ExecuteXmlReader();
reader.MoveToContent();

string resultXML = reader.ReadOuterXml();

return resultXML;
}
catch { return null; }
}
The above method will retrurns data in the below format –
<tblDetails><Category>Dining</Category><Details>Details about the dining</Details></tblDetails>

This is the method where ur XSLT will be transformed and returns a string.

private string GetPageHTML(string xsltFileName, string xmlData)
{
string fullXsltFilePath = Server.MapPath(xsltFileName);
using (XmlReader dataReader = LoadXMLToReader(xmlData))
{
XslCompiledTransform xslTrans = new XslCompiledTransform();
xslTrans.Load(fullXsltFilePath);
using (MemoryStream outputStream = new MemoryStream())
{
xslTrans.Transform(dataReader, null, outputStream);
outputStream.Position = 0;
using (StreamReader sr = new StreamReader(
outputStream, Encoding.UTF8))
{
string resultHtml = sr.ReadToEnd();
return resultHtml;
}
}
}
}

This method is used to convert the xml string to XMLReader format.

private XmlReader LoadXMLToReader(string inputXML)
{
byte[] xmlData = Encoding.UTF8.GetBytes(inputXML);
MemoryStream xmlStream = new MemoryStream(xmlData);
xmlStream.Position = 0;
XmlReader reader = XmlReader.Create(xmlStream);
reader.Read();
return reader;
}

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply