谈谈CMS内容管理系统的两种方案:XSL+XML和HTML (二)

xml

上篇讲到了XSL和XML如何在客户端浏览。也是CMS内容管理系统内容发布的一种形式,即XSL(模版)+XML(内容)。

    但是现实情况是由客户端浏览器不支持,这样做还会给服务器造成一定的负载,能够减轻服务器服务负载的最好方法就是完全实现静态页面的内容访问机制,当然这样就需要再次将XSL和XML生成HTML或者SHTML。

    呵呵,这就是所说的CMS内容管理系统内容发布的第二种形式HTML或者SHTML。

    在Java中有很多方式来实现,首先是先产生XSL文件,即模版文件。

    当然我们首先要统一编码,所有的文件编码都为“UTF-8”,符合全球化标准。即产生的文件编码格式为“UTF-8”,数据库编码格式为“UTF-8”,自动生成的XSL文件、XML文件、HTML文件、SHTML文件的格式都必须为“UTF-8”,当然还包括文件内部的声明也都必须为“UTF-8”,当然请不要搞混了文件编码格式和文件内部声明,我觉得初学者最容易搞混。文件编码格式就是文件的属性,文件本身是用什么编码格式生成的,而文件内部声明指的是文件内容中也需要制定编码。

    目的当然很简单且明确,防止出现大家头疼的乱码~

    下面接着谈谈CMS内容管理系统的两种方案:XSL+XML和HTML (一)的例子,说明XSL模版文件的Java实现。

  XSL文件:test.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" />
<xsl:template match="/article">
<table cellspacing="1" cellpadding="1" width="200" border="1">
  <tbody>
    <tr>
      <td><xsl:value-of select="title" /></td>
      <td><xsl:value-of select="click" /></td>
    </tr>
    <tr>
      <td><xsl:value-of select="date" /></td>
      <td><xsl:value-of select="author" /></td>
    </tr>
    <tr>
      <td><xsl:value-of select="content" disable-output-escaping="yes" /></td>
      <td>测试By GlandJacky</td>
    </tr>
  </tbody>
</table>
</xsl:template>
</xsl:stylesheet>

首先必须先取得要转化为XSL代码的字符串String xslContent

使用dom4j来实现XSL

//XSL代码的头

String XSL_HEAD = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE root [<!ENTITY nbsp \" \">]><xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\"><xsl:output method=\"html\" /><xsl:template match=\"/root\">";

//XSL代码的尾
 String XSL_END = "</xsl:template></xsl:stylesheet>";

//添加模版文件的中HTML代码       
        if (xslContent.substring(0,6).toUpperCase().equals("<HTML>")){
            xslContent = XSL_HEAD + xslContent + XSL_END;
        }else{
            xslContent = XSL_HEAD +"<HTML><meta content=\"text/html;charset=utf-8\" http-equiv=\"content-type\" />"+ xslContent+ "</HTML>" + XSL_END;
        }
       
// 创建document      import org.dom4j.DocumentHelper; import org.dom4j.Document;
        Document document = DocumentHelper.parseText(xslContent);

补充创建完document之后

需要三个参数

创建好的Document document

要创建XSL文件的地址String path

创建文件的编码格式String charsetName

            document.setXMLEncoding(charsetName);
            FileOutputStream fos = new FileOutputStream(path);
            OutputStreamWriter osw = new OutputStreamWriter(fos, charsetName);
            document.write(osw);
            osw.close();
            fos.close();

这样XSL文件就创建好了。

 

时间: 2024-09-17 04:17:22

谈谈CMS内容管理系统的两种方案:XSL+XML和HTML (二)的相关文章

浅析CMS内容管理系统的两种方案之二

内容管理系统 上篇讲到了XSL和XML如何在客户端浏览.也是CMS内容管理系统内容发布的一种形式,即XSL(模版)+XML(内容). 但是现实情况是由客户端浏览器不支持,这样做还会给服务器造成一定的负载,能够减轻服务器服务负载的最好方法就是完全实现静态页面的内容访问机制,当然这样就需要再次将XSL和XML生成HTML或者SHTML. 这就是所说的CMS内容管理系统内容发布的第二种形式HTML或者SHTML. 在Java中有很多方式来实现,首先是先产生XSL文件,即模版文件. 当然我们首先要统一编

浅析CMS内容管理系统的两种方案

内容管理系统 目前市面上成熟的CMS产品有很多,无外乎两种解决方案:第一种就是用XSL+XML的方式来实现客户端具体数据:第二种是生成HTML或者SHTML来实现. 设计阶段的想法是,用XSL来实现文章和内容的模版,用XML来存储数据,生成静态的HTML或SHTML.到实际应用中发现了HTML转换的问题,用XSL+XML生成HTML时,XML内容中不需要进行转化的内容,使用CDATA,在XSL文件中引用部分使用disable-output-escaping="yes",生成HTML时照

30 个很棒的 PHP 开源 CMS 内容管理系统

 本文汇集了30个优秀的开源CMS建站系统,采用PHP开发.以下列表不分先后顺序. 1. AdaptCMS AdaptCMS Lite 是一个开源的CMS系统,主要特点是易用,而且可以轻松和其他系统接驳,提供简单的扩展定制途径,一个简单而且功能强大的模板系统,以及更多很有用的功能.   2. OneCMS OneCMS是一个适合管理游戏的内容管理系统.它可以很容易的通过自己的一些功能诸如额外的论坛软件,定制区域,定制分类等等来管理站点内的内容.游戏.   3. Pluck Pluck 是一个小型

9 款最好的基于 Rails 的 CMS 内容管理系统

内容管理系统(CMS)是用来创建,管理或者是发布内容的计算机程序,CMS 通常是在网站和博客上使用,多用在公司网站,可以免去处理编码的问题并且提供非常易于使用的用户界面.CMS 变得越来越流行,因为它不要求太多的编程语言知识,实际上是给用户提供一个管理内容的环境.所以,即使是新手也能够利用 CMS 很好的完成相应的工作.很方便的使用 CMS 通常或者是公司网站上使用 当然,现在有很多种语言可以创建 CMS ,而 Ruby On Rails 就是其中一种.Ruby On Rails 是个开源 we

30 个很棒的PHP开源CMS内容管理系统小结_php技巧

1. AdaptCMS AdaptCMS Lite 是一个开源的CMS系统,主要特点是易用,而且可以轻松和其他系统接驳,提供简单的扩展定制途径,一个简单而且功能强大的模板系统,以及更多很有用的功能.   2. OneCMS OneCMS是一个适合管理游戏的内容管理系统.它可以很容易的通过自己的一些功能诸如额外的论坛软件,定制区域,定制分类等等来管理站点内的内容.游戏.   3. Pluck Pluck 是一个小型而且简单的内容管理系统,使用 PHP 开发.有了 Pluck 你可以轻松的管理自己的

详解Grunt插件之LiveReload实现页面自动刷新(两种方案)_php实例

方案一:grunt-livereload + Chrome Plug-in 优点:安装.配置简单方便. 缺点:需要配合指定的浏览器插件(Firefox也有相关插件,IE么你懂的). 1. 需要安装2个插接件:grunt-contrib-watch.connect-livereload 执行命令: 复制代码 代码如下: npm install --save-dev grunt-contrib-watch connect-livereload 2. 安装浏览器插件:Chrome LiveReload

一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]_javascript技巧

网上找了很多,万变不离其宗,写法核心都是一样的,在这里我给大家总结一下,可收藏备用. html: <div class="scroll"> <ul class="list"> <li><a href="#" target="_blank">公告一 或 中奖者 甲</a></li> <li><a href="#" tar

为U盘设密的两种方案

  方案一:把u盘插入电脑的USB接口,右键单击u盘盘符,选择"启用BitLocker"命令. (BitLocker驱动器加密是Windows VistaXI系统新增的一种数据保护功能,主要用于解决计算机物理设备中的数据失窃或恶意泄漏.此功能在windows 7系统中也能够使用.) 进入"BitLocker 驱动器加密"向导后会出现两种加密方式: 1.使用密码解锁驱动器; 2.使用智能卡解锁驱动器(智能卡:是一张含有计算机芯片的小型塑料卡.智能卡通常由大型公司的信息

谈谈SEO与PPC这两种搜索营销策略的优点

摘要: 近年来越来越多的企业开始涉足搜索引擎营销,有的企业选择SEO有的则选择PPC,更有甚者两者同时运行.那么对于企业来说如何处理好SEO与PPC才能让搜索引擎影响发挥最大的效能呢?SE 近年来越来越多的企业开始涉足搜索引擎营销,有的企业选择SEO有的则选择PPC,更有甚者两者同时运行.那么对于企业来说如何处理好SEO与PPC才能让搜索引擎影响发挥最大的效能呢?SEO与PPC并不存在冲突,笔者认为最好的搜索引擎营销策略是将两者进行合并,让两者相辅相成,提升站点的转换率.首先我们就先来老话重提谈