网站风格: 红 | 蓝
搜索:  全站?
首页 |  Java开发 |  DOTNET开发 |  PHP开发 |  ASP技术 |  Web开发 |  数据库应用 |  网络文摘 |  作品集 |  下载 |  留言
文章聚合
  J2EE  |   框架技术  |   Javascript  |   AJAX  |   J2ee Server  |   J2ME  |
  WinForm开发  |   Asp.net  |   C#语言  |   服务器  |   第三方控件  |
  PHP笔记  |   Linux  |   第三方代码  |
  ASP教程  |   ASP实用代码  |   ASP笔记  |   服务器  |
  CSS样式表  |   Photoshop设计  |   Flash  |   HTML 小技巧  |   Dreamweaver  |   XML技术  |
  SQL Server  |   Oracle  |   MySQL  |
  散文  |   幽默  |   杂文  |
  Web 项目  |   杂七杂八  |
  第三方代码  |   实用工具  |   作品下载  |   帮助文档  |
奇点网 - Web开发 - XML技术 - XSL的初步应用实例
XSL的初步应用实例
来源:http://www.7dit.com     作者:7dit     发布日期:2008-10-01 05:25:12   点击量:427
XSL是针对XML进行界面优化的一种文档解释语言,本站通过RSS文章频道聚合功能,使用XSL对XML进行界面优化。其中RSS是通过RSS2Writer类实现新动态生成XML页面。

修改过的RSS2Writer类可以在本站下载频道获得,修改过的类可以直接输出CDATA类型的节点数据

php代码块如下:

<?php
 include("include/rss/rss2writer.php"); //引入Rss类
 /*
 * ......中间省略对数据库的操作,获取文章集合,$articlelist
 * 文章对象有相关属性也省略,这个看具体的实体类的设计
 */

 $meta=array(); //每个RSS文章节点的meta部分,该RSS类声明该meta为一个集合,此处为空,可以以键=>值的方式存放所需要的meta说明
 $rss = new RSS2Writer("http://www.7dit.com","7dit","7dit",$meta);//建立父节点的相关信息 
 foreach ($articlelist as $art) //开始遍历文章集合
 {  
  $previewContent=strip_tags(stripslashes(nl2br($art->acontent))); //去除所有的HTML标记
  $preImg = substr($art->appre,-3)=="gif"||substr($art->appre,-3)=="jpg"?$art->appre:"noimg"; //预览图 
  $preContent = strlen($previewContent)>240?utf_substr($previewContent,360)."…………":$previewContent; //截取360长度的UTF中文预览,其中utf_substr方法是自定义的截取utf编码的方法,本站也有该代码
  
  $itemMeta["pubDate"]=$art->adate; //开始为每个文章建立meta集合
  $itemMeta["preImg"]=$preImg;  
  $rss->addItem("aid,"$art->atitle","http://www.7dit.com/showarticle.php?aid=".$art->aid,"$art->atitle","<![CDATA[".$preContent."]]> ",$itemMeta); //调用addItem方法,添加子节点
 } 
 $rss->output("utf-8");//输出
 header("content-type:text/xml");//设置文档类型
?>

此时输出的仅为最原始的XML代码,现在通过XSL对浏览器显示XML进行界面优化,建立一个rss.xsl文件

<?xml version="1.0" encoding="GB2312"?>
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">
<HEAD>
<TITLE>奇点中文网 - 文章聚合</TITLE>
<link href="xsl.css" rel="stylesheet" type="text/css" /><!--为XSL的HTML页引入样式表-->
</HEAD>
<BODY>
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr><td align="center">
  <span style="font-size:20px;font-weight: bold;color: #FFFFFF;">
   注:本页为XSL优化过的文章RSS,可以使用任何RSS阅读工具进行浏览
  </span>
 </td></tr>
</table>
<xsl:for-each select="rss/channel/item"><!--遍历指定节点下的子节点,select设置当前的父节点路径-->
 <table width="80%" border="0" align="center" cellpadding="0" cellspacing="0" id="citem">
  <tr><td>
  <div id="ctitle">文章标题:
   <xsl:element name="a">
    <xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute>
    <xsl:attribute name="target"> _blank</xsl:attribute>
    <xsl:value-of select="title"/>
     </xsl:element>
  </div>
  <div id="cdate">发表时间:<xsl:value-of select="pubDate"/></div>
  <xsl:if test="preImg[value() $ine$ 'noimg']"><!--判断preImg节点的值是否为noimg,不是则执行下面代码-->
   <div>图片预览:</div>
   <div id="cimg">  
     <xsl:element name="img">
      <xsl:attribute name="src"><xsl:value-of select="preImg"/></xsl:attribute>
       </xsl:element>   
   </div>  </xsl:if>
  <div>内容预览:</div>
  <div id="cdesc"><xsl:value-of select="description"/></div>
  <div id="cmore">
   <xsl:element name="a">
    <xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute>
    <xsl:attribute name="target"> _blank</xsl:attribute>
    [全文阅读]
     </xsl:element>
  </div>
  </td></tr>
 </table>
</xsl:for-each>
</BODY>
</HTML>

在原RSS类中的xml.php中,我已经通过<?xml:stylesheet type="text/xsl" href="rss.xsl"?>指定该XML的xsl文件,因此,XML将按XSL所定义的HTML格式输出XML数据。效果可以看本站的rss.php页
标签:   xsl  |  XML  |  代码  |
留言 | 链接 | 标签 | 风格: 红 蓝   
Copyright © 2005 奇点中文网--7dit.com
闽ICP备05001292号