欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XSL的基本语法 博客分类: xsl xsl 

程序员文章站 2024-02-20 22:33:22
...
http://www.w3school.com.cn/xsl/el_output.asp

⊙XSL模板
      模板是XSL中最重要的概念之一,XSL文件就是由一个一个的模板组成的,任何一个XSL文件至少包含一个模板.
    定义一个模板的基本语法是:
<xsl:template match="pattern">
       <!--输出模板-->
</xsl:template>
     属性match则控制模板的匹配模式,确定在什么情况下执行此模板.属性match的取值把模板规则与指定的元素或属性相比较,只有指定的节点才会被处理.其中最上层的模板即根节点必须将match的取值设定为"/".
     如果match的取值为"*",那么表示该规则适用于所有的未单独指定处理的元素节点.此外,还可以使用路径指定符来指定一些特殊位置的元素与模板相匹配. "//"代表任意深度位置,如<xsl:template match="//student">用来匹配文档中任何位置的<student>元素;而如果是<xsl:template match="student//name">则表明是匹配<student>元素的后继节点中所有<name>元素.另外一个路径指定符是"/",表示直接的父子节点关系.<xsl:template match="student/name">则是匹配的是<student>元素子节点中的<name>元素.
     模板定义完毕后,就可以在XSL中调用该模板了,调用一个模板的语法为:
   <xsl:apply-templates select="pattern"/>
    <xsl:apply-templates>用来说明哪一个节点被模板具体处理.select属性用来定义确切的节点名称.<xsl:apply-templates>总是包含在<xsl:template>元素中,像这样:
    <xsl:template match="/">
       <xsl:apply-templates select="roster"/>
    </xsl:template>
直接使用<xsl:templates>元素表示不加区分地对当前节点的所有子节点应用模板,而在select属性中书写

匹配式则能够限定作用对象.

⊙节点选择句<xsl:value-of>
     在许多场合,输出模板中需要使用节点的取值,此时需要使用<xsl:value-of select="pattern" />语句输出节点值,最直接的使用方式是使用空元素<xsl:values-of />,这样可以输出当前节点及其后继节点的取值.而如果仅仅是想输出指定节点的取值,可以利用select属性进行限定(select属性可以是任意合法的路径表达式).
     <xsl:value-of select="name" /> 匹配当前节点的所有子节点为<name>的元素.
     <xsl:value-of select="//student" /> 匹配当前节点中所有后继节点名为<student>的元素.
     在XSL样式表中必须有一个模板规则与根元素相匹配.

⊙循环判断语句<xsl:for-each>
     在XML文档中,如果存在两条以上的数据,必须使用<xsl:for-each>元素指定上层的节点元素,再用<xsl:value-of>设定要输出的内容,才能显示整个XML文档数据.
     标准语法格式为:
     <xsl:for-each select="pattern" order-by="patternlist">
        ......
     </xsl:for-each>
     属性order-by的内容为排序标准列表,在列表元素前面添加加号(+)表示按升序排序,添加减号(-)表示按降序排列.

⊙条件判断句<xsl:if>
     <xsl:if>语句是简单地对条件进行判断.它有三种用法:
     1.如果要用元素的名称作为匹配条件,语法: <xsl:if match="元素名称">
      下例对"name"元素的内容用红色来显示:
      <xsl:if match="name">
          <font color="red"></xsl:value-of /></font>
      </xsl:if>

     2. 如果用元素内容作为匹配条件,语法为: <xsl:if match="元素名称[.'元素内容']">
       下例对成绩超过100分的学生输出"满分"信息.
       <xsl:if match="score[.='100']">
         满分
       </xsl:if>

     3. 如果用元素的属性作为匹配条件,语法为: <xsl:if test=".[@属性名称='属性值']">
       下例是对ID号为105的学生输出"105号学生"信息:
        <xsl:if test=".[@ID='105']">
            105号学生
        </xsl:if>

⊙多条件判断语句<xsl:choose>
      与<xsl:when>和<xsl:otherwise>一起使用,可以进行多条条的分支判断.
      下列例子对成绩不到80分的学生输出"一般",对超过90分的学生输出"优秀",对介于其间的学生输出"良好"信息:
      <xsl:choose>
           <xsl:when match=".[score $lt$ 80]">一般</xsl:when>
           <xsl:when match=".[score $gt$ 90]">优秀</xsl:when>
           <xsl:otherwise>良好</xsl:otherwise>
      </xsl:choose>

⊙排序语句<xsl:sort>
      在XSL中可以对XML源文档的元素进行重新排序,排序的语法就是<xsl:sort>.下列代码就是将文档元素按name排序.
      <xsl:template match="student">
         <xsl:apply-templates select="student">
             <xsl:sort select="@name"/>
         <xsl:apply-templates>
      </xsl:template>
相关标签: xsl