- XML基础教程:常用的XSL标记
-
常用的XSL标记
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源文档中哪一个节点被模板处理。一个模板匹配一个节点。
下面的语句写法说明模板匹配根节点:
< xsl:template match="/">< /xsl:template>
apply-templates语法:
< xsl:apply-templates select = node set-expression mode = qname>
< !-- 执行内容 -->
< /xsl:apply-templates>
二、< xsl:if>?
?
xsl:if类似普通程序语言的if条件语句,允许设定节点满足某个条件时,被模板处理。xsl:if的语法格式为:< xsl:if test=布尔表达式>
template body
< /xsl:if>三、< xsl:choose>,< xsl:when> 和< xsl:otherwise>
xsl:if语法没有else的属性。如果我们要进行多项选择,那么就要使用xsl:choose / xsl:when / xsl:otherwise系列流程控制语法了。
< xsl:choose>
< xsl:when test="@name = 'jacky'">
................
< /xsl:when>
< xsl:otherwise>
.................
< /xsl:otherwise>
< xsl:choose>
四、< xsl:for-each>xsl:for-each语法允许你循环处理被选择的节点。
< xsl:for-each select="$name">
...................
< / xsl:for-each>
五、< xsl:sort>
< xsl:sort>总是作为元素< xsl:apply-templates> 或元素< xsl:for-each>的子元素。包括select , lang, data-type, order, case-order等几个可选属性。
在XSLT中可以对XML源文档的元素进行重新排序,排序的语法就是xsl:sort。
< xsl:apply-templates select="$name">
< xsl:sort select="@name"/>
< /xsl:apply-templates>六、< xsl:attribute>
< xsl:attribute>提供在输出文档中创建元素属性的功能,与直接在文档中设置元素属性不同,< xsl:attribute>的好处是可以根据输入的文档为创建的属性赋值。必需属性:
name: 该属性定义通过< xsl:attribute>元素创建的属性的名字。可选属性:
namespace:该属性定义创建出来的属性的nameplace。可以通过< xsl:choose>, < xsl:text>, 和 < xsl:value-of> 元素为< xsl:attribute>元素创建的属性赋值。
< xsl:attribute name="$name">
< xsl:value-of select="count(listitem)"/>
< /xsl:attribute>七、< xsl:attribute-set>
< xsl:attribute-set>提供在输出文档中创建一组元素属性的功能,可以通过名字引用整个属性组,而不用单个地创建它们。
必需属性:
name: 该属性定义属性组的名字。可选属性:
use-attribute-sets:该属性可以列出属性组中引用的其他一个或多个属性组,如果引用了多个属性组需要用空格隔开它们。使用这个属性可以是一个属性组嵌入另一个属性组,但是如果一个属性组直接或间接地嵌入了自己,将会产品错误。换句话说,如果属性组A内嵌了B,B内嵌C,而C内嵌了A, XSLT解析器将会报告错误。< xsl:attribute-set>可以包含一个或多个< xsl:attribute>。< xsl:attribute-set>是一个顶级元素,只能作为< xsl:stylesheet>的子元素。
< xsl:attribute-set name="$name">
< xsl:attribute name="font-size">12pt< /xsl:attribute>
< xsl:attribute name="font-family">sans-serif< /xsl:attribute>
< /xsl:attribute-set>八、< XSL:value-of>
XSL:value-of用来将源文档中元素的文本值写到输出文档中。
< xsl:value-of select="name"/>
NOTE: 同样功能的还有xsl:copy-of,用法一样
和XSLT配合还需要XPATH的强大功能,进行某些条件计算
- 与本文主题相关的文章
