- 浏览: 73506 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
jinbo0120:
受教了,我还一直存在疑问呢,原来是1.5开始使用的...看来我 ...
5.0for循环 -
persistC:
1、到底在哪用cascade=&q ...
hibernate.hbm.xml总结 -
duanyong:
看到xml就烦。不知道为什么。嘿嘿。
hibernate.hbm.xml总结
看了些关于XSLT2.0的东西,先来总结一下分组吧。
<xsl:for-each-group>是XSLT2.0新提出的分组语法。
XML源文档:
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="sort.xsl"?>
<root>
<item f1="浙江" f2="绍兴" f3="aaa"/>
<item f1="江苏" f2="苏州" f3="bbb"/>
<item f1="浙江" f2="杭州" f3="ccc"/>
<item f1="山东" f2="济南" f3="ddd"/>
<item f1="山东" f2="青岛" f3="aaa"/>
<item f1="江苏" f2="南京" f3="fff"/>
<item f1="山东" f2="青岛" f3="ggg"/>
<item f1="江苏" f2="南京" f3="hhh"/>
<item f1="山东" f2="济南" f3="iii"/>
</root>
<?xml-stylesheet type="text/xsl" href="sort.xsl"?>
<root>
<item f1="浙江" f2="绍兴" f3="aaa"/>
<item f1="江苏" f2="苏州" f3="bbb"/>
<item f1="浙江" f2="杭州" f3="ccc"/>
<item f1="山东" f2="济南" f3="ddd"/>
<item f1="山东" f2="青岛" f3="aaa"/>
<item f1="江苏" f2="南京" f3="fff"/>
<item f1="山东" f2="青岛" f3="ggg"/>
<item f1="江苏" f2="南京" f3="hhh"/>
<item f1="山东" f2="济南" f3="iii"/>
</root>
XSLT文件:
<?xml version='1.0'?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each-group select="root/item" group-by="@f1">
<xsl:value-of select="@f1"/>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each-group select="root/item" group-by="@f1">
<xsl:value-of select="@f1"/>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
输出结果:
浙江江苏山东
select属性指定分组对象,例如,item;分组标准为具有相同f1属性值的item为一组。
xsl:for-each-group说明了,循环的因子为group.
<xsl:value-of select="current-group()/@f2"/>输出每一个group的每个节点的f2属性。
指令换作:
<xsl:for-each-group select="root/item" group-adjacent="@f1">
输出结果:
浙江江苏浙江山东江苏山东江苏山东
adjacent意为相邻的,临近的。它也是把具有相同的值的节点划为一组,但更严格的条件是,节点必须相邻(连续)。
若指令换作:
<xsl:for-each-group select="root/item" group-starting-with="item[position() mod 2 =0]">
则输出结果:
浙江江苏山东江苏江苏
可以看出输出了第1,2,4,6,8个item节点的f1属性。也就是说分成了5组,item[1],
item[2,3],item[4,5],item[6,7],item[8,9]
group-starting-with指定一个模式,符合该模式的节点被作为新的分组的开始,比如,第2,4,6,8个item。而select所指定的第一个节点,无论其是否符合该模式,都作为第一个分组的开开始,比如第一个item。注意,group-starting-with所指定的模式,跟select所指定的节点集合没有任何关系,比如父子关系。可参照
<xsl:for-each-group select="root/item" group-adjacent="@f1">
group-adjacent所指定的值@f1是root/item的属性。
理解了group-starting-with,那么group-ending-with也就容易理解了。
最后再来看那个“ 用xsl实现排序和判别重复记录 ”中所提到的问题,在XSLT2.0就容易解决了。
<?xml version='1.0'?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each-group select="root/item" group-by="@f1">
<xsl:sort select="@f1"/>
<xsl:text>
</xsl:text>
<xsl:value-of select="concat(@f1,'-')"/>
<xsl:for-each-group select="current-group()" group-by="@f2">
<xsl:sort select="@f2"/>
<xsl:value-of select="concat(' ',@f2,':')"/>
<xsl:for-each-group select="current-group()" group-by="@f3">
<xsl:sort select="@f3"/>
<xsl:value-of select="@f3"/>
<xsl:if test="position() != last()">,</xsl:if>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each-group select="root/item" group-by="@f1">
<xsl:sort select="@f1"/>
<xsl:text>
</xsl:text>
<xsl:value-of select="concat(@f1,'-')"/>
<xsl:for-each-group select="current-group()" group-by="@f2">
<xsl:sort select="@f2"/>
<xsl:value-of select="concat(' ',@f2,':')"/>
<xsl:for-each-group select="current-group()" group-by="@f3">
<xsl:sort select="@f3"/>
<xsl:value-of select="@f3"/>
<xsl:if test="position() != last()">,</xsl:if>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
呵呵,最后一个小地方,<xsl:for-each-group>下的position()是指当前分组在总组数的位置。
发表评论
-
XSLT2.0---正则表达式
2009-06-06 16:27 969其实,正则表达式是XPATH2.0定义的,暂且放在XSLT里说 ... -
XSLT2.0----<xsl:analyze-string>
2009-06-06 16:26 921<xsl:analyze-string>是XS ... -
XSLT2.0----<xsl:variable>和<xsl:sequence>
2009-06-06 16:25 2976我们知道,<xsl:variable>可以定义变量 ... -
XSLT2.0----XPATH2.0序列
2009-06-06 16:24 959严格说来XPATH2.0和XSLT2.0并无直接联系,但是XP ... -
XSLT2.0----字符映射
2009-06-06 16:23 685XSLT2.0提供了字符映射功能。 对于特殊字符或特殊字符, ... -
XSLT2.0---临时结果树
2009-06-06 16:23 1039<xsl:variable>可不是新东西了,它 ... -
XSLT2.0---多文件输出
2009-06-06 16:22 968<xsl:result-document>指 ... -
xsl2.0正则
2009-06-05 11:46 1045<xsl:analyze-string>是XSLT ... -
XSLT 2.0 的新特性
2009-06-05 11:44 1550XSLT 2.0 的新特性 关键 ... -
XSLT Designer快速入门指南
2008-12-15 21:07 904目录 概述 配 ... -
XSLT document()函数在IE与Firefox中的区别
2008-12-15 21:07 950XSLT 中 document() 函数的作用是用来访问扩展X ... -
了解XSLT
2008-12-15 21:06 956什么是XSLT? XSLT的英文标准名称为eXtensibl ... -
XSL中count()的使用
2008-12-15 21:05 1059XSL中用count()来取得xml中某种节点的个数 list ... -
XSL学习心得-制作图像超链接
2008-12-15 21:04 805这是我今天学习的时候遇到的另一个问题,做图像超链接要把链接地址 ... -
xslt的简单使用[xml-->html]
2008-12-15 21:03 1024XSLT命令[xml格式转换] 1.循环 <xsl:f ... -
XSL中利用xsl:for-each时给每一项添加序号
2008-12-15 21:02 1742经常用for-each来循环读取XML中的某个节点集,但常常需 ... -
第四章:XPath的语法
2008-12-15 21:00 9834.XPath的语法 我们在前 ... -
第三章:XSLT的元素语法
2008-12-15 20:59 889通过前面两章的介绍,我们已经对XSLT的基本概念和它的转换过程 ... -
第二章:XSLT的实例
2008-12-15 20:59 10112. XSLT的实例 2.1 XSLT如何转换XML 2.2 ... -
第一章:XSLT的概念
2008-12-15 20:58 8001.XSLT的概念 1.1 什么是XSLT 1.2 为什么要 ...
相关推荐
9. **组和分组**:XSLT 2.0提供了`for-each-group`指令,方便对数据进行分组和聚合操作,这对于数据分析和报告生成非常有帮助。 10. **国际化支持**:XSLT 2.0支持多语言处理,可以处理Unicode字符集和国际化格式。...
XSLT的强大之处在于它可以对数据进行筛选、排序、分组等各种复杂的操作。 #### 二、XSLT 2.0的新特性 相较于早期版本,XSLT 2.0引入了许多重要的改进和新功能,这些新特性极大地增强了XSLT的能力。以下是一些关键...
- **XSLT 2.0**: 引入了更多功能强大的特性,如排序、分组等,并且提供了更丰富的数据类型支持,增强了XPath的功能。 #### 关键知识点详解 ##### 第一章:XSLT入门 - **基本概念**:介绍XSLT的基本概念,包括样式...
- 介绍如何使用XSLT对XML文档中的数据进行排序和分组。 - 包括如何定义排序规则、如何使用`<xsl:sort>`元素以及如何实现数据分组。 - **第6章:字符串、数字、日期和时间** - 介绍XSLT中处理字符串、数字、日期...
`<xsl:import>`用于在一个样式表中引入另一个样式表的功能,而`<xsl:export>`在XSLT 2.0及以上版本中用于模块化开发,允许样式表之间共享和重用代码。 6. **流式处理**:XSLT 2.0及更高版本支持流式处理,这意味着...
8. **XSLT 2.0及更高版本**:尽管书可能主要基于早期版本的XSLT,但可能也会提及XSLT 2.0引入的新特性,如模式分组、函数库扩展和流式处理等。 9. **实际应用**:书中可能会通过实例演示如何使用XSLT解决实际问题,...
这部分内容可能涉及如何利用XSLT 2.0及更高版本引入的新功能,如模式分组、变量和参数的引用、以及内置的高阶函数。 五、实际应用和最佳实践 为了使理论知识更好地转化为实际技能,本书可能会包含一些实际案例,...
2.ASP.NET.2.0.高级编程(第4版) [1/7] 原书名: Professional ASP.NET 2.0 原出版社: Wrox ...15.2.4 使用分组的个性化属性 514 15.2.5 为个性化属性定义类型 514 15.2.6 使用定制的类型 515 ...
- 如何对数据进行求和、平均值等统计操作,以及如何根据特定条件进行分组。 #### 三、XQuery基础知识 - **2.1 XQuery语言的设计** - 设计理念和目标,例如简洁性和易用性。 - **2.2 XQuery与其他标准的关系** - ...
——Patrick Smacchia,微软MVP,《C#和.NET 2.0 实战》作者 目录 -------------------------------------------------------------------------------- 第一部分 从这里开始 第1章 LINQ简介 2 1.1 LINQ是...
——Patrick Smacchia,微软MVP,《C#和.NET 2.0 实战》作者 目录 -------------------------------------------------------------------------------- 第一部分 从这里开始 第1章 LINQ简介 2 1.1 LINQ是...
——Patrick Smacchia,微软MVP,《C#和.NET 2.0 实战》作者 目录 -------------------------------------------------------------------------------- 第一部分 从这里开始 第1章 LINQ简介 2 1.1 LINQ是...
——Patrick Smacchia,微软MVP,《C#和.NET 2.0 实战》作者 目录 -------------------------------------------------------------------------------- 第一部分 从这里开始 第1章 LINQ简介 2 1.1 LINQ是...
——Patrick Smacchia,微软MVP,《C#和.NET 2.0 实战》作者 目录 -------------------------------------------------------------------------------- 第一部分 从这里开始 第1章 LINQ简介 2 1.1 LINQ是...
——Patrick Smacchia,微软MVP,《C#和.NET 2.0 实战》作者 目录 -------------------------------------------------------------------------------- 第一部分 从这里开始 第1章 LINQ简介 2 1.1 LINQ是...
——Patrick Smacchia,微软MVP,《C#和.NET 2.0 实战》作者 目录 -------------------------------------------------------------------------------- 第一部分 从这里开始 第1章 LINQ简介 2 1.1 LINQ是...
——Patrick Smacchia,微软MVP,《C#和.NET 2.0 实战》作者 目录 -------------------------------------------------------------------------------- 第一部分 从这里开始 第1章 LINQ简介 2 1.1 LINQ是...