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;
}