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

XSLT2.0---正则表达式

    博客分类:
  • XSLT
阅读更多
其实,正则表达式是XPATH2.0定义的,暂且放在XSLT里说吧。
还是举例来说正则表达式的用法吧。
XML源文件任意,XSLT文件:
<?xml version='1.0'?>
<
xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:xs=
"http://www.w3.org/XMLSchema">
<
xsl:template match="/">
    <xsl:variable name="file" select="'aa.txt'"/>
    <xsl:variable name="string" select="unparsed-text($file,ISO-8859-1)" />
    <xsl:analyze-string select="$string" regex="\n" >
        <xsl:non-matching-substring>
            <row>
            <xsl:analyze-string select="." regex='("([^"]*)")|([^,]+)'>
                <xsl:matching-substring>
                    <cell>
                    <xsl:value-of select="regex-group(2)"/>
                    <xsl:value-of select="regex-group(3)"/>
                    </cell>
                </xsl:matching-substring>
            </xsl:analyze-string>
            </row>
        </xsl:non-matching-substring>
    </xsl:analyze-string>
<
/xsl:template>
<
/xsl:stylesheet>
摘自XSLT2.0 porgrammer's reference(稍有改动)。
aa.txt的内容:
123,"Mary Jones","IBM","USA",1997-05-14
423,"Barbara Smith","General Motors","USA",1996-03-12
6721,"Martin McDougall","British Airways","UK",2001-01-15
830,"Jonathan Perkins","Springer Verlag","Germany",2000-11-17
得到输出结果:
<?xml version='1.0' ?>
<
row xmlns:xs="http://www.w3.org/XMLSchema">
         <cell>123</cell>
         <cell>Mary Jones</cell>
         <cell>IBM</cell>
         <cell>USA</cell>
         <cell>1997-05-14</cell>
</row>
<row xmlns:xs="http://www.w3.org/XMLSchema">
        <cell>423</cell>
        <cell>Barbara Smith</cell>
         <cell>General Motors</cell>
        <cell>USA</cell>
        <cell>1996-03-12</cell>
</row>
<row xmlns:xs="http://www.w3.org/XMLSchema">
        <cell>6721</cell>
        <cell>Martin McDougall</cell>
        <cell>British Airways</cell>
        <cell>UK</cell>
        <cell>2001-01-15</cell>
</row>
<row xmlns:xs="http://www.w3.org/XMLSchema">
        <cell>830</cell>
       <cell>Jonathan Perkins</cell>
        <cell>Springer Verlag</cell>
        <cell>Germany</cell>
        <cell>2000-11-17</cell>
</row>
我们可以看到寻找与regex匹配的字符串的过程是:首先从input的第一个字符开始,看能否找到,如果找到了,那么就截取该匹配字符,然后从后面的字符开始,再次寻找,如果未找到,就将第一个字符确定为不匹配字符,然后从第二个字符开始寻找,一直到查找完所有字符。
原来的XSLT文件正则表达式匹配的模式为:
<xsl:analyze-string select="," regex='("([^"]*?)")|([^,]+?),'>
* 后面跟一个问号(?),代表非贪婪原则。意思是,一旦找到类似"xxxxx"形式的字符串就认定为匹配字符串。但是在这里没有必要,因为中间的xxxx不能为"(双引号),也就防止了出现贪婪的"xxx""xxxx"xxx"的形式。也算是对大师提出的一个疑问吧。呵呵。
分享到:
评论

相关推荐

    xslt2.0l资料1

    3. **函数库**:XSLT 2.0提供了丰富的内置函数库,涵盖了字符串处理、数值计算、日期和时间操作、正则表达式匹配等多方面功能,极大地简化了编程工作。 4. **XPath 2.0**:XSLT 2.0与XPath 2.0紧密集成,XPath 2.0...

    Beginning XSLT 2.0 From Novice to Professional

    3. **函数库扩展**:XSLT 2.0提供了更多的内置函数,特别是在字符串处理、正则表达式匹配等方面的功能更为强大。 4. **性能优化**:XSLT 2.0在运行时性能方面也有所提升,尤其是在处理大型XML文档时更为明显。 5. **...

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

    XSLT 2.0是其第二个主要版本,引入了许多新特性,如支持函数库、正则表达式、格式化数字和日期等。通过XSLT,可以将XML数据转换成其他格式,如HTML、PDF或CSV,以适应不同的展示需求。 XQuery是一种查询XML数据的...

    Wrox.XSLT.2.0.and.XPath.2.0.Programmers.Reference.4th.Edition.May.2008.rar

    新特性包括对数字和字符串的操作,日期和时间的处理,以及支持正则表达式匹配。 该书作为程序员的参考,可能包含以下内容: 1. XSLT和XPath的基础概念:解释XML、XSLT和XPath的基本原理,以及它们在XML处理中的...

    'replace' 不是一个有效的 XSLT 或 XPath 函数

    在XSLT 2.0及更高版本中,`replace()` 函数被引入,允许用户根据正则表达式替换字符串中的部分文本。但在XSLT 1.0中,这个函数并未定义,因此如果你在1.0环境中使用它,会收到此错误。 **XSLT 1.0与2.0的区别:** 1...

    XSLT自动代码生成学习笔记

    EXSLT是扩展XSLT的一个开源项目,提供了许多XSLT 1.0标准未涵盖的函数和功能,如日期时间操作、正则表达式匹配等。 2.4 **XPath** XPath是XML路径语言,用于在XML文档中查找信息。它是XSLT中不可或缺的一部分,用来...

    xslt手册

    6. XSLT 1.0与XSLT 2.0/3.0的区别:XSLT 2.0引入了许多新功能,如正则表达式支持、函数库扩展、更多数据类型和更强大的样式表组合能力。XSLT 3.0进一步增强了这些特性,如支持静态类型检查、流式处理API和异步处理。...

    xslt 扩展PDF教程

    - Regular Expressions:提供正则表达式匹配功能。 - Sets:用于集合操作,如交集和并集。 - Strings:提供额外的字符串处理函数。 ### 4. 实施扩展 #### 4.1 实施方式 扩展功能可以通过以下几种方式实施: - **...

    XSLT指南

    - **XSLT 2.0**引入了更多高级功能,如支持正则表达式、日期和时间操作、函数库的扩展等。 - **XSLT 3.0**进一步增强了性能,加入了流式处理、静态类型检查和异步处理等功能。 ### 6. 实际应用 XSLT广泛应用于数据...

    xslt标准

    - **XSLT 2.0**:于2007年发布,引入了许多新功能,如序列类型、正则表达式路径步骤等,显著增强了XSLT的能力。 - **XSLT 3.0**:进一步改进了处理大规模数据集的能力,支持更复杂的查询和表达式。 #### 三、XSLT的...

    javascipt complete reference

    - 字符串方法中的正则表达式应用。 ### 第三部分:客户端 JavaScript 基础 #### Chapter 9 - JavaScript 对象模型 - DOM (Document Object Model) 的基本概念。 - 浏览器对象模型(BOM)介绍。 #### Chapter 10 -...

    XSLT从入门到精通(PDG)

    XSLT 2.0及更高版本还引入了更多高级特性,如脚本支持、正则表达式、聚合函数等,极大地扩展了其功能。 在实际工作中,XSLT常用于生成动态网页、生成报表、数据交换和集成等场景。为了高效地应用XSLT,了解XML ...

    XQuery权威指南(简码·扫描版)

    - 如何使用标记来增强正则表达式的功能。 - **18.10 使用带替换变量的子表达式** - 如何使用子表达式来进行字符串替换。 #### 二十、日期、时间和时间段操作 - **19.1 日期和时间类型** - XQuery支持的日期和...

    经典嵌入式面试题.docx

    - `--enable-mbregex`:启用多字节正则表达式支持。 - `--with-mysql=mysqlnd`:MySQL支持。 - `--with-mysqli=mysqlnd`:MySQLi支持。 - `--without-pear`:不安装PEAR。 - `--with-pdo-mysql=mysqlnd`:PDO MySQL...

    MKey 3G 21小时从入门到精通

    了解正则表达式的用法可以帮助开发者更灵活地处理数据。 ##### 3.3 XML XML是一种标记语言,用于数据存储和交换。MKey 3G利用XML来描述数据结构和内容,因此了解XML的基本语法和概念是非常必要的。 ##### 3.4 ...

    Web-Harvest手册

    `html-to-xml`将HTML内容清理并转换为有效的XML,`regexp`执行正则表达式搜索/替换,`xpath`则在XML源中查找XPath表达式,`xquery`在XML源上执行查询,`xslt`则应用XSL转换。`script`元素允许使用基于Java的脚本语言...

    JavaScript权威指南(第五版英文原版)

    - **正则表达式**:介绍正则表达式的语法和使用方法。 - **内置对象**:介绍JavaScript内置的对象,如数组、日期、数学等。 - **文档对象模型(DOM)**:详细解释DOM的基本概念、操作技巧及最佳实践。 **第二部分:...

Global site tag (gtag.js) - Google Analytics