现在我遇到一个小问题,大家帮忙看看这个怎么做?
待转换的xml:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<a>
<b>
<name>测试</name>
<perlist>
< per code='00123123'>
<index>1</index>
<group>1</group>
<name>张三</name>
</per>
< per code='002345345'>
<index>2</index>
<group>1</group>
<name>李四</name>
</per>
< per code='23434523'>
<index>1</index>
<group>2</group>
<name>王五</name>
</per>
< per code='2343455663'>
<index>2</index>
<group>2</group>
<name>赵六</name>
</per>
</perlist>
<b>
</a>
当然这是我写的一个简化的列子,我想转换成这样的xml格式:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<a>
<b>
<name>测试</name>
<perlist group=1>
< per code='00123123'>
<index>1</index>
<group>1</group>
<name>张三</name>
</per>
< per code='002345345'>
<index>2</index>
<group>1</group>
<name>李四</name>
</per>
</perlist>
<perlist group=2>
< per code='23434523'>
<index>1</index>
<group>2</group>
<name>王五</name>
</per>
< per code='2343455663'>
<index>2</index>
<group>2</group>
<name>赵六</name>
</per>
</perlist>
<b>
</a>
如上,我现在的没想出来,怎么用xslt来判断上面同一级节点的per怎么分成两个,怎么用foreach循环来生成下面这样的?xslt怎么写?
待转换的xml:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<a>
<b>
<name>测试</name>
<perlist>
< per code='00123123'>
<index>1</index>
<group>1</group>
<name>张三</name>
</per>
< per code='002345345'>
<index>2</index>
<group>1</group>
<name>李四</name>
</per>
< per code='23434523'>
<index>1</index>
<group>2</group>
<name>王五</name>
</per>
< per code='2343455663'>
<index>2</index>
<group>2</group>
<name>赵六</name>
</per>
</perlist>
<b>
</a>
当然这是我写的一个简化的列子,我想转换成这样的xml格式:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<a>
<b>
<name>测试</name>
<perlist group=1>
< per code='00123123'>
<index>1</index>
<group>1</group>
<name>张三</name>
</per>
< per code='002345345'>
<index>2</index>
<group>1</group>
<name>李四</name>
</per>
</perlist>
<perlist group=2>
< per code='23434523'>
<index>1</index>
<group>2</group>
<name>王五</name>
</per>
< per code='2343455663'>
<index>2</index>
<group>2</group>
<name>赵六</name>
</per>
</perlist>
<b>
</a>
如上,我现在的没想出来,怎么用xslt来判断上面同一级节点的per怎么分成两个,怎么用foreach循环来生成下面这样的?xslt怎么写?
解决方案 »
- postback两次后,页面不能打开
- 后台清除前台 html控件样式 求助
- 为什么vs中的字体有的很大有的很小
- Asp.Net Image控件的使用问题。
- 怎么才能学好asp.net 啊,
- 这样的功能如何实现?
- RegularExpressionValidator的用法问题
- 新建项目(asp.net web应用程序出错)-----访问Web失败
- 我遇到这样的问题:以前调试用了Asp Net Web Matrixl软件来运用ASPNET程序....
- 上传问题:如何不把文件传入服务器而直接入库???
- 想写个背单词的小软件,大家知道不知道那些背单词软件是用什么开发的?
- 怎样使图片大小随页面大小改变`
...
<xsl:call-template name="xxx">
<xsl:with-param name="pid" select="position()"/>
</xsl:call-template>
...
</xsl:for-each><xsl:template name="xxx">
<!--接收为pid的param,并选取对应数据输出-->
</xsl:template>或者用apply template也可以.另外如果要输出为xml的话,在xsl:output 里声明method="xml"
楼上解释一下
这句能知道循环几次吗?
我知道<xsl:for-each select="//q/w/count">
这样返回一个数字,能知道循环几次。在per[]这样是什么意思?返回的是哪个位置?我这儿的per个数不定,分属那组完全用group来决定的。我现在就是想根据这个组来把各个节点分类?有没有戏这样做?
就可以了。//per是xpath表达式,指的文档中所有节点名为 per的节点
那么 在for-each里select=//per,就得到了所有 per的节点,即节点集。//per[position()%2=1]
是xquery表达式。
position()函数,得到某个节点在节点集里的位置,值从1开始累计。 它的名字很好的说明了它的作用。
[这里对属性值或是函数处理进行过滤]
position % 2 即位置对 2取余, 如果结果为1 就选取。 就是这个过滤条件。
实际上取的是 //per节点集里,位置为1,3,5,7,...,2n+1(n>=0) 这样的节点,也奇数行节点
明白啦。不过这个还不能满足我的需求。还是谢谢
我这个过滤条件是中间的那个group值。group一样的归为一类