一、XSL:扩展样式语言,主要包含:XSLT(用于转化XML的语言),XPath(在XML历练导航的语言),XSL-FO(将XML文档格式化的语言)二、语言发展起因:XML语言是用来表示数据的自解释性语言,它的标签是随意定义的,不像HTML那样,标签具有特定的含义,因此,是无法在浏览器里面显示XML的,如果需要,则必须使用另外一种语言将XML转化成类似HTML语言的形式,这样就诞生了XSLT,也就是XSL Transform语言,它定义了怎么去显示一个XML文件。三、语言语法简介:1.<xsl:template>元素用于构建模版,match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。
当XSLT处理器使用XSL式样表转换XML文档时,处理器将遍历XML文档的树状结构,一次浏览每个节点,并将浏览的节点与式样表中的每个模板规则的模式进行比较。如果处理器找到了与模板规则的模式相匹配的节点,处理器就会输出此规则的模板。模板通常包含了一些元素指令、新的数据,或者从源XML文档中复制的数据。详细解释可见:http://lavasoft.blog.51cto.com/62575/60408
2.<xsl:apply-template>
首先展示一个例子:
<xsl:template match = "chapter/title">
<h1>
<xsl:apply-templates/>
</h1>
</xsl:template>
<xsl:apply-template>是说对匹配的Node或者Element应用XSLT的内置模版(内置模板就是当XSLT转换器找不到用户为元素定义的模板时,所使用的缺省模板。)
详细解释可见:http://blog.sina.com.cn/s/blog_5920510a0100p0rd.html
四、JavaScript解决方案
我们是通过以下途径完成这个工作的:向 XML 文件添加 XSL 样式表,并通过浏览器完成转换。
即使这种方法的效果很好,在 XML 文件中包含样式表引用也不总是令人满意的(例如,在无法识别XSLT的浏览器这种方法就无法奏效)。
更通用的方法是使用 JavaScript 来完成转换。
通过使用 JavaScript,我们可以:
- 进行浏览器确认测试
- 根据浏览器和使用者的需求来使用不同的样式表
以下是代码范例:(来自:http://www.w3school.com.cn/xsl/xsl_client.asp)
<html>
<body>
<script type="text/javascript">
// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("cdcatalog.xml")
// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("cdcatalog.xsl")
// Transform
document.write(xml.transformNode(xsl))
</script>
</body>
</html>
五、何时转换?
1.既可以在服务器端转化成可以显示的文件:
JavaScript 解决方案无法工作于没有 XML 解析器的浏览器。为了让 XML 数据适用于任何类型的浏览器,我们必须在服务器上对 XML 文档进行转换,然后将其作为 XHMTL 发送到浏览器。
这是 XSLT 的另一个优点。XSLT 的设计目标之一是使数据在服务器上从一种格式转换到另一种格式成为可能,并向所有类型的浏览器返回可读的数据。
范例:
<%
'Load XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))
'Load XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))
'Transform file
Response.Write(xml.transformNode(xsl))
%>
2.也可以在客户端转化成可以显示的文件