`
persistC
  • 浏览: 71434 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XSLT2.0----<xsl:analyze-string>

    博客分类:
  • XSLT
阅读更多
<xsl:analyze-string>是XSLT2.0新增的指令,语法:
<xsl:analyze-string select="xpathExpression" regex="regExpression" flags="flag">
该指令的主要用途为分析字符串。select属性用于指定要分析的字符串,即inputString。
regex指定分析规则--正则表达式。
<xsl:analyze-string>可能包含如下内容元素(子元素):
1,<xsl:matching-substring>
          <!---some instruction-->
      </xsl:matching-substing>  
用于指定符合正则表达式的子字符串所要执行的动作。
2,<xsl:non-matching-substring>
         <!---some instruction-->
      </xsl:non-matching-substring>
用于指定不符合正则表达式的子字符串所要执行的动作。
 
<xsl:analyze-string>的执行过程为:首先将输入字符串按照正则表达式分割成若干子字符串。然后依次对每个子字符串进行操作:如果子字符串符合正则表达式,那么就执行<xsl:matching-substring>指令(如果存在该指令的话);如果不符合正则表达式,那么就执行<xsl:non-matching-substring>指令(如果存在该指令的话)。
举例来说
<xsl:analyze-string select="abcd1234efg7890" regex="[a-z]+">
        <xsl:matching-substring>
             <!---some instructions-->
        </xsl:matching-substring>
        <xsl:non-matching-substring>
             <!---some instructions-->
        </xsl:non-matching-substring>
</xsl:analyze-string>
首先输入字符串按正则表示被分为四个子字符串--abcd,1234,efg,7890。
接着执行的指令为abcd(matching-instruction)-->1234(non-matching-instruction)-->efg(matching-instruction)-->7890(non-matching-instruction)。
下面举个具体的例子。
XML源文件:
<?xml version="1.0"?>
<
root>
   <branch>2500ppoabcuv12405tyuvirk</branch>
<
/root>
XSLT文件:
<?xml version='1.0'?>
<
xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<
xsl:template match="/">
    <xsl:variable name="regex" select="'\d{4}'"/>
    <xsl:analyze-string select="root/branch" regex="{$regex}">
         <xsl:matching-substring>
             <digits><xsl:value-of select="."/></digits>
         </xsl:matching-substring>
         <xsl:non-matching-substring>
            <word><xsl:value-of select="."/></word>
         </xsl:non-matching-substring>
    </xsl:analyze-string>
<
/xsl:template>
<
/xsl:stylesheet>
转换结果:
<digits>2500</digits>
<word>ppoabcuv</word>
<digits>1240</digits>
<word>5tyuvirk</word>
如果将regex的属性直接写成:regex="\d{4}",我们得到的输出结果是:
<word>2500ppoabcuv1</word>
<digits>24</digits>
<word>05tyuvirk</word>
跟正确的结果不符,这是为什么呢?
这是因为在一个非xpath expression中大括号(curly brackets)括起来的内容表示xpath expression。所以,直接写成regex="\d{4}"时,真实的正则表达式变成了\d4。
要想得到\d{4},正则表达式需要写成regex="\d{{4}}"。
在XSLT中一般认为存在两种表示式,一种是xpath表达式,另一种是非xpath表达式。
用select属性指定的表达式一般是xpath表达式。例如:select="root/branch",表示root下的所有branch节点;但href="root/branch"则表示字符串root/branch。
在xpath表达式中不能使用大括号(curly brackets)。
在非xpath表达式中则需要使用大括号(curly brackets)来引用xpath表达式。
大括号在非xpath表达式中的使用一般有如下几种情况:
1,引用节点或属性
{a},{@a}
2,引用变量
{$var}
3,引用字符串
{'#abc'}
4,引用数字
{1}
5,{{expression}}这种形式,表示{expression}字符串。
分享到:
评论

相关推荐

    eclipse-testng 离线包下载

    &lt;xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:math="http://exslt.org/math" xmlns:testng="http://testng.org"&gt; &lt;xsl:output method="html" indent="yes" omit...

    动易SF通用信息列表解释版

    -- 定义了输出文档的格式、&lt;xsl:output&gt; 是顶层元素(top-level element),必须是 &lt;xsl:stylesheet&gt; 或 &lt;xsl:transform&gt; 的子节点。定义输出的格式html、设置输出格式的 W3C 版本号(仅在 method=...

    docx-xslt:Microsoft Word .docx 模板文件的 XSL 转换

    docx-xslt docx-xslt是一个 Python 库,用于为没有 XML 或 XSLT 编码的 ... ::= &lt;command&gt; &lt;command&gt; ::= &lt;command&gt; | &lt;command&gt; &lt;command&gt; ::= 'xsl' ':' &lt;context&gt; &lt;xsl&gt; &lt;xsl&gt; &lt;context&gt; ::= ':' &lt;context&gt; | &lt;

    xml入门教程/xml入门教程

    如:&lt;?xml version="1.0" encoding="gb2312" standalone="yes"?&gt; 文档类型声明 规定元素的结构和属性列表的取值 如:&lt;!DOCTYPE studinfo SYSTEM "studinfo.dtd"&gt; 2)元素 空元素 &lt;空元素标签名 属性=...

    动易网站标签说明(电子书)

    VALUE-OF select="$outputQty" /&gt;" hits="&lt;XSL:VALUE-OF select="$hits" /&gt;" eliteLevel="&lt;XSL:VALUE-OF select="$eliteLevel" /&gt;" linkOpenType="&lt;XSL:VALUE-OF select="$linkOpenType" /&gt;" xslt="true" /} 32.{PE....

    XSLT 2.0 Programmer's Reference, Third Edition

    however, it is not structured as a tutorial, and there are other books on XSLT that provide a gentler approach for beginners.&lt;br/&gt;&lt;br/&gt;The book does assume a basic knowledge of XML, HTML, and the ...

    testNG-xslt

    用TestNG测试后,自动会生成html的测试报告,不过相信大家都有感觉,... &lt;/xslt&gt; &lt;/target&gt; &lt;/project&gt; 最后执行ant transform就可以了,之后在output目录下就可以看到一个index.html文件,打开它就是测试报告了。

    XSLT 2.0 and XPath 2.0.PDF

    XSLT 2.0 and XPath 2.0.PDF XSLT 2.0 and XPath 2.0.PDF

    XML XML Schema XSLT 2.0和XQuery开发详解源代码.rar

    《XML XML Schema XSLT 2.0和XQuery开发详解》一书的示例源代码

    JSP中使用XSLT所需要的jar

    xerces xalan taglibs-xsl是JSP中调用&lt;xsl:apply xml="result.xml" xsl="result.xsl"&gt;&lt;/xsl:apply&gt;的xslt标签所必须的包。 还需要另外一个文件到http://download.csdn.net/source/655756下载。

    C#XML入门经典 C#编程人员必备的XML技能.part2

    C# XML入门经典——C#编程人员必备的XML技能 &lt;br&gt;作者:[美]Stewart Fraser, Steven 著,毛尧飞,崔伟 译 出版社:清华大学出版社 出版时间:2003年11月 &lt;br&gt;第1章 在C#中使用XML的原因&lt;br&gt;&lt;br&gt;1.1 使用XML的原因&lt;br...

    Professional Ajax

    书名:Professional Ajax&lt;br&gt;语言:English&lt;br&gt;格式:PDF&lt;br&gt;&lt;br&gt;------------------------------------------------&lt;br&gt;How This Book is Structured &lt;br&gt;This book begins by providing background about the ...

    Practical Mod Perl

    Practical Mod Perl&lt;br&gt;&lt;br&gt; Copyright &lt;br&gt; Preface &lt;br&gt; What You Need to Know &lt;br&gt; Who This Book Is For &lt;br&gt; How This Book Is Organized &lt;br&gt; Reference Sections &lt;br&gt; Filesystem Conventions &lt;br&gt; Apache ...

    XML的代码的编写

    xml-stylesheet type='text/xsl' href='_UpgradeReport_Files/UpgradeReport.xslt'?&gt;&lt;UpgradeLog&gt; &lt;Properties&gt;&lt;Property Name="Solution" Value="CodematicDemo"&gt; &lt;/Property&gt;&lt;Property Name="解决方案文件" Value=...

    xml-xslt-xsl-fo-dotnet:使用XML,XSLT,XSL-FO和FO.NET在.NET中生成PDF文档的示例

    xml-xslt-xsl-fo-dotnet 使用XML,XSLT,XSL-FO和在.NET中生成PDF文档的。 XML数据示例,XSL样式表和生成的PDF位于文件夹中(XML和XSL由)。 产生结果result.pdf : 建立解决方案 将source.xml和stylesheet.xsl...

    rng.xsl:Relax NG的XSLT 2.0实现

    — Relax NG的XSLT 2.0实现rng.xsl是用XSLT 2.0编写的Relax NG验证器和简化器。 它利用XSLT对XML和XSD基本原子类型的基本支持,支持XML语法和XSD数据类型。 rng.xsl不是流验证器,它适用于内存中的文档。 与大多数...

    testng-xslt-1.1.2.zip

    testng-xslt-1.1.2.zip

    X3BLOG 单用户版 FOR ACCESS 1.0beta 源代码

    关于 X3-BLOG&lt;br&gt;&lt;br&gt; X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语言之一ASP.NET(C#) 2.0编写,支持多种数据库,包括SQLSERVER2000\SQLSERVER2005\...

    X3BLOG v0.7.5.0

    关于 X3-BLOG&lt;br&gt;&lt;br&gt; X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语言ASP.NET(C#) &lt;br&gt;&lt;br&gt;2.0编写,支持多种数据库,包括SQLSERVER2000\SQLSERVER2005\...

    Saxon-CE:浏览器中的XSLT 2.0

    撒克逊语浏览器中的XSLT 2.0。历史笔记Saxon-CE是Saxonica首次涉足客户端(基于浏览器)XSLT支持,其中包括交互式XSLT扩展,旨在允许XSLT样式表通过修改HTML页面的内容来响应用户交互事件。 该产品是Saxon-Java代码...

Global site tag (gtag.js) - Google Analytics