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( );
    }
  }
}
相关文章
相关标签/搜索