分享
 
 
 

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

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

上篇讲到了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文件就创建好了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有