- 浏览: 73069 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
jinbo0120:
受教了,我还一直存在疑问呢,原来是1.5开始使用的...看来我 ...
5.0for循环 -
persistC:
1、到底在哪用cascade=&q ...
hibernate.hbm.xml总结 -
duanyong:
看到xml就烦。不知道为什么。嘿嘿。
hibernate.hbm.xml总结
其实,正则表达式是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>
<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
得到输出结果:
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">
<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.0----<xsl:analyze-string>
2009-06-06 16:26 911<xsl:analyze-string>是XS ... -
XSLT2.0----<xsl:variable>和<xsl:sequence>
2009-06-06 16:25 2969我们知道,<xsl:variable>可以定义变量 ... -
XSLT2.0----XPATH2.0序列
2009-06-06 16:24 949严格说来XPATH2.0和XSLT2.0并无直接联系,但是XP ... -
XSLT2.0----字符映射
2009-06-06 16:23 676XSLT2.0提供了字符映射功能。 对于特殊字符或特殊字符, ... -
XSLT2.0---临时结果树
2009-06-06 16:23 1031<xsl:variable>可不是新东西了,它 ... -
XSLT2.0---多文件输出
2009-06-06 16:22 964<xsl:result-document>指 ... -
XSLT2.0---分组
2009-06-06 16:20 1221看了些关于XSLT2.0的东西,先来总结一下分组吧。 &l ... -
xsl2.0正则
2009-06-05 11:46 1035<xsl:analyze-string>是XSLT ... -
XSLT 2.0 的新特性
2009-06-05 11:44 1541XSLT 2.0 的新特性 关键 ... -
XSLT Designer快速入门指南
2008-12-15 21:07 899目录 概述 配 ... -
XSLT document()函数在IE与Firefox中的区别
2008-12-15 21:07 942XSLT 中 document() 函数的作用是用来访问扩展X ... -
了解XSLT
2008-12-15 21:06 951什么是XSLT? XSLT的英文标准名称为eXtensibl ... -
XSL中count()的使用
2008-12-15 21:05 1056XSL中用count()来取得xml中某种节点的个数 list ... -
XSL学习心得-制作图像超链接
2008-12-15 21:04 797这是我今天学习的时候遇到的另一个问题,做图像超链接要把链接地址 ... -
xslt的简单使用[xml-->html]
2008-12-15 21:03 1015XSLT命令[xml格式转换] 1.循环 <xsl:f ... -
XSL中利用xsl:for-each时给每一项添加序号
2008-12-15 21:02 1732经常用for-each来循环读取XML中的某个节点集,但常常需 ... -
第四章:XPath的语法
2008-12-15 21:00 9774.XPath的语法 我们在前 ... -
第三章:XSLT的元素语法
2008-12-15 20:59 884通过前面两章的介绍,我们已经对XSLT的基本概念和它的转换过程 ... -
第二章:XSLT的实例
2008-12-15 20:59 10062. XSLT的实例 2.1 XSLT如何转换XML 2.2 ... -
第一章:XSLT的概念
2008-12-15 20:58 7941.XSLT的概念 1.1 什么是XSLT 1.2 为什么要 ...
相关推荐
3. **函数库**:XSLT 2.0提供了丰富的内置函数库,涵盖了字符串处理、数值计算、日期和时间操作、正则表达式匹配等多方面功能,极大地简化了编程工作。 4. **XPath 2.0**:XSLT 2.0与XPath 2.0紧密集成,XPath 2.0...
3. **函数库扩展**:XSLT 2.0提供了更多的内置函数,特别是在字符串处理、正则表达式匹配等方面的功能更为强大。 4. **性能优化**:XSLT 2.0在运行时性能方面也有所提升,尤其是在处理大型XML文档时更为明显。 5. **...
XSLT 2.0是其第二个主要版本,引入了许多新特性,如支持函数库、正则表达式、格式化数字和日期等。通过XSLT,可以将XML数据转换成其他格式,如HTML、PDF或CSV,以适应不同的展示需求。 XQuery是一种查询XML数据的...
新特性包括对数字和字符串的操作,日期和时间的处理,以及支持正则表达式匹配。 该书作为程序员的参考,可能包含以下内容: 1. XSLT和XPath的基础概念:解释XML、XSLT和XPath的基本原理,以及它们在XML处理中的...
在XSLT 2.0及更高版本中,`replace()` 函数被引入,允许用户根据正则表达式替换字符串中的部分文本。但在XSLT 1.0中,这个函数并未定义,因此如果你在1.0环境中使用它,会收到此错误。 **XSLT 1.0与2.0的区别:** 1...
EXSLT是扩展XSLT的一个开源项目,提供了许多XSLT 1.0标准未涵盖的函数和功能,如日期时间操作、正则表达式匹配等。 2.4 **XPath** XPath是XML路径语言,用于在XML文档中查找信息。它是XSLT中不可或缺的一部分,用来...
6. XSLT 1.0与XSLT 2.0/3.0的区别:XSLT 2.0引入了许多新功能,如正则表达式支持、函数库扩展、更多数据类型和更强大的样式表组合能力。XSLT 3.0进一步增强了这些特性,如支持静态类型检查、流式处理API和异步处理。...
- Regular Expressions:提供正则表达式匹配功能。 - Sets:用于集合操作,如交集和并集。 - Strings:提供额外的字符串处理函数。 ### 4. 实施扩展 #### 4.1 实施方式 扩展功能可以通过以下几种方式实施: - **...
- **XSLT 2.0**引入了更多高级功能,如支持正则表达式、日期和时间操作、函数库的扩展等。 - **XSLT 3.0**进一步增强了性能,加入了流式处理、静态类型检查和异步处理等功能。 ### 6. 实际应用 XSLT广泛应用于数据...
- **XSLT 2.0**:于2007年发布,引入了许多新功能,如序列类型、正则表达式路径步骤等,显著增强了XSLT的能力。 - **XSLT 3.0**:进一步改进了处理大规模数据集的能力,支持更复杂的查询和表达式。 #### 三、XSLT的...
- 字符串方法中的正则表达式应用。 ### 第三部分:客户端 JavaScript 基础 #### Chapter 9 - JavaScript 对象模型 - DOM (Document Object Model) 的基本概念。 - 浏览器对象模型(BOM)介绍。 #### Chapter 10 -...
XSLT 2.0及更高版本还引入了更多高级特性,如脚本支持、正则表达式、聚合函数等,极大地扩展了其功能。 在实际工作中,XSLT常用于生成动态网页、生成报表、数据交换和集成等场景。为了高效地应用XSLT,了解XML ...
- 如何使用标记来增强正则表达式的功能。 - **18.10 使用带替换变量的子表达式** - 如何使用子表达式来进行字符串替换。 #### 二十、日期、时间和时间段操作 - **19.1 日期和时间类型** - XQuery支持的日期和...
- `--enable-mbregex`:启用多字节正则表达式支持。 - `--with-mysql=mysqlnd`:MySQL支持。 - `--with-mysqli=mysqlnd`:MySQLi支持。 - `--without-pear`:不安装PEAR。 - `--with-pdo-mysql=mysqlnd`:PDO MySQL...
`html-to-xml`将HTML内容清理并转换为有效的XML,`regexp`执行正则表达式搜索/替换,`xpath`则在XML源中查找XPath表达式,`xquery`在XML源上执行查询,`xslt`则应用XSL转换。`script`元素允许使用基于Java的脚本语言...
- **正则表达式**:介绍正则表达式的语法和使用方法。 - **内置对象**:介绍JavaScript内置的对象,如数组、日期、数学等。 - **文档对象模型(DOM)**:详细解释DOM的基本概念、操作技巧及最佳实践。 **第二部分:...