zoukankan      html  css  js  c++  java
  • 【转载】用XML和XSLT来生成静态的HTML页面

    转载自:http://www.cnblogs.com/wengjinbao/archive/2006/08/08/471608.aspx
    用XML和XSLT生成HTM页面是我一直想做的事情,
    毕竟,与其让aspx页面每访问一次就去访问数据库,打开数据连接,关闭数据连接,
    还不如将数据存成htm静态页面

    在网络上一直找寻这方面的资料,也不是很多,也去MSDN去看类库,一个方法一个方法的看,终于管中窥豹
    琢磨出这么一点东西来
    需要三个文件:: 一个XML,一个XSL,还有一个aspx程序
    Listing8.8.2.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <golfers>
    <golfer skill="excellent" handicap="10" clubs="Taylor Made" id="1111">
    <name>
      <firstName>步青云</firstName>
      <lastName>frey</lastName>
    </name>
    </golfer>
    <golfer skill="moderate" handicap="12" clubs="Taylor Made" id="2222">
    <name>
      <firstName>frey</firstName>
      <lastName>glenn</lastName>
    </name>
    </golfer>
    </golfers>

    Listing8.8.1.xsl
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" indent="yes"/>
    <xsl:template match="/">
      <html>
        <body>
          <xsl:apply-templates />
        </body>
        </html>
    </xsl:template>
    <xsl:template match="golfers">
      <b>我的呢称:</b>
    <xsl:apply-templates />
    </xsl:template>
    <xsl:template match="golfer">
    <br />
    <xsl:number format="1" />.
    <xsl:value-of select="name/firstName" />
    </xsl:template>
    </xsl:stylesheet>

    最后是aspx程序页面Listing8.8.5.aspx
    <%@ Import Namespace="System.Xml" %>
    <%@ Import Namespace="System.Xml.Xsl" %>
    <%@ Import Namespace="System.Xml.XPath" %>
    <%@ Import Namespace="System.IO" %>
    <script language="VB" runat="server">
      public sub Page_Load(sender as Object, e as EventArgs)  
        Dim xmlPath as string = Server.MapPath("Listing8.8.2.xml")
        Dim xslPath as string = Server.MapPath("Listing8.8.1.xsl")
        Dim htmPath as string = Server.MapPath("Listing8.8.1.htm")

        Dim fs as FileStream = new FileStream(xmlPath,FileMode.Open, FileAccess.Read)
        Dim reader as StreamReader = new StreamReader(fs,Encoding.UTF8)
        Dim xmlReader as XmlTextReader = new XmlTextReader(reader)
        Dim fstr as FileStream = new FileStream(htmPath, FileMode.Create)

        Dim doc as XPathDocument = new XPathDocument(xmlReader)
        Dim xslDoc as XslTransform = new XslTransform()
        xslDoc.Load(xslPath)

        '转换数据
        xslDoc.Transform(doc,Nothing, fstr, nothing)
        xslDoc.Transform(doc,Nothing,Response.Output) ''输出到页面

        '关闭打开的对象
        fs.Close()
        reader.Close()
        xmlReader.Close()
        fstr.Close()
      end sub
    </script>
     
    C#代码:
    Code
    string xmlPath = Server.MapPath("listing.xml");
            
    string xslPath = Server.MapPath("listing.xsl");
            
    string htmlPath = Server.MapPath("listing.htm");

            FileStream fs 
    = new FileStream(xmlPath, FileMode.Open, FileAccess.Read);
            StreamReader reader 
    = new StreamReader(fs, Encoding.UTF8);
            XmlTextReader xmlReader 
    = new XmlTextReader(reader);
            FileStream fstr 
    = new FileStream(htmlPath, FileMode.Create);

            XPathDocument xpathDoc 
    = new XPathDocument(xmlReader);
            XslCompiledTransform transform 
    = new XslCompiledTransform();
            transform.Load(xslPath);

            transform.Transform(xpathDoc, 
    null, fstr);
            
    //transform.Transform(xpathDoc, null, Response.Output);

            fs.Close();
            reader.Close();
            xmlReader.Close(); 
            fstr.Close();


    生成的htm文件如下::
    Listing8.8.1.htm
    <html>
    <body>
      <b>我的呢称:</b>
      <br>1.
    步青云<br>2.
    frey</body>
    </html>
  • 相关阅读:
    HDU 1015(字符运算 **)
    IOS7中自动计算label的宽度和高度的方法
    IOS开发UI基础文本属性Attributes
    IOS开发UI基础UIControl事件
    IOS开发UI基础UIImagePickerController的属性
    IOS开发UI基础UITableView的属性
    IOS开发UI基础UIActivityIndicatorView的属性
    IOS开发UI基础 UIAlertView的属性
    IOS开发UI基础UIImageView属性属性
    IOS开发UI基础 UIDatePicker的属性
  • 原文地址:https://www.cnblogs.com/icebutterfly/p/1457648.html
Copyright © 2011-2022 走看看