xslt的简单使用[xml-->html]

简介:
XSLT命令[xml格式转换]
1.循环 <xsl:for-each...>
<xsl:for-each select="BookList/Item">
<tr>
<th align="left"> <xsl:value-of select=".//title" /></th>
<td><xsl:value-of select=".//categroy" /></td>
<td><xsl:value-of select=".//release-date" /></td>
<td><xsl:value-of select=".//author" /></td>
<td><xsl:value-of select="@price" /></td>
</tr>
</xsl:for-each>
2.排序 <xsl:sort...>
3.条件处理 <xsl:if...>或<xsl:choose...>或<xsl:when...>
4.名称模板 
<xsl:template name...<xsl:template name...>,<xsl:param...>
<xsl:with-param...>,<xsl:call-template...>
5.编号方式 <xsl:number value format...>

xml文档[Article.xml]
None.gif <? xml version="1.0" encoding="gb2312"  ?> 
None.gif <? xml-stylesheet type='text/xsl' href='Article.xsl' ?>
None.gif < Articles >
None.gif < Article >
None.gif < ArticleID >2897 </ ArticleID >
None.gif < Title >[分享]千万数量级分页存储过程(带效果演示) </ Title >
None.gif < Author >网络 </ Author >
None.gif < Abstract >[分享]千万数量级分页存储过程(带效果演示) </ Abstract >
None.gif < PostDateTime >2006-02-27 18:29:53 </ PostDateTime >
None.gif < Dots >7 </ Dots >
None.gif < ColumnURL >/web/Article/viewColumn.aspx?ColID=19 </ ColumnURL >
None.gif < ColumnID >19 </ ColumnID >
None.gif < ColumnName >SQL Server </ ColumnName >
None.gif < FileType >1 </ FileType >
None.gif < FilePath >resource/sql server/2006-02-27/20060227182953.htm </ FilePath >
None.gif < Editor >网络 </ Editor >
None.gif < EditDateTime >2006-02-27 18:29:53 </ EditDateTime >
None.gif < Content >
None.gif  [分享]千万数量级分页存储过程(带效果演示)效果演示:
None.gifhttp://www.cn5135.com/_App/Opportunities/QueryResult.aspx
None.gifCREATE PROCEDURE CN5135_SP_Pagination
None.gif/******************************************************************
None.gif千万数量级分页存储过程
None.gif*******************************************************************
None.gif参数说明:
None.gif1.Tables :表名称,视图
None.gif2.PrimaryKey :主关键字
None.gif3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc
None.gif4.CurrentPage :当前页码
None.gif5.PageSize :分页尺寸
None.gif6.Filter :过滤语句,不带Where 
None.gif7.Group :Group语句,不带Group By
None.gif效果演示:http://www.cn5135.com/_App/Opportunities/QueryResult.aspx
None.gif***************************************************************/
None.gif(
None.gif@Tables varchar(1000),
None.gif@PrimaryKey varchar(100),
None.gif@Sort varchar(200) = NULL,
None.gif@CurrentPage int = 1,
None.gif@PageSize int = 10,
None.gif@Fields varchar(1000) = '*',
None.gif@Filter varchar(1000) = NULL,
None.gif@Group varchar(1000) = NULL
None.gif)
None.gifAS
None.gif/*默认排序*/
None.gifIF @Sort IS NULL OR @Sort = ''
None.gifSET @Sort = @PrimaryKey
None.gifDECLARE @SortTable varchar(100)
None.gifDECLARE @SortName varchar(100)
None.gifDECLARE @strSortColumn varchar(200)
None.gif>DECLARE @operator char(2)
None.gifDECLARE @type varchar(100)
None.gifDECLARE @prec int
None.gif/*设定排序语句.*/
None.gifIF CHARINDEX('DESC',@Sort) &gt;0
None.gifBEGIN
None.gifSET @strSortColumn = REPLACE(@Sort, 'DESC', '')
None.gifSET @operator = ' &lt;='
None.gifEND
None.gifELSE
None.gifBEGIN
None.gifIF CHARINDEX('ASC', @Sort) = 0
None.gifSET @strSortColumn = REPLACE(@Sort, 'ASC', '')
None.gifSET @operator = ' &gt;='
None.gifEND
None.gifIF CHARINDEX('.', @strSortColumn)  &gt; 0
None.gifBEGIN
None.gifSET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
None.gifSET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
None.gifEND
None.gifELSE
None.gifBEGIN
None.gifSET @SortTable = @Tables
None.gifSET @SortName = @strSortColumn
None.gifEND
None.gifSELECT @type=t.name, @prec=c.prec
None.gifFROM sysobjects o 
None.gifJOIN syscolumns c on o.id=c.id
None.gifJOIN systypes t on c.xusertype=t.xusertype
None.gifWHERE o.name = @SortTable AND c.name = @SortName
None.gifIF CHARINDEX('char', @type)  &gt; 0
None.gifSET @type = @type + '(' + CAST(@prec AS varchar) + ')'
None.gifDECLARE @strPageSize varchar(50)
None.gifDECLARE @strStartRow varchar(50)
None.gifDECLARE @strFilter varchar(1000)
None.gifDECLARE @strSimpleFilter varchar(1000)
None.gifDECLARE @strGroup varchar(1000)
None.gif/*默认当前页*/
None.gifIF @CurrentPage  &lt; 1
None.gifSET @CurrentPage = 1
None.gif/*设置分页参数.*/
None.gifSET @strPageSize = CAST(@PageSize AS varchar(50))
None.gifSET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize + 1) AS varchar(50))
None.gif/*筛选以及分组语句.*/
None.gifIF @Filter IS NOT NULL AND @Filter != ''
None.gifBEGIN
None.gifSET @strFilter = ' WHERE ' + @Filter + ' '
None.gifSET @strSimpleFilter = ' AND ' + @Filter + ' '
None.gifEND
None.gifELSE
None.gifBEGIN
None.gifSET @strSimpleFilter = ''
None.gifSET @strFilter = ''
None.gifEND
None.gifIF @Group IS NOT NULL AND @Group != ''
None.gifSET @strGroup = ' GROUP BY ' + @Group + ' '
None.gifELSE
None.gifSET @strGroup = ''
None.gif/*执行查询语句*/
None.gifEXEC(
None.gif'
None.gifDECLARE @SortColumn ' + @type + '
None.gifSET ROWCOUNT ' + @strStartRow + '
None.gifSELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' +
None.gif@strGroup + ' ORDER BY ' + @Sort + '
None.gifSET ROWCOUNT ' + @strPageSize + '
None.gifSELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator
None.gif+ ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
None.gif'
None.gif)
None.gifGO
None.gif  <!-- <![CDATA[]]> -->
None.gif </ Content >
None.gif < Remarks >
None.gif < Remark  PostUserName ="guest"  PostDateTime ="2006-04-10 15:26:22" >
None.gif < PostUserNickName >
None.gif访客
None.gif </ PostUserNickName >
None.gif < Content >
None.gifOK!
None.gif </ Content >
None.gif </ Remark >
None.gif < Remark  PostUserName ="test"  PostDateTime ="2006-04-10 09:18:35" >
None.gif < PostUserNickName >
None.gif游客
None.gif </ PostUserNickName >
None.gif < Content >
None.gifgood
None.gif </ Content >
None.gif </ Remark >
None.gif < Remark  PostUserName ="dream"  PostDateTime ="2006-04-10 08:45:35" >
None.gif < PostUserNickName >
None.gifdream
None.gif </ PostUserNickName >
None.gif < Content >
None.gif不错!
None.gif </ Content >
None.gif </ Remark >
None.gif < Remark  PostUserName ="no3"  PostDateTime ="2006-04-8 15:10:45" >
None.gif < PostUserNickName >
None.gif梦幻3号
None.gif </ PostUserNickName >
None.gif < Content >
None.gif看看
None.gif </ Content >
None.gif </ Remark >
None.gif < Remark  PostUserName ="admin"  PostDateTime ="2006-04-08 12:12:35" >
None.gif < PostUserNickName >
None.gif dot.gif dot.gif
None.gif </ PostUserNickName >
None.gif < Content >
None.gif去试试
None.gif </ Content >
None.gif </ Remark >
None.gif < Remark  PostUserName ="Peter"  PostDateTime ="2006-03-15 16:12:35" >
None.gif < PostUserNickName >
None.gifpeterzb
None.gif </ PostUserNickName >
None.gif < Content >
None.gif dot.gif dot.gif
None.gif </ Content >
None.gif </ Remark >
None.gif </ Remarks >
None.gif </ Article >
None.gif </ Articles >

xslt文档[Article.xsl]
None.gif <? xml version="1.0" encoding="gb2312"  ?>
None.gif < xsl:stylesheet  version ="1.0"  xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" >
None.gif < xsl:output  indent ="yes"  method ="html"   />
None.gif < xsl:template  match ="/" >
None.gif < html >
None.gif < head >
None.gif < meta  http-equiv ="Content-Type"  content ="text/html; charset=GB2312"   />
None.gif  < title >
None.gif  < xsl:value-of  select ="Articles/Article/Title"   />
None.gif  </ title >
None.gif  < link  REL ='Stylesheet'  HREF ='/web/resource/bbs.css'  TYPE ='text/css'  />
None.gif  < style >
None.gif.title0 {font-size:17px;font-family:arial;font-weight:bold;text-decoration:none;color:#FFFFFF;}
None.gifA.title2:link {COLOR: #000000; TEXT-DECORATION: none}
None.gifA.title2:visited {COLOR: #000000; TEXT-DECORATION: none}
None.gifA.title2:active {COLOR: #ff0000; TEXT-DECORATION: none}
None.gifA.title2:hover {COLOR: #ff0000; TEXT-DECORATION: none}
None.gifDIV.post {
None.gif    BORDER-RIGHT: #6e8bde 1px solid; BORDER-TOP: #6e8bde 1px solid; MARGIN-BOTTOM: 3px; BORDER-LEFT: #6e8bde 1px solid; BORDER-BOTTOM: #6e8bde 1px solid; BACKGROUND-COLOR: #f0eedf
None.gif}
None.gifDIV.postTitle {
None.gif    PADDING-LEFT: 3px; FONT-WEIGHT: bolder; FONT-SIZE: 13px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px; BORDER-BOTTOM: #6e8bde 1px dashed; BACKGROUND-COLOR: #d6dff7
None.gif}
None.gifDIV.postText {
None.gif    PADDING-RIGHT: 10px; MARGIN-TOP: 10px; PADDING-LEFT: 10px; FONT-SIZE: 13px; MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 5px; PADDING-TOP: 1px; BACKGROUND-COLOR: whitesmoke
None.gif}
None.gif </ style >
None.gif </ head >
None.gif < body >
None.gif < table  width ="800px"  border ="0"  cellpadding ="0"  cellspacing ="0" >
None.gif < tr >
None.gif < td  width ="97" >
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=7"  target ="_blank" >VB </ a >/ < href ="/web/Article/ViewColumn.aspx?Colid=11"  target ="_blank" >
None.gif        VBScript </ a >
None.gif </ td >
None.gif < td  width ="13%" >< href ="/web/Article/ViewColumn.aspx?Colid=12"  target ="_blank" >ASP </ a >/
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=13"  target ="_blank" >ASP.NET </ a >
None.gif </ td >
None.gif < td  width ="13%" >
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=5"  target ="_blank" >C# </ a >
None.gif </ td >
None.gif < td  width ="51" >
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=30"  target ="_blank" >J# </ a >
None.gif </ td >
None.gif < td  width ="15%" >
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=20"  target ="_blank" >ADO </ a >/ < href ="/web/Article/ViewColumn.aspx?Colid=21"  target ="_blank" >
None.gif        ADO.NET </ a ></ td >
None.gif < td  width ="17%" >
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=9"  target ="_blank" >JAVA </ a >/ < href ="/web/Article/ViewColumn.aspx?Colid=10"  target ="_blank" >
None.gif        JavaScript </ a ></ td >
None.gif < td  width ="11%" >
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=14"  target ="_blank" >HTML </ a >/ < href ="/web/Article/ViewColumn.aspx?Colid=15"  target ="_blank" >
None.gif        XML </ a ></ td >
None.gif < td  width ="12%" >
None.gif     < href ="/web/default.aspx"  target ="_blank" >返回首页 </ a ></ td >
None.gif </ tr >
None.gif < tr >
None.gif < td  width ="97" >< href ="/web/Article/ViewColumn.aspx?Colid=16"  target ="_blank" >CSS </ a ></ td >
None.gif < td >< href ="/web/Article/ViewColumn.aspx?Colid=3"  target ="_blank" >C </ a >/ < href ="/web/Article/ViewColumn.aspx?Colid=4"  target ="_blank" >
None.gif        C++ </ a ></ td >
None.gif < td >< href ="/web/Article/ViewColumn.aspx?Colid=6"  target ="_blank" >Delphi </ a ></ td >
None.gif < td  width ="51" >
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=30"  target ="_blank" >PHP </ a ></ td >
None.gif < td >
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=5"  target ="_blank" >.NET </ a ></ td >
None.gif < td >
None.gif     < href ="/web/resource/CSDN/CSDN论坛精华.html"  target ="_blank" >CSDN论坛精华 </ a ></ td >
None.gif < td >
None.gif     < href ="/web/Article/ViewColumn.aspx?Colid=19"  target ="_blank" >Database </ a ></ td >
None.gif < td >< href ="#"  onClick ="javascript:window.external.addFavorite('/web/Article.aspx', 'Dream .NET')" >加入收藏 </ a >
None.gif </ td >
None.gif </ tr >
None.gif < tr >
None.gif < td  width ="97" >
None.gif     < href ="/web/Note/notes.aspx?function=all"  target ="_blank" >GuestBook  </ a >
None.gif </ td >
None.gif < td >< href ="/web/bbs/bbs.aspx" >BBS </ a >
None.gif </ td >
None.gif < td >< href ="/web/Article/ViewColumn.aspx?Colid=22"  target ="_blank" >PowerBuilder </ a ></ td >
None.gif < td  width ="51" ></ td >
None.gif < td >< href ="/web/Article/ViewColumn.aspx?Colid=24"  target ="_blank" > Novel </ a ></ td >
None.gif < td ></ td >
None.gif < td >< href ="#"  onclick ="javascript:window.external.addFavorite('/web/Article.aspx', 'Dream .NET')" >
None.gif     </ A >
None.gif </ td >
None.gif < td >
None.gif     < href ="mailto:web-network@163.com?subject=About Dream .NET Web System" >联系我们 </ A ></ td >
None.gif </ tr >
None.gif < tr >
None.gif < td  width ="150px" >
None.gif < href ="/web/Article/postArticle.aspx" >< img  src ="/web/images/post.gif"  border ="0"  alt ="【发表文章】"   />【发表文章】 </ a >
None.gif </ td >
None.gif < td  width ="200px"  colspan ="2" >
None.gif < href ="/web/Article/postArticle.aspx" >< img  src ="/web/images/up.gif"  border ="0"   alt ="【上传文章】"   />【上传文章】 </ a >
None.gif </ td >  </ tr > 
None.gif </ table >
None.gif < table  width ="800px"  border ="0"  cellpadding ="0"  cellspacing ="0" >
None.gif < xsl:apply-templates  />
None.gif < tr >
None.gif < td  align ="center" >< href ="javascript:window.print()" >< img  src ="/web/images/print.jpg"  alt ='【打印此文】'  border ="0"   /></ a > 
None.gif      < href ="javascript:window.close();" >< img  src ="/web/images/close.jpg"  alt ='【关闭窗口】'  border ="0"   /></ a >
None.gif </ td >
None.gif </ tr >
None.gif </ table >
None.gif < table  width ="800px"  border ="0"  cellpadding ="0"  cellspacing ="0" >
None.gif     < tr >
None.gif     < td  valign ="top" >
None.gif     < hr  size ="1"  class ="hrc"  color ="blue" ></ hr >
None.gif     < table  align ="center"  cellpadding ="0"  cellspacing ="0"  ID ="Table1" >
None.gif     < tr >
None.gif     < td >
None.gif     < href ="/web/about.htm" >网站简介 </ a > |  < href ="/web/partner.htm" >合伙伙伴 </ a > |  < href ="/web/map.htm" >
None.gif    网站地图 </ a > |  < href ="/web/contract.aspx" >联系方式 </ a >< br ></ br >
None.gif     </ td >
None.gif     </ tr >
None.gif </ table >
None.gif </ td >
None.gif </ tr >
None.gif </ table >
None.gif </ body >
None.gif </ html >
None.gif </ xsl:template >
None.gif < xsl:template  match ="Articles" >
None.gif < xsl:apply-templates  />
None.gif </ xsl:template >
None.gif < xsl:template  match ="Article" >
None.gif < tr >
None.gif < td  height ="25"  align ="left" >
None.gif您当前所在位置为: < href ="/web/default.aspx" >首页 </ A >--- &gt; 
None.gif < href ="/web/Article/default.aspx" >
None.gif文章系统 </ A >--- &gt;
None.gif < xsl:element  name ="a" >
None.gif < xsl:attribute  name ="href" >
None.gif/web/Article/viewArticle.aspx?ColID= < xsl:value-of  select ="ColumnID"   />
None.gif <!--
None.gif<xsl:choose>
None.gif<xsl:when test="ColumnID='19'">
None.gif/web/Article/viewArticle.aspx?ColID=19
None.gif</xsl:when>
None.gif<xsl:when test="ColumnID='5'">
None.gif/web/Article/viewArticle.aspx?ColID=5
None.gif</xsl:when>
None.gif<xsl:otherwise>
None.gif/web/Article/viewArticle.aspx?ColID=0
None.gif</xsl:otherwise>
None.gif</xsl:choose>
None.gif
-->
None.gif </ xsl:attribute >
None.gif < xsl:attribute  name ="title" >
None.gif < xsl:value-of  select ="ColumnName"   />
None.gif </ xsl:attribute >
None.gif < xsl:value-of  select ="ColumnName"   />
None.gif </ xsl:element >
None.gif--- &gt; < xsl:value-of  select ="Title"   /></ td >
None.gif </ tr >
None.gif < tr >
None.gif     < td  height ="25"  align ="center" >标题: < xsl:value-of  select ="Title"   />
None.gif    [点击数: < xsl:value-of  select ="Dots"   />] </ td >
None.gif </ tr >
None.gif < tr >
None.gif     < td  height ="25"  valign ="top"  align ="center" >作者: < xsl:value-of  select ="Author"   />
None.gif    [ < xsl:value-of  select ="PostDateTime"   />] </ td >
None.gif </ tr >
None.gif < tr >
None.gif     < td  height ="25"  valign ="top"  align ="center" >最近修改者: < xsl:value-of  select ="Editor"   />
None.gif    [ < xsl:value-of  select ="EditDateTime"   />] </ td >
None.gif </ tr >
None.gif < tr >
None.gif     < td  height ="25"  valign ="top"  align ="center"  class ="WithBreaks" >概述: < xsl:value-of  select ="Abstract"   /></ td >
None.gif </ tr >
None.gif < tr >
None.gif     < td  height ="25"  valign ="top"  align ="center" >正文如下: </ td >
None.gif </ tr >
None.gif < tr >
None.gif     < td >< pre >< xsl:value-of  select ="Content"   /></ pre ></ td >
None.gif </ tr >
None.gif < xsl:apply-templates  select ="/Articles/Article/Remarks"   />
None.gif </ xsl:template >
None.gif < xsl:template  match ="Remarks" >
None.gif < tr >< td >
None.gif < table  width ="800px"  border ="0"  cellpadding ="0"  cellspacing ="0" >
None.gif < th  align ="left" >< h3 >Feedback </ h3 ></ th >
None.gif < xsl:for-each  select ="Remark" >
None.gif < div  class ="post" >            
None.gif < tr >
None.gif    < div  class ="postTitle" >
None.gif    < td >
None.gif   回复人: < b >
None.gif    < font  color ="#3366CC" >
None.gif    < xsl:value-of  select ="@PostUserName"   />
None.gif   ( < xsl:value-of  select ="PostUserNickName"   />)
None.gif    </ font >
None.gif    </ b >
None.gif    </ td >
None.gif    < td  align ="right" >
None.gif    < font  color ="#000000" >
None.gif    < xsl:value-of  select ="@PostDateTime"   />
None.gif    </ font >   
None.gif   第 < font  color ="red" >< xsl:number  value ="position()"  format ="1" /></ font >
None.gif    </ td >
None.gif    </ div >
None.gif </ tr >
None.gif < tr >
None.gif < td  colspan ="2" >
None.gif < div  class ="postText" >
None.gif < xsl:value-of  select ="Content"   />
None.gif </ div >                
None.gif </ td >
None.gif </ tr >
None.gif </ div >
None.gif </ xsl:for-each >
None.gif </ table ></ td ></ tr >
None.gif </ xsl:template >
None.gif </ xsl:stylesheet >
效果图如下

效果图2
效果图1


本文转自peterzb博客园博客,原文链接:http://www.cnblogs.com/peterzb/archive/2006/04/24/383735.html,如需转载请自行联系原作者。

目录
相关文章
|
1月前
|
XML 前端开发 数据格式
请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
【2月更文挑战第22天】【2月更文挑战第67篇】请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
|
2月前
|
XML JavaScript API
Ruby 教程 之 Ruby XML, XSLT 和 XPath 教程 3
Ruby XML, XSLT 和 XPath 教程
33 1
|
15天前
|
XML 存储 JavaScript
html和xml
【4月更文挑战第10天】html和xml
14 1
|
2月前
|
XML 数据格式 Ruby
Ruby 教程 之 Ruby XML, XSLT 和 XPath 教程 5
Ruby XML, XSLT 和 XPath 教程
93 0
|
2月前
|
XML 数据格式 Ruby
Ruby 教程 之 Ruby XML, XSLT 和 XPath 教程 4
Ruby XML, XSLT 和 XPath 教程
110 1
|
3月前
|
XML JavaScript 数据格式
python - bs4提取XML/HTML中某个标签下的属性
python - bs4提取XML/HTML中某个标签下的属性
29 0
|
4月前
|
XML 存储 数据格式
SGML .HTML 、XML和XHTML的区别?
SGML .HTML 、XML和XHTML的区别?
33 0
|
5月前
|
XML 数据采集 JavaScript
基于.Net开源Html解析器,此外还支持SVG、XML等格式
基于.Net开源Html解析器,此外还支持SVG、XML等格式
24 0
|
6月前
|
XML 存储 JavaScript
XML与html解析,区别,如何使用
XML与html解析,区别,如何使用
|
3天前
|
XML 数据格式
小米备份descript.xml文件
小米备份descript.xml文件
11 0