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( ); } } }