站内搜索:     
站点首页破釜学院编程开发XSL教程 → XSLT的处理模型(6)
正在加载相关信息.....
Web 站内搜索
XSLT的处理模型(6)
】【打印】【加入收藏】【关闭收藏到新浪ViVi】【收藏到365KEY】 浏览字号:
日期:2004-08-02 人气: 出处:饮水思源站
今天是2001年4月2日,那么此时我说"明天我要出去玩"的意思是"2001年4月3日我要出去
玩",假设我一觉醒来,已经是4月3日,这时如果我说"明天我要工作",那意思当然是4
月4日我要工作。这里"今天"这个概念就相当于当前位置,"我"是XSLT处理器,当前位置
是动态改变的,因此name元素相当于"明天",明天的实际意义会随着今天的具体所指不
同而有所不同。在XSLT的规范中,当前位置称为上下文(context)。它实际含义就是X
SLT处理当前处理的节点集合。
1.5     <xsl:stylesheet>元素
XSLT文档是一个合法的XML文档,因此它必须服从XML的语法。这个从XSLT文档的前面两
句就可以看出来:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfor
m">
第一行代码明确表明本文档是一个符合XML1.0语法的XML文档,这对于任意一个XSLT文档
来说都是必需的。
第二行则规定了文档唯一的根元素,XSLT语法规定XSLT文档的根元素必须是stylesheet
元素,根元素的version属性也是必须的,它指明了本文档中使用的XSLT规范,目前情况
下该值必须是1.0。
同时XSLT还提供了对XML名域规范的支持,名域属性xmlns:xsl="http://www.w3.org/19
99/XSL/Transform"声明了"xsl"这个名域前缀。该名域前缀对应的URL表示了XSLT1.0正
式规范规定的一套标记集合,由此如果stylesheet中的元素名域前缀是xsl,则表示该节
点在上述URL中定义了语法和语义,比如语句<xsl:if test="position()=last()"/>中的
元素if就是在XSLT1.0规范中定义的元素,它的语法是有一个test属性,语义是用于表示
对当前节点集是否满足特定条件的一个判断,在这个语句中表示当前处理的节点是不是
最后一个节点。
需要注意名域前缀xsl并不是强制性命名的,名域前缀可以取任意的名字,比如可以这样
声明XSLT的名域:xmlns:abc="http://www.w3.org/1999/XSL/Transform,这样以后使
用所有XSLT中的元素时必须在前面加上abc:才表示该元素来自XSLT规范。在本书中所有
的例子都使用xsl名域前缀,主要是出于通用性和可理解性的考虑。
使用过msxml2.5的读者可能会记得曾经使用过这样的名域:xmlns:xsl="http://www.w3
.org/tr/WD-xsl", 该名域对应了XSLT的工作草案的语法和语义,msxml2.5发布的比较
早,那时W3C还没有出XSLT1.0的正式版本,因此在那个时候之前的XSLT处理器只能支持
WD-xsl这个名域。两个不同的名域在功能和描述方式上有很大的差异,例如在正式的XS
LT规范中出现了sort元素,而在工作草案中并没有提供这个元素,它只是简单提供了or
der属性用于结点集合的重新排序。
Stylesheet元素的完整语法是:
<xsl:stylesheet
  id = "id"
  extension-element-prefixes = "prefixes"
  exclude-result-prefixes = "prefixes"
  version = "number">
</xsl:stylesheet>
其中version元素如前所述,id属性唯一标记stylesheet元素,它具有特殊的用法,本书
的大部分篇章不涉及该元素。

>>>> 进入论坛交流 <<<<