1. 样式表简介
XML是程序间交换数据的简单而标准的方法,并不包含显示信息。可以通过样式表定义XML的数据显示方式,将XML数据与其显示的表达形式分开。W3C给出了两种样式表语言标准,一种是级联样式表CSS(Cascading Style Sheets),另一种是可扩展样式语言 XSL (eXtensible Stylesheet Language),下面对这两种样式表做简单介绍。
2. CSS样式表
级联样式表CSS是一种样式描述规则,是针对HTML而提出的样式表语言,也可以用于描述XML文档的显示。请看一个示例先:
book.xml
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/css" href="book.css"?>
<book>
<name>The C++ Standard Library</name>
<author>Nicolai M.Josuttis</author>
</book>
book.css
book {
color: navy;
background-color: white;
display: block;
}
name {
display: block;
font-family: Arial, Helvetica, sans-serif; font-size: 32pt;
width: 30em;
color: red;
}
author {
display: block;
font-size: 20pt;
color: blue;
}
在XML 文档中使用如下指令来引用CSS样式表:
<?xml-stylesheet href=”book.css” type=”text/css”?>
XML解析器解析XML和CSS文件,过程如下:
· 解析book.xml,抽取其元素。
· 使用book.css文件,应用样式格式化XML文档中的元素。
3. XSL样式表简介
XSL是一种用来转换XML文档的样式表,它包括结构转换(XSLT)和格式化输出(XSL-FO)两部分。在结构转换的过程中,XSL通过XPath来查找和定位XML文档中的信息。XPath是一种专门用来在XML文档中查找信息的语言,用来描述如何识别、选择、匹配XML文档中的各个元素。XML通过XSLT和XPath,可以把XML转换成任何一种文档,当然也包括HTML文档。
4.
我们先来看一下例子来了解XSL的基本结构:
book.xml
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="book.xsl"?>
<books>
<book>
<name>The C++ Standard Library</name>
<author>Nicolai M.Josuttis</author>
</book>
<book>
<name>The Mythical Man-Month</name>
<author>Frederick P Brooks Jr.</author>
</book>
<book>
<name>C# Design Pattern</name>
<author>James W. Cooper</author>
</book>
</books>
book.xsl
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head><title>Book Store</title></head>
<body>
<h2 align="center">Book Store</h2>
<xsl:apply-templates select="books"/>
</body>
</html>
</xsl:template>
<xsl:template match="books">
<table border="1" cellpadding="0" align="center">
<tr><th>Name</th><th>Author</th></tr>
<xsl:for-each select="book">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="author"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
分析上面的例子,可以看出XSL文件由以下几部分组成:
· XSL文档也是XML文档,所以第一行要有XML声明:
<?xml version="1.0" encoding="gb2312"?>
· 接下来是XSL声明:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!--模板规则-->
<!--输出模板-->
</xsl:stylesheet>
在XSL声明中包含模板,模板中定义XML的输出格式。
需要注意的几个地方:
· XSL本身是XML文档,注意标签的匹配。
· <xsl:stylesheet>既是XSL的声明,也是根元素,要放在文件的首部。
· 要用xmlns指明XSL的命名空间:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
· 样式表中的所有模板都由<xsl:template>声明,模板可以说明处理的对象,处理方式或是转换的结果。