一、xsl
不清楚xsl是什么,我们可以通过如下对比,来理解。
| CSS | XSL |
定义 | HTML样式表 | XML样式表 |
标签 | 使用预先定义的标签,标签的意义很容易被理解 | 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且这些标签的意义并不都那么容易被理解 |
添加标签,即显示 | <table> 元素定义表格 -并且浏览器清楚如何显示它,通过 CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。 | <table> 元素意味着一个 HTML表格,一件家具,或是别的什么东西 -浏览器不清楚如何显示它 |
XSL -不仅仅是样式表语言,XSL包括三部分:
XSLT
一种用于转换 XML文档的语言。
XPath
一种用于在 XML文档中导航的语言。
XSL-FO
一种用于格式化 XML文档的语言。
二、实例转换
//XML文档
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
.
</catalog>
//XSLT 代码
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html> //html,body,table等标签为html标签,这里是规定在html的具体位置标签显示我们的信息
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">Title</th>
<th align="left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd"> //在html 标签中插入<xsl>标签来绑定XML中的节点,“/”表示层次关系
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each> //结束标签
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
//将xsl 链接到xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> // 链接语句
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
.
</catalog>
从上可以看出,XSLT和XML的关系:
1、XSL可描述如何来显示 XML文档;
2、XSL和XML编写顺序问题。
一种:XSL在XML基础上进行编写,先知道XML中节点的名称,然后XSL中直接拿来用。
适用情况:XML内容确定;xml先于XSL之前已经准备好,那这种方法无疑是ok的。
另一种:XSL,XML独立编写。这时的XSL是一个字段不填写的框架模板,等有了XML文档,再来填空,使用。
适用情况:xml使用量大,且显示要求基本一致;两个文档被不同人编写;XML文档字节不确定等这些因素存在的化,我们就可以使用该方法。
这两种的适用性,想必不用我多说,实际生活中,我们可以根据实际情况来选择使用,那种方便用那种。