談談CMS內容管理系統的兩種方案:XSL+XML和HTML (二)

來源:互聯網
上載者:User
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檔案就建立好了。

 



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.