前言
xsl是一门标签解析语言,很适合做动态网页的前台标签
www.bamn.cn

1 首先是aspx页面
添加一个输入框 按钮 还有一个用来显示解析后的xhtml代码的控件
    <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文档

然后就是转换为html的方法了

 
 
 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标签
然后再看我们的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' 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来显示

3然后我们再看解析出来的sql

<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的更多相关文章

  1. php7 使用dom动态生成xml文档

    <?php $dom = new DomDocument('1.0','gb2312'); //创建DOM对象 $store = $dom->createElement('store'); ...

  2. SAX解析和生成XML文档

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者: 永恒の_☆ 地址: http://blog.csdn.net/chenghui031 ...

  3. DOM生成XML文档与解析XML文档(JUNIT测试)

    package cn.liuning.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.D ...

  4. ASP.NET MVC 5使用Swagger生成API文档

    一.安装 新建一个没有身份验证的mvc项目 - SwaggerMvc5Demo,然后添加一个名为Remote(自定义)且包含基础读写(不想手写)的ApiController   开源地址:https: ...

  5. JDOM生成XML文档的一般方法

    由于DOM提供的生成XML的方法不够直观,而且要用到各种繁琐的注解,鉴于此可借助第三方库-----JDOM生成XML文档.具体操作方式如下: import java.io.FileOutputStre ...

  6. 使用DOM4J生成XML文档

    package xml; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; imp ...

  7. ASP.NET Web API从注释生成帮助文档

    默认情况下,ASP.NET Web API不从Controller的注释中生成帮助文档.如果要将注释作为Web API帮助文档的一部分,比如在帮助文档的Description栏目中显示方法注释中的su ...

  8. DOM生成XML文档

    import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuil ...

  9. 在Visual studio 2010中为C#的“///”注释内容生成XML文档 .

    实际上该方法适合于所有版本的Visual studio,方法很简单,设置一下Visual studio的项目属性和工具选项即可. 1.在菜单栏的“Project”中选择当前项目的“*** Proper ...

随机推荐

  1. 计算机中的概念: 视图 VS 镜像

    这两个概念还是不太一样的.下面来说说个人的理解,记录一下. 1. 镜像 镜像可以理解为一份完全一样的拷贝.也就是"深度拷贝",一个复制品. 比如 iso映像文件,ubuntu-12 ...

  2. LeetCode295-Find Median from Data Stream && 480. 滑动窗口中位数

    中位数是有序列表中间的数.如果列表长度是偶数,中位数则是中间两个数的平均值. 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个支持以下两种操 ...

  3. Android教材 | 第三章 Android界面事件处理(一)—— 杰瑞教育原创教材试读

      前  言 JRedu Android应用开发中,除了界面编程外,另一个重要的内容就是组件的事件处理.在Android系统中,存在多种界面事件,比如触摸事件.按键事件.点击事件等.在用户交互过程中, ...

  4. 第一个手写Win32窗口程序

    第一个手写Win32窗口程序 一 Windows编程基础 1 Win32应用程序的基本类型 1.1 控制台程序 不需要完善的Windows窗口,可以使用DOS窗口 的方式显示. 1.2 Win32窗口 ...

  5. 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

    https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类 ...

  6. JAVA-Eclipse中web-inf和meta-inf文件夹

    WEB-INF     /WEB-INF/web.xml        你的Web应用程序配置文件,这是一个XML文件,其中描述了 servlet 和其他的应用组件配置及命名规则:  /WEB- IN ...

  7. windows 通过Web.config添加mimetype映射

    在Web.config里添加以下代码即可 <configuration> <system.webServer> <staticContent> <!-- re ...

  8. 深浅拷贝 python

    原文:http://www.jb51.net/article/15714.htm 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象.2. copy.deepcopy 深拷贝 ...

  9. CSS中的图片路径问题

      CSS中的背景图片写了相对路径,为什么不显示那?   [解决方法] CSS中的背景图片路径应该写成相对于当前CSS文件的路径,而不是针对网站根目录的相对路径.

  10. wget获取整站

    wget -m -e robots=off https://www.baidu.com -m是克隆整个网站,-e robots=off是让wget忽视robots.txt 如果网站有中文路径,最好用以 ...