xslt是由xsl(extensible stylesheet language)发展而来的,xslt是一种基于xml的语言,用于将一类(class)xml文档转换成另一种xml文档。
为什么要转换?
转换的目的有多种: (1)显示:比如把dataset的xml转换成html(html可以认为是xml的特例,因为tag集完全确定)或wml
(2)b2b中的edi,比如<vendor>全部变成<supplier>,甚至数据也可以以特定的方式改变
(3)编程方面可能存在的特殊要求
xslt与xml的关系类似html与css的关系
在css文件中,定义有一些专门的格式,大意是每逢某个tag,就将其括起来的内容以某种字体或颜色来显示。xslt有类似的功效,比如每逢一个特定的tag就将其内容显示在表格单元中。但是xslt还有另外一个更强的功能:转换数据(为特定的用户或者设备),其结果是:源文档中的数据,可能与结果文档中的不同,比如一些数据不要了,却出现另一些数据(如汇总数据或者wml中的特殊设置,或者字符数据发生变化)。
html引用css往往是在文件中静态联接css,如下例: ======test.html
<html>
<head>
<link type="text/css" href="stylesheet1.css" rel="stylesheet" />
</head>
<body>
<h1>header 1</h1>
this is a test
</body>
</html>
==========stylesheet1.css
h1
{
color: red; font-style: italic; font-family: arial; font-variant: normal
}
与此类似,xml文件中也可以指定适用的xslt文件。但是真正有用的是动态apply不同的xslt文件,比如:<%@ language = jscript %>
<%
// set the source and style sheet locations here
var sourcefile = server.mappath("simple.xml");
var stylefile = server.mappath("simple.xsl");
// load the xml
var source = server.createobject("msxml2.domdocument");
source.async = false;
source.load(sourcefile);
// load the xslt
var style = server.createobject("msxml2.domdocument");
style.async = false;
style.load(stylefile);
response.write(source.transformnode(style));
%>
两种转换模式:模板驱动与数据驱动
template-driven model:类似邮件合并,根据xslt的要求寻找源文档中的数据,找到后插入到预定的位置,最后形成一个符合模板要求的文档。
data-driven model:根据源文档的结构,在xslt中寻找匹配的模板片断,最终的格式类似源文档,而不是xslt中的整体模板样式。同一个xslt中可以包括两种模式。
