Minggo
blog
| 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2006年6月4日

xslt笔记-基本元素、函数

看XSLT,做了点笔记,比较基础、简单
基本元素、函数

1。xml文件中处理指令:
<?xml-stylesheet type="text/xsl" href="FitnessCenter.xsl"?>

2。xslt根元素
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

3。输出到属性:

3.1快速用法:
无效:<Body bgcolor="<xsl:value-of select='/FitnessCenter/Member/FavoriteColor'/>">
有效:<Body bgcolor="{/FitnessCenter/Member/FavoriteColor}">

3.2 用<xsl:attribute输出属性:
<TR>
<xsl:attribute name="bgcolor">yellow</xsl:attribute>

4。一般输出:
<xsl:value-of select="/FitnessCenter/Member/Phone[@type='home']"/>

5。迭代(<xsl:for-each):
<xsl:for-each select="/FitnessCenter/Member/Phone">
       <!--用XPath取得一个XML nodeList-->
      <TR>
          <TD><xsl:value-of select="@type"/></TD>
          <TD><xsl:value-of select="."/></TD>
      </TR>
    </xsl:for-each>

   5.1 XPath用法
      <xsl:for-each select="/FitnessCenter/Member[position() != last())]">
        <!-- 除最后一个元素外都处理 -->
      </xsl:for-each>
      <xsl:for-each select="/FitnessCenter/Member[position() &gt;1]">
        <!-- 除第一个元素外都处理 -->
      </xsl:for-each>
      <xsl:for-each select="/FitnessCenter//Name">
        <!-- 取所有以FitnessCenter为辅元素的Name元素 -->
      </xsl:for-each>
   5.2叠代中的序号
      <xsl:for-each select="/FitnessCenter/Member">
        <xsl:number value="position()" format="A"/>
        <xsl:text>. </xsl:text>
        <xsl:value-of select="Name"/>
        <BR/>
      </xsl:for-each>
      其中:format(格式)可取一下值:
      format=“1” generates the sequence: 1, 2, 3, …
      format=“01” generates: 01, 02, 03, …
      format=“A” generates: A, B, C, …
      format=“a” generates: a, b, c, …
      format=“I” generates: I, II, III, …
      format=“i” generates: i, ii, iii, ...

   5.3迭代中的排序(<xsl:sort)
      <xsl:for-each select="/FitnessCenter/Member">
        <xsl:sort select="Name" order="ascending"/>
        <xsl:value-of select="Name"/>
        <BR/>
      </xsl:for-each>

6。分枝
    6.1简单:
      <xsl:for-each select="/FitnessCenter/Member[position() &gt; 1]">
                    Our special offer to platinum members today is ...
                    <BR/>
      </xsl:if>
    6.2复杂:
    <xsl:choose>
        <xsl:when test='something>
              [action]
        </xsl:when>
        <xsl:when test='something'>
              [action]
        </xsl:when>
        <xsl:otherwise>
              [action]
        </xsl:otherwise>
    </xsl:choose>
7。变量(<xsl:variable)
    7.1简单:
       <xsl:variable name="pi" select="'3.142857142857'"/>
    7.2复杂:
       <xsl:variable name="names">
         <xsl:value-of select="/FitnessCenter/Member[1]/Name"/>
         <xsl:for-each select="/FitnessCenter/Member[position() &gt; 1]">
                    <xsl:text>/</xsl:text>
                    <xsl:value-of select="Name"/>
         </xsl:for-each>
       </xsl:variable>
 



xslt例子(Coloring alternate rows和两个Template例子):
 
1。position() mode 2
例:Coloring alternate rows
<TABLE border="1" width="25%">
        <xsl:for-each select="/FitnessCenter/Member">
                  <TR>
                          <xsl:if test="position() mod 2 = 0">
                                <xsl:attribute name="bgcolor">yellow</xsl:attribute>
                          </xsl:if>
                          <TD><xsl:value-of select="Name"/></TD>
                   </TR>
         </xsl:for-each>
</TABLE>
2。Dument(url) :指向外部另一个Xml文档
<xsl:variable name="fitnessCenter2"
                select="document('file://localhost/xml-course/.../FitnessCenter2.xml')"/>
        <xsl:for-each select="$fitnessCenter2/FitnessCenter/Member">
3。<xsl:call-template
例:使用带参数(param)的模板(template)
<xsl:template match="/">
        <HTML>
            <HEAD>
                <TITLE>Fitness Center</TITLE>
            </HEAD>
            <BODY>
                <xsl:call-template name="displayNameWithFont">
                    <xsl:with-param name="fontFace" select="'Impact'"/>
                    <xsl:with-param name="name"
                            select="/FitnessCenter/Member[1]/Name"/>
                </xsl:call-template>
                <BR/>
                ...
            </BODY>
        </HTML>
    </xsl:template>
    <xsl:template name="displayNameWithFont">
        <xsl:param name="fontFace" select="'Braggadocio'"/> <!-- default font -->
        <xsl:param name="name"/>
        <FONT face="{$fontFace}">
            <xsl:value-of select="$name"/>
        </FONT>
    </xsl:template>
使用带参数的模板例二:
<xsl:template match="/">
        <HTML>
            <HEAD>
                <TITLE>Fitness Center</TITLE>
            </HEAD>
            <BODY>
                16 / 2 =
                <xsl:variable name="result">
                    <xsl:call-template name="NumDiv2">
                         <xsl:with-param name="N" select="16"/>
                    </xsl:call-template>
                </xsl:variable>
                <xsl:value-of select="$result"/>
            </BODY>
        </HTML>
    </xsl:template>
    <xsl:template name="NumDiv2">
        <xsl:param name="N"/>
        <xsl:value-of select="$N div 2"/>
    </xsl:template>

posted @ 2006-06-04 22:01 Minggo 阅读(440) | 评论 (0) | 编辑 收藏
 
xslt中的运算
xslt中的运算 
 粗略看了下xslt,做了点笔记:
1.字符串函数:contain('Welcome','e'):字符串包含,包含:true,不包含:false
                     concat('Welcome ', Name, '!'):字符连接
                     substring-before(string, pattern)
                     substring-after(string, pattern)
                     tarts-with(string, pattern)
                     substring(string, i, len?)
                     string-length(string)
                     translate(string, from-pattern, to-pattern)
                     大小写转换:translate(“Hello”, “ABCDEFGHIJKLMNOPQRSTUVWXYZ”,
                                                            “abcdefghijklmnopqrstuvwxyz”);
2.布尔运算:<         >     =    <=       >=       !=
         &lt;    &gt;    =   &lt;=    &gt;=    !=
3.算术运算:+, -, *, div, mod
   算术函数:sum(node set)  this function sums up all the values in the set of nodes
                  floor(number) returns the largest integer that is not greater than number
                                      Example.  floor(2.5) returns 2
                  ceiling(number) returns the smallest integer that is not less than number
                                      Example.  Ceiling(2.5) returns 3
                  round(number) returns the integer closest to number
                                      Example. round(2.3) returns 2
 
 
posted @ 2006-06-04 21:56 Minggo 阅读(807) | 评论 (0) | 编辑 收藏
 
随笔:7 文章:0 评论:1 引用:0
<2006年6月>
日一二三四五六
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿(2)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案

  • 2006年6月 (2)
  • 2006年3月 (1)
  • 2005年12月 (1)
  • 2005年10月 (2)
  • 2005年9月 (1)

watch list

  • springframework

搜索

  •  

积分与排名

  • 积分 - 3054
  • 排名 - 3569

最新评论

  • 1. re: [导入]用Yale CAS Server 来实现单点登陆(SSO)
  • 评论内容较长,点击标题查看
  • --minggo.zh

阅读排行榜

  • 1. xslt中的运算(807)
  • 2. [导入]用Yale CAS Server 来实现单点登陆(SSO)(542)
  • 3. Tomcat性能调整(464)
  • 4. xslt笔记-基本元素、函数(440)
  • 5. 我的blogmap(252)

评论排行榜

  • 1. [导入]用Yale CAS Server 来实现单点登陆(SSO)(1)
  • 2. 我的blogmap(0)
  • 3. xslt笔记-基本元素、函数(0)
  • 4. xslt中的运算(0)
  • 5. Lucene(0)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 Minggo