xsl教程:XSL简明教程




. XSL入门

1.XSL---XML样式表

HTML网页使用预先确定标识(tags)这就是说所有标记都有明确含义例如<p>是另起行<h1>是标题字体所有浏览器都知道如何解析和显示HTML网页
然而XML没有固定标识,我们可以建立我们自己需要标识所以浏览器不能自动解析它们例如<table>可以理解为表格也可以理解为桌子由于XML可扩展性使我们没有个标准办法来显示XML文档
为了控制XML文档显示我们有必要建立种机制CSS就是其中但是XSL(eXtensible Stylesheet Language)是显示XML文档首选样式语言它比CSS更适合于XML

2.XSL --- 不仅仅是种样式表

XSL由两部分组成:

是转化XML文档; 2是格式化XML文档

如果你不理解这个意思可以这样想:XSL是种可以将XML转化成HTML语言种可以过滤和选择XML数据语言种能够格式化XML数据语言(比如用红色显示负数)

3.XSL --- 它能做什么?

XSL可以被用来定义XML文档如何显示可以将XML文档转换成能被浏览器识别HTML文件通常XSL是通过将每个XML元素\"翻译\"为HTML元素来实现这种转换

XSL能够向输出文件里添加新元素或则移动元素XSL也能够重新排列或者索引数据它可以检测并决定哪些元素被显示显示多少

4.XSL在IE5中显示

注意:IE5.0中并不能完全兼容W3C组织发布最新XSL标准IE5.0是在XSL标准最终确定以前发布微软已经承诺在IE5.5中修正 2.XSL转换
1.将XML转换成HTML

XSL是如何将XML文档转换成HTML文件呢?我们来看个例子下面是XML文档部分: <?xml version=\"1.0\" encoding=\"ISO8859-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>
...然后我们将下面XSL文件作为HTML模板将XML数据转换为HTML文件:<?xml version=\'1.0\'?>
<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/TR/WD-xsl\">
<xsl:template match=\"/\">
<html>
<body>
<table border=\"2\" bgcolor=\"yellow\">
<tr>
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select=\"CATALOG/CD\">
<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:for-each元素作用是定位XML文档中哪些元素需要按以下模板显示select属性用来定义源文件中元素名指定属性这种语法又称为XML
Pattern(模式)类似文件子目录表示形式xsl:value-of元素用来在当前层次中插入子元素内容模板

XSL样式表自身也是个XML文档因此XSL文件开头以个XML声明开始 xsl:stylesheet元素用来声明这是个样式表文件<xsl:template
match=\"/\">语句表示XML源文档在当前目录下

如果为XML文档加上XSL样式表看下面代码第2行浏览器就可以精确将XML 文档转换为HTML文件<?xml version=\"1.0\" encoding=\"ISO8859-1\" ?>
<?xml-stylesheet type=\"text/xsl\" href=\"cd_catalog.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> 3. XSL--在客户端实现
1.JavaScript解决方案

在上面章节中我们已经解释了XSL是如何将XML转换成HTML文件思路方法就是在XML文档头部加入个XSL样式表信息然后让浏览器执行转换过程

这种思路方法在大部分情况下都做得很好但是在不支持XML浏览器中就无法正确显示了

个更好更全面解决方案是使用Javascript来实现XML到HTML转换但是使用JavaScript必须得到以下功能支持:

a.允许Javascript代替浏览器进行细节检测;

b.根据区别需要和区别浏览器使用区别样式表

对于XSL来说这是完全可行设计XSL目标的就是允许将种格式转换成另种格式支持区别浏览器支持区别用户需求未来浏览器重要任务就是在客户端执行XSL转换工作

2.个具体例子

下面是我们上面提到个XML文档(cd_catalog.xml)例子部分代码:

<?xml version=\"1.0\" encoding=\"ISO8859-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>
.
.
.

下面是完整XSL文件(cd_catalog.xsl):<?xml version=\'1.0\'?>
<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/TR/WD-xsl\">
<xsl:template match=\"/\">
<html>


<body>
<table border=\"2\" bgcolor=\"yellow\">
<tr>
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select=\"CATALOG/CD\">
<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>
注意现在XML文件还没有加入XSL样式表还没有被转换成HTML文件

下面是用JavaSript来实现最后转换HTML代码:<html>
<body>
<script language=\"javascript\">
// Load XML
var xml = ActiveXObject(\"Microsoft.XMLDOM\")
xml.async = false
xml.load(\"cd_catalog.xml\")
// Load the XSL
var xsl = ActiveXObject(\"Microsoft.XMLDOM\")
xsl.async = false
xsl.load(\"cd_catalog.xsl\")
// Transform
document.write(xml.transformNode(xsl))
</script>
</body>
</html>
上面代码中使用了Javascript如果你不知道如何写JavaScript您最好专门学习

段代码建立个Microsoft Parser(XMLDOM)解析对象并将XML文档读入内存;第 2段代码建立另外个对象并导入XSL文档;最后行代码将XML文档用XSL文档转换并将结果输出到HTML文件中

Tags:  xsl教程

延伸阅读

最新评论

发表评论