|
XSLT的处理模型(6)
|
|
| |
|
来源:XSLT.org.cn 作者:XSLT专业站 发布时间:2007-08-04
|
|
XSLT的处理模型(6)
今天是2001年4月2日,那么此时我说"明天我要出去玩"的意思是"2001年4月3日我要出去玩",假设我一觉醒来,已经是4月3日,这时如果我说"明天我要工作",那意思当然是4月4日我要工作。这里"今天"这个概念就相当于当前位置,"我"是XSLT处理器,当前位置是动态改变的,因此name元素相当于"明天",明天的实际意义会随着今天的具体所指不同而有所不同。在XSLT的规范中,当前位置称为上下文(context)。它实际含义就是XSLT处理当前处理的节点集合。
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/Transform">
第一行代码明确表明本文档是一个符合XML1.0语法的XML文档,这对于任意一个XSLT文档来说都是必需的。第二行则规定了文档唯一的根元素,XSLT语法规定XSLT文档的根元素必须是stylesheet元素,根元素的version属性也是必须的,它指明了本文档中使用的XSLT规范,目前情况下该值必须是1.0。
同时XSLT还提供了对XML名域规范的支持,名域属性xmlns:xsl="http://www.w3.org/1999/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这个名域。两个不同的名域在功能和描述方式上有很大的差异,例如在正式的XSLT规范中出现了sort元素,而在工作草案中并没有提供这个元素,它只是简单提供了order属性用于结点集合的重新排序。
Stylesheet元素的完整语法是:
<xsl:stylesheet id = "id" extension-element-prefixes = "prefixes" exclude-result-prefixes = "prefixes" version = "number"> </xsl:stylesheet>
其中version元素如前所述,id属性唯一标记stylesheet元素,它具有特殊的用法,本书的大部分篇章不涉及该元素。
标题: XSLT的处理模型(6)
关键字:处理模型 XSLT 元素 语法 规范 文档 前缀
|
| 上一篇:XSLT的处理模型(5) 下一篇:XSLT的处理模型(7) |
|
|
|
|
|