XSLT入门 -- 第1章 入门篇

转载 2007年10月14日 21:38:00

1 前言

一般来说,XML文档中没有样式信息(如字体等)。我们必须指定样式信息才能用适当的形式来显示XML文档。XSL(Extensible Stylesheet Language)就是能够应用在XML文档中的一种样式描述语言。

XSL有以下两种。

XSLT(XSL Transformations)
将某个XML文档变换成其他的XML文档
 
FO(Formatting Objects)
定义文档的阅读方法
 

FO的标准尚未确定。XSLT的1.0版是W3C推荐的标准。由于XSLT是XML文档转换语言,虽然不能直接定义显示方式,但可以通过将XML文档转换成能够显示的格式,以达到指定样式的目的。将来,也许能通过XSLT将XML转换成容易显示的格式,而且可以通过FO将XML转换成阅读方法的定义。

虽然说是XML文档转换,但由于XSLT的目的是指定样式,因此并不能说是完全的通用转换语言。然而,XML文档转换的许多场合下都可以使用XSLT。

2 第一步

首先让我们看一个简单的例子,来熟悉一下XSLT样式表的书写方式。被转换的XML文档如代码1所示。1

代码1: hello.xml
<?xml version="1.0"?>
<document>
<content>你好!</content>
</document>
顶层元素为“document”,其下有一个子元素“content”。将该XML文档转换为HTML文档的XSLT样式表如代码2所示。
代码2: hello.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="document">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="content">
<p>
<xsl:value-of select="."/>
</p>
</xsl:template>
</xsl:stylesheet>

 

XSLT样式表也是XML文档,因此第1行写出了XML声明。第2行为XSLT样式表的根元素。在这里指定了命名空间。在XSLT样式表中,XSLT元素和作为输出结果的元素是混杂在一起书写的,因此必须通过命名空间来区分XSLT的命名空间的URI为“http://www.w3.org/1999/XSL/Transform”。

xsl:template元素定义了对各个节点的处理方式,称为模板。在表2中定义了两个模板。

<xsl:template match="document">
该标记标志着对document元素的模板的开始。match属性中指定的字符串为被转换的XML文档中包含的元素。对于document元素的模板为首先输出HTML标记<html>和<body>。其后的xsl:apply-templates元素指明,应用document元素的子元素所对应的模板。
<xsl:apply-templates/>
之后输出</body>和</html>标记。最后是xsl:template的结束标记。
</xsl:template>

 

这样就能够定义一个模板规则。由于在针对document元素的模板中指明了要应用针对子元素的模板,因此需要定义针对子元素的模板。document的子元素是content,因此针对该标记定义模板。

针对content元素的模版中首先输出HTML标记<p>,然后输出content元素的内容。

<xsl:value-of select="."/>
xsl:value-of元素将select属性指定的节点作为字符串输出。“.”可以认为表示元素本身(这里在定义content的模版,因此可认为是content元素)。最后输出</p>标记,结束。

 

XSLT分析器分析的结果如代码3所示。2

代码3: hello.html
<html>
<body>
<p>你好!</p>
</body>
</html>

 

3 结语

我们介绍了非常简单的一个XSLT样式表,应该能抓住概要了吧。创建XSLT样式表,其中心就是定义模板。即使仅创建简单的模版并把它们组合起来,也能做到非常精妙的转换。但是,XSLT的元素并不仅仅是这些。第2章就来介绍XSLT的各种元素。

 

《明解C语言》示例代码和练习代码[第5章]

《明解C语言》,作者:柴田望洋。书中第5章的示例代码和练习代码。
  • cloudmonke
  • cloudmonke
  • 2016年12月19日 15:14
  • 1481

刘汝佳《算法竞赛入门经典(第二版)》习题(二)

水仙花数,输出100~999中的所有水仙花数。若3位数ABC满足ABC=A²+B²+C²,则称其为水仙花数。韩信点兵。倒三角形,输入正整数n≤20,输入一个n层的倒三角形。子序列的和,输入两个正整数,...
  • qq_37653144
  • qq_37653144
  • 2017年04月22日 22:16
  • 1544

算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 例题+习题(15/16)

说明本文是我对第四章题目的练习总结,建议配合紫书——《算法竞赛入门经典(第2版)》阅读本文。 另外为了方便做题,我在VOJ上开了一个contest,欢迎一起在上面做:第四章contest 如果想直...
  • thudaliangrx
  • thudaliangrx
  • 2016年02月19日 22:43
  • 2182

DOS在磁盘管理与系统维护中的典型应用 入门篇.pdf

  • 2015年01月12日 23:10
  • 24.36MB
  • 下载

Spring项目开发(入门篇HelloWorld)

  • 2017年11月15日 16:30
  • 8KB
  • 下载

MELSEC iQ-F FX5用户手册(入门篇)

  • 2017年11月04日 21:39
  • 1.48MB
  • 下载

黑客攻防(入门篇)PDF

  • 2017年12月26日 15:54
  • 43.42MB
  • 下载

systemed入门篇

  • 2017年08月14日 16:58
  • 80KB
  • 下载

Activiti入门篇之二 Spring 与Activiti的

  • 2015年11月08日 22:05
  • 694KB
  • 下载

破解完全入门篇

  • 2015年07月07日 23:41
  • 428KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XSLT入门 -- 第1章 入门篇
举报原因:
原因补充:

(最多只允许输入30个字)