关于模板其他元素的介绍
元素名及说明
xsl:apply-imports                  
调用导入的外部模板,可以应用为部分文档的模板
xsl:apply-templates
应用模板,通过""两个属性关键字确定要应用的模板。当多个模板符合要求时,根据优先级选择模板,同优先级时应用最后出现的样式
xsl:attribute
为元素输出定义属性节点,属性关键自"name"定义属性名,"namespace"声明名字空间
xsl:attribute-set
定义一组属性节点。关键字"name"定义组结点名,"use-attribute-sets"声明匹配属性到每个节点
xsl:call-template
调用由call-template指定的模板
xsl:choose
根据条件调用模板
xsl:comment
在输出加入注释
xsl:copy
复制当前节点到输出
xsl:copy-of
复制当前节点的所有子树,比如属性节点、自节点等到输出
xsl:decimal_format
定义格式化数字函数输出的小数格式,如"decimal-separator、infinity"等
xsl:element
在输出中创建新元素
xsl:fallback
当XML分析器不支持当前的XML版本时,会调用这个元素来判断能否正常处理,如不能则改用默认方式处理,并输出报错信息
xsl:for-each
循环调用模板匹配每个节点
xsl:if
模板在简单情况下的条件调用
xsl:import
导入样式单,只能作为"xsl:stylesheet"和"xsl:transfor"的字节点使用。导入的样式单优先级最高(高于当前样式单和"xsl:include"指定的样式单)
xsl:include
导入其他样式单,其应用的方式与"xsl:import"类似
xsl:key
定义关键字,再使用key()函数作出关键字判断,主要应用在XPath中
xsl:message
发送文本消息给消息缓冲区或消息对话框
xsl:namespace-alias
改变当前名称空间
xsl:number
在结果树中插入带格式的数字
xsl:otherwise
条件调用模板
xsl:output
为序列化结果树指定应用选项
xsl:param
为xsl:stylesheet或xsl:template指定参数
xsl:preserve-space
在文档中保留空格
xsl:processing-instruction
在输出中加入处理指令
msxsl:script
在扩展脚本中定义全局变量、函数
xsl:sort
排序节点
xsl:strip-space
合并文档的空格
xsl:stylesheet
指定样式单
xsl:template
指定模板
xsl:text
输出文本
xsl:transform
等同xsl:template
xsl:value-of
为选定节点加入文本值
xsl:variable
声明表达式中的变量
xsl:when
选择模板
xsl:with-param
撤消模板参数

除了上面提到的类似函数调用的循环匹配模板方式,XSLT还有其他类似于我们常见的程序设计语言的元素。下面我们介绍简单条件下(只有匹配和不匹配两种情况)和多选择条件下的模板匹配调用方式。
简单条件下的模板调用格式为:
<xsl:if text="布尔表达式">
……
</xsl:if>
当布尔表达式的值为真时,执行省略号代表的内容,否则跳过这些内容。这只能判断两种情况。当需要判断多种情况,选择匹配模板时,配合使用元素<xsl:choose>、<xsl:otherwise>和<xsl:when>,格式如下:
<xsl:template match="">
   <xsl:choose>
      <xsl:when test="布尔表达式A">
      //代码段1
      </xsl:when>
      <xsl:when test="布尔表达式B">
      //代码段2
      </xsl:when>
      <xsl:otherwise>
      //代码段3
      </xsl:otherwise>
     </xsl:choose>
    <xsl:apply-templates/>
  </xsl:template>
就像程序设计语言一样:布尔表达式A为真时,编译执行代码段1;表达式B为真时,执行代码段2;其他情况下,执行代码段3。我们可以通过这两种方法,有选择的对部分XML文档加以表现。
下面给出一些实例,演示如何使用表中的元素来完成XML的转换。
创建元素的写法是:
<xsl:element name="TITLE">
This is a test.
</xsl:element>
得到的元素为:
<TITLE>This is a test.</TITLE>
创建属性需要使用元素"xsl-attribute"。比如为元素"TITLE"创建的属性"ID"的写法是:
<TITLE>
   <xsl:attribute name="ID">
        title1
   </xsl:attribute>
This is a test.
</TITLE>
为元素"TITLE"创建的属性为:
<TITLE ID ="title1">This is a test.</TITLE>
我们还可以在文档中加入注释来增加代码的可读性:
<xsl:comment>Create a title.</xsl:comment>
转换后,得到的注释如下:
<!--Create a title-->
在前面的表中,我们讲到使用"copy"和"copy-of"复制节点,比如:
<?xml version="1.0"?>
<A >
指明匹配节点“A”,根据关键字B排序A的内容。
后面我们将介绍XPath的具体内容。

相关文章: