• XPath函数——字符串函数(转载)


    本文是转载的,原文网址:http://www.cnblogs.com/zhaozhan/archive/2010/01/17/1650242.html

     字符串函数主要用来处理字符串。字符串函数主要包括以下:concat(),contains(),normalize-space(),substing(),substring-before(),subsring-after(),translate().

          1、concat()

          concat()函数用于串连多个字符串。

          简单示例:

          xml:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <root>
         <e id="1">st</e>
         <e id="2">nd</e>
         <e id="3">rd</e>
      </root>

          xslt:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="text" version="1.0" encoding="gb2312" indent="yes"/>    
          <xsl:template match="/root">
             <xsl:for-each select="e">
                  <xsl:value-of select="concat(@id,.,'&#x000A;')"/>       
             </xsl:for-each>
          </xsl:template>
      </xsl:stylesheet>

          结果:

    1. 1st
      2nd
      3rd

      

          2、contains()

          contains(str1,str2)函数用来判断str2是否是第一个字符串的一部分。

          简单示例:

          xml:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <books>
         <book>XML</book>
         <book>XSLT</book>
         <book>XPath</book>
         <book>C#</book>
      </books>

         xslt:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="xml" version="1.0" encoding="gb2312" indent="yes"/>    
          <xsl:template match="/books">
             <books>
             <xsl:for-each select="book">
                  <xsl:if test="contains(.,'X')">
                      <xsl:copy>
                          <xsl:value-of select="."/>                
                      </xsl:copy>            
                  </xsl:if>     
             </xsl:for-each>
             </books>
          </xsl:template>
      </xsl:stylesheet>

         结果:

    1. <?xml version="1.0" encoding="gb2312"?>
    2. <books>
    3.     <book>XML</book>
          <book>XSLT</book>
          <book>XPath</book>
      </books>

        3、normalize-space()

        normalize-space()用来将一个字符串的头部和尾部的空白字符删除,如果字符串中间含有多个连续的空白字符,将用一个空格来代替。

        简单示例:

        xml:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <article>
          <title>  When    The  Wind Blows</title>
          <paragraph>
                When you have get ready for everything ,you  could  
                                              Sleep though the wind blows    
          </paragraph>
          <paragraph>
                That means you should          do your best on your work and fear
                        nothing    
          </paragraph>
      </article>

        xslt:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="xml" version="1.0" encoding="gb2312" indent="yes"/>    
          <xsl:template match="/books">
              <xsl:apply-templates select="article"/>
          </xsl:template>
          <xsl:template match="article">
              <xsl:copy>
                  <xsl:apply-templates select="*"/>
              </xsl:copy>    
          </xsl:template>
          <xsl:template match="*">
              <xsl:copy>
                  <xsl:value-of select="normalize-space()"/>        
              </xsl:copy>    
      </xsl:template>
      </xsl:stylesheet>

         结果:

    1. <?xml version="1.0" encoding="gb2312"?>
      <article>
          <title>When The Wind Blows</title>
          <paragraph>When you have get ready for everything ,you could Sleep though the wind blows</paragraph>
          <paragraph>That means you should do your best on your work and fear nothing</paragraph>
      </article>

        4、starts-with()

        start-with(string,startr)函数用来判断string是否以startstr开头。

        简单示例:

        xml:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <books>
         <book>XML</book>
         <book>XSLT</book>
         <book>XPath</book>
         <book>C#</book>
      </books>

        xslt:

    显示行号 复制代码 
    1. <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="xml" version="1.0" encoding="gb2312" indent="yes"/>    
          <xsl:template match="/books">
              <xsl:copy>
                  <xsl:for-each select="book">
                      <xsl:if test="starts-with(.,'X')">
                          <xsl:copy-of select="."/>          
                      </xsl:if>    
                  </xsl:for-each>
              </xsl:copy>
          </xsl:template>
      </xsl:stylesheet>

         结果:

    1. <?xml version="1.0" encoding="gb2312"?>
    2. <books>
    3.     <book>XML</book>
          <book>XSLT</book>
          <book>XPath</book>
      </books>

         

        5、string-length()

        string-length(string)函数用来返回参数string的长度,如果参数string为缺省,将返回上下文节点的字符串长度。

        6、substring()

        substring(string,number,length)函数用来截取字符串。参数string用于指定要截取的字符串;参数number用于指定开始位置;参数length用于指定截取字符串的长度。如果缺少length参数将从开始位置number一直到截取字符串的长度

        简单示例:

        xml:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <root>
         <text>123456789ABCDEF</text>
      </root>

         xslt:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="text" version="1.0" encoding="gb2312" indent="yes"/>    
          <xsl:template match="/root">
              <xsl:value-of select="substring(text,1,5)"/>
              <xsl:text>&#x000A;</xsl:text>
              <xsl:value-of select="substring(text,1)"/>
              <xsl:text>&#x000A;</xsl:text>
              <xsl:value-of select="substring(text,1,string-length(text))"/>
          </xsl:template>
      </xsl:stylesheet>

        结果:

    1. 12345
      123456789ABCDEF
      123456789ABCDEF

        7、substring-before()

        substring-before(str1,str2)函数用于返回字符串str1中位于字符串str2之前的部分。

        简单示例:

        xml:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <datetime>
          <date>2010-01-17</date>
          <time>22:49:30</time>
      </datetime>

         xslt:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="text" version="1.0" encoding="gb2312" indent="yes"/>    
          <xsl:template match="/datetime">
              <xsl:apply-templates select="*"/>
          </xsl:template>
          <xsl:template match="date">
              <xsl:value-of select="concat(substring-before(.,'-'),'年')"/>    
          </xsl:template>
          <xsl:template match="time">
              <xsl:value-of select="concat(substring-before(.,':'),'时')"/>    
          </xsl:template>
      </xsl:stylesheet>
    2. 
      

         结果:

    1. 2010年22时

        8、substring-after()

        substring-after(str1,str2)函数跟substring-before类似,substring-after0返回字符串str1中位于字符串str2之后的部分。

        简单示例:

        xml:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <dir>
          <file>a.txt</file>
          <file>t.xml</file>
          <file>t.xslt</file>
      </dir>

         xslt:

    1. <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="xml" version="1.0" encoding="gb2312" indent="yes"/>    
          <xsl:template match="/dir">
              <extends>
                  <xsl:for-each select="file">
                      <extend>
                          <xsl:value-of select="substring-after(.,'.')"/>
                      </extend>
                  </xsl:for-each>        
              </extends>
          </xsl:template>
      </xsl:stylesheet>

       结果:

    1. <?xml version="1.0" encoding="gb2312"?>
      <extends>
          <extend>txt</extend>
          <extend>xml</extend>
          <extend>xslt</extend>
      </extends>

        9、translate()

        translate(string,replaced_txt,replacement_txt)函数用来替换字符串,替换string中的所有replaced_txt为replacement_txt.

    学习的时间不一定要特定安排
  • 相关阅读:
    内蒙古草原之行
    【iOS开发笔记25/50】:正则表达式
    读书笔记:《写给大家看的设计书》
    【iOS开发笔记22/50】:恼人的a valid provisioning profile for this executable was not found错误
    【搞定GTD】打造高效的OmniFocus系统
    【iOS开发笔记24/50】调整UIImage的大小
    【iOS开发笔记26/50】我自己写的苹果应用程序XQViewer终于上架了,解决了一系列的问题,终于挺过来了
    桥牌笔记:双挤
    养成一个习惯需要几年,而毁掉一下习惯只需要一天
    使用SuperMemo背单词2000天,抓图纪念一下!
  • 原文地址:https://www.cnblogs.com/zhongzheng123/p/5689201.html
Copyright © 2020-2023  润新知