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

2006年3月16日

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) | 编辑 收藏
 
Lucene
由于数据库索引不是为全文索引设计的,因此,使用like "%keyword%"时,数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,LIKE对性能的危害是极大的。如果是需要对多个关键词进行模糊匹配:like"%keyword1%" and like "%keyword2%" ...其效率也就可想而知了。
 Lucene全文索引引擎数据库
索引将数据源中的数据都通过全文索引一一建立反向索引对于LIKE查询来说,数据传统的索引是根本用不上的。数据需要逐个便利记录进行GREP式的模糊匹配,比有索引的搜索速度要有多个数量级的下降。
匹配效果通过词元(term)进行匹配,通过语言分析接口的实现,可以实现对中文等非英语的支持。使用:like "%net%" 会把netherlands也匹配出来,
多个关键词的模糊匹配:使用like "%com%net%":就不能匹配词序颠倒的xxx.net..xxx.com
匹配度有匹配度算法,将匹配程度(相似度)比较高的结果排在前面。没有匹配程度的控制:比如有记录中net出现5词和出现1次的,结果是一样的。
结果输出通过特别的算法,将最匹配度最高的头100条结果输出,结果集是缓冲式的小批量读取的。返回所有的结果集,在匹配条目非常多的时候(比如上万条)需要大量的内存存放这些临时结果集。
可定制性通过不同的语言分析接口实现,可以方便的定制出符合应用需要的索引规则(包括对中文的支持)没有接口或接口复杂,无法定制
结论高负载的模糊查询应用,需要负责的模糊查询的规则,索引的资料量比较大使用率低,模糊匹配规则简单或者需要模糊查询的资料量少
Lucene简介[中文]
posted @ 2006-03-16 21:27 Minggo 阅读(214) | 评论 (0) | 编辑 收藏
 
随笔:7 文章:0 评论:1 引用:0
<2006年3月>
日一二三四五六
2627281234
567891011
12131415161718
19202122232425
2627282930311
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