标签:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Height="127px" Width="317px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:Literal ID="htmlShow" Text="" runat="server" />
</div>
</form>
然后后台cs页面
在事件里面 我们首先获取数据源
protected void Button1_Click(object sender, EventArgs e)
{
string sql = this.TextBox1.Text;
string xml = new Scan.BLL.Log().GetXml(sql);
this.htmlShow.Text = TranfeHtml(xml);
}
其中这个GetXml方法
public static string ExecuteSqlForXml(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(SQLString, connection);
try
{
connection.Open();
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj.ToString();
}
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
它主要就是执行sql语句 返回来xml文档
public string TranfeHtml(string xml)
{
xml = "<root>" + xml + "</root>";
XPathDocument xStyledoc = ConvertStringToXml(xml);
XPathNavigator xStyleNav = xStyledoc.CreateNavigator();
//创建一个XmlTextReader对象,并加载cdcatalog.xsl文件
XmlTextReader xstyleread = new XmlTextReader(Context.Server.MapPath("cdcatalog.xsl"));
//创建XslCompiledTransform对象,用于编译模板 xsl
XslCompiledTransform xTan = new XslCompiledTransform();
//读取模板并进行编译
xTan.Load(xstyleread);
//关闭xstyleread对象
xstyleread.Close();
//创建字符流对象sw
StringWriter sw = new StringWriter();
//通过xsl把xml转化为xhtml,然后放到SW中
xTan.Transform(xStyleNav, null, sw);
Context.Response.BufferOutput = true;
//输出xhtml
//关闭SW对象
sw.Close();
return sw.ToString();
}
private XPathDocument ConvertStringToXml(string str)
{
XPathDocument xPath;
StringReader txtReader;
txtReader = new StringReader(str);
xPath = new XPathDocument(txtReader);
return xPath;
}
这两个方法,注意就是xml文档在外面加入一个root标签
<?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‘ version=‘1.0‘ encoding=‘UTF-8‘ indent=‘yes‘/>
<xsl:template match="/">
<html>
<body>
<h2>班级信息</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">班级名称</th>
<th align="left">班级编号</th>
</tr>
<xsl:for-each select="/root/row">
<tr>
<td>
<xsl:value-of select="班级名"/>
</td>
<td>
<xsl:value-of select="班级编号"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
注意这里的树层次关系 顶端是root 然后每一行就是row 里面有很多的列 每一列几甩 value-of来显示
<row> <班级编号>20050101 </班级编号> <班级名>计算机科学与技术1班</班级名> <班级人数>18</班级人数> <所属系别>200501 </所属系别> <辅导员>03 </辅导员> </row> <row> <班级编号>20050102 </班级编号> <班级名>计算机科学与技术2班</班级名> <班级人数>19</班级人数> <所属系别>200501 </所属系别> <辅导员>03 </辅导员> </row> <row> <班级编号>20050201 </班级编号> <班级名>英语系1班 </班级名> <班级人数>21</班级人数> <所属系别>200502 </所属系别> <辅导员>04 </辅导员> </row> <row> <班级编号>20050202 </班级编号> <班级名>英语系2班 </班级名> <班级人数>20</班级人数> <所属系别>200502 </所属系别> <辅导员>06 </辅导员> </row> <row> <班级编号>20050301 </班级编号> <班级名>企业管理系1班 </班级名> <班级人数>19</班级人数> <所属系别>200503 </所属系别> <辅导员>05 </辅导员> </row> <row> <班级编号>20050401 </班级编号> <班级名>国际贸易系1班 </班级名> <班级人数>18</班级人数> <所属系别>200504 </所属系别> <辅导员>09 </辅导员> </row> <row> <班级编号>20050402 </班级编号> <班级名>国际贸易系2班 </班级名> <班级人数>20</班级人数> <所属系别>200504 </所属系别> <辅导员>01 </辅导员> </row> <row> <班级编号>20050501 </班级编号> <班级名>艺术系1班 </班级名> <班级人数>26</班级人数> <所属系别>200505 </所属系别> <辅导员>08 </辅导员> </row> <row> <班级编号>20050502 </班级编号> <班级名>艺术系2班 </班级名> <班级人数>21</班级人数> <所属系别>200505 </所属系别> <辅导员>07 </辅导员> </row>
其实就是一张表来的
执行的sql语句
SELECT [班级编号] ,[班级名] ,[班级人数] ,[所属系别] ,[辅导员] FROM [班级信息] FOR XML PATH
关键是后面的 FOR XML PATH
这里面前面的sql语句 可以灵活的组合,可以表关联啊 数据库啊 等等
ASP.NET 动态查找数据 并且生成xml文档 同时使用xslt转换为xhtml
标签:
原文地址:http://www.cnblogs.com/maijin/p/4572728.html