Xslt

XSLT的英文標準名稱爲eXtensible Stylesheet Language Transformation。根據W3C的規範說明書(http://www.w3.org/TR/xslt),最先設計XSLT的用意是幫助XML文檔(document)轉換爲其它文檔。可是隨着發展,XSLT已不只僅用於將XML轉換爲HTML或其它文本格式,更全面的定義應該是:XSLT是一種用來轉換XML文檔結構的語言。 
            爲了使數據便於人們的閱讀理解,咱們須要將信息顯示出來或者打印出來,例如將數據變成一個HTML文件,一個PDF文件,甚至是一段聲音;一樣,爲了使數據適合不一樣的應用程序,咱們必須有可以將一種數據格式轉換爲另外一種數據格式,好比需求格式多是一個文本文件,一個SQL語句,一個HTTP信息,必定順序的數據調用等。而XSLT就是咱們用來實現這種轉換功能的語言。將XML轉換爲HTML,是目前XSLT最主要的功能。
javascript

1.XSLT stylesheets can automate the conversion of the same input into multiple output formats.html

2.XSLT一個很大的優點就是能夠在任何地方隨時在XML數據全局範圍內抓取須要的任何數據,不受XML數據結構影響。
3.將數據和表達形式分離。就象天氣預報的信息能夠顯示在不一樣的設備上,電視,手機或者其它。這樣給你一個XML,一個DTD,就能夠開發XSLT,而不用關心後臺數據如何實現。好比若是有一天忽然以爲要換界面了,那麼從新作一個xsl就行了,後臺的程序和xml的結構徹底不須要修改,若是你用傳統的方法,因爲數據和顯示耦合的太緊密,全部的頁面都將重寫...java

4.將XSLT轉化在客戶端運行能夠大大減小服務器壓力,服務器只須要將XML數據發送到客戶端,XSLT已經保存在本地,從而減少網絡流量.python

5.能夠很好的避免安全性問題,以XSLT轉化獲得的頁面經過查看源代碼獲得的只有XML數據。ajax

6.可以很好的適應需求的快速變化,不用修改邏輯代碼,不用編譯,甚至能夠直接在線修改,就能夠解決比較通常的需求變化。安全

7.另外,是由於它專門用來處理xml,它處理xml比DOM方便多了,對於目前盛行的Ajax應用來講,尤爲有其發揮空間,比較典型的能夠參考AJAXSLT 
ajaxslt是一個針對Ajax在取得XML資料格式後,利用Javascript動態加入XSL-T(XML Stylesheet Language - Transformation)與及XPath的運用所開發的一套元件。通常上,XMLHttpRequest在傳回XML字串後,咱們必須花另外一個功夫將這些XML數據轉換成可以顯示的用戶界面,這是很是繁瑣的工做,並且程序碼的重用是一個惡夢。不過,經過ajaxslt,咱們能夠利用XSLT模版對XML文件進行處理,而後輸出一個用戶界面,固然咱們沒必要了解ajaxslt是怎樣處理XML和XSLT的,只要熟悉XSLT和XPath的原理就能夠很輕鬆地處理XML文件了。
服務器

8.一個xslt能夠生成N種版面佈局,但html就只能經過script來實現.網絡

如下例子:xml轉換成HTML數據結構

以下是要轉換的xml文件howto.xml示例:佈局

<?xml version="1.0"?>
<howto>
  <topic>
      <title>Java</title>
      <url>http://outofmemory.cn/code-snippet/tagged/java</url>
  </topic>
    <topic>
      <title>Python</title>
      <url>http://outofmemory.cn/code-snippet/tagged/python</url>
  </topic>
      <topic>
        <title>Javascript</title>
        <url>http://outofmemory.cn/code-snippet/tagged/javascript</url>
  </topic>
      <topic>
        <title>VBScript</title>
        <url>http://outofmemory.cn/code-snippet/tagged/VBScript</url>
  </topic>
</howto>

示例xslt文件[howto.xsl]

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<html>
<head><title>Real's HowTo</title></head>
<body>
<table border="1">
<tr>
<th>Title</th>
<th>URL</th>
</tr>
<xsl:for-each select="howto/topic">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="url"/></td>
</tr>
</xsl:for-each>
</table>
</body></html>
</xsl:template>
</xsl:stylesheet>

作轉換的java代碼:

import javax.xml.transform.*;
import java.net.*;
import java.io.*;

public class HowToXSLT {
public static void main(String[] args) {
  try {

    TransformerFactory tFactory = TransformerFactory.newInstance();

    Transformer transformer =
      tFactory.newTransformer
         (new javax.xml.transform.stream.StreamSource
            ("src/howto.xsl"));

    transformer.transform
      (new javax.xml.transform.stream.StreamSource
            ("src/howto.xml"),
       new javax.xml.transform.stream.StreamResult
            ( new FileOutputStream("src/howto.html")));
    }
  catch (Exception e) {
    e.printStackTrace( );
    }
  }
}
相關文章
相關標籤/搜索