3.1 xsl:template和xsl:apply-templates
模板(template)是xslt中最重要的概念之一。xslt文件就是由一个一个的模板组成,任何一个xslt文件至少包含一个模板。模板的概念就象是搭积木;你如果是程序员,也可以将模板看作一个方法,一个类,或者一个模块。它们可以被拼装组合,也可以单独成块,不同的模板控制不同的输出格式。
模板(template)由两部分组成:匹配模式(match pattern)和执行。简单的讲模式定义xml源文档中哪一个节点将被模板处理,执行则定义输出的是什么格式。两部分对应的语法为xsl:template和xsl:apply-templates。
xsl:template的语法是:
<xsl:template
match = pattern
name = qname
priority = number
mode = qname>
<!-- 执行内容 -->
</xsl:template>
xsl:template的作用是定义一个新模板。属性中name,priority,和mode用来区别匹配同一节点的不同模板。它们不是常用的属性。match属性则控制模板的匹配模式(pattern),匹配模式是用来定位xml源文档中哪一个节点被模板处理。一个模板匹配一个节点。我们用一个例子来帮助理解:
假设我们要处理一个包含章节和段落文档。我们用para元素定义段落,用chapter元素定义章节。我们来看看match属性可能的值。下面的语句写法说明模板匹配所有的para元素
<xsl:template match="para">
</xsl:template>
下面的语句写法说明模板匹配所有的para元素和所有的chapter元素:
<xsl:template match="(chapterpara)">
</xsl:template>
下面的语句写法说明模板匹配所有的父节点为chapter元素的para元素:
<xsl:template match="chapter//para">
</xsl:template>
下面的语句写法说明模板匹配根节点:
<xsl:template match="/">
</xsl:template>
我们再来看apply-templates语法:
<xsl:apply-templates
select = node set-expression
mode = qname>
</xsl:apply-templates>
xsl:apply-templates用来执行那一个节点被模板具体处理。你可以将它理解为程序中调用子函数。select属性用来定义确切的节点名称。xsl:apply-templates总是包含在xsl:template元素中,象这样:
<xsl:template match="/">
<xsl:apply-templates select="para"/>
</xsl:template>
这段代码说明摸板匹配整个文档(根节点),具体执行时处理根节点下所有para元素。
<xsl:template match="para">
<p><xsl:apply-templates/></p>
</xsl:template>
而这一段代码则表示摸板匹配para节点,所有para下的子元素都将被处理。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器