xml – 在XSL中按2个字段分组
发布时间:2020-12-16 05:37:50 所属栏目:百科 来源:网络整理
导读:我有下一个xml: page document id1001/id curUSD/cur date01.01.2009/date amount10/amount /document document id1001/id curUSD/cur date02.01.2009/date amount15/amount /document document id1001/id curJPY/cur date01.01.2009/date amount5/amount /
我有下一个xml:
<page> <document> <id>1001</id> <cur>USD</cur> <date>01.01.2009</date> <amount>10</amount> </document> <document> <id>1001</id> <cur>USD</cur> <date>02.01.2009</date> <amount>15</amount> </document> <document> <id>1001</id> <cur>JPY</cur> <date>01.01.2009</date> <amount>5</amount> </document> <document> <id>1002</id> <cur>USD</cur> <date>01.01.2009</date> <amount>5</amount> </document> ... </page> 我需要将其转换为html.记录应按id和cur分组.并且应在每组之后显示总量.所以我们想要这样的东西: Bill: id=1001,cur=USD date=01.01.2009 amount=10 date=02.01.2009 amount=15 total amount=25 Bill: id=1001,cur=JPY date=01.01.2009 amount=5 total amount=5 Bill: id=1002,cur=USD date=01.01.2009 amount=5 total amount=5 ... 如何使用XSL实现这一目标? 当我试图在谷歌找到答案时,我发现了Muenchian方法,但是当我们想要将结果分组为2个字段时,它太复杂了.我是xsl的初学者,这对我来说有点困难.
您可以使用XSLT 1.0执行此操作
我在这里使用的方法是创建一个具有两个字段id和cur的复合键.我稍后将模板应用于每个组中的第一个文档.在模板中,我然后遍历各个文档,最后我总结了文档数量字段. <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="idcur" match="document" use="concat(id,cur)"/> <xsl:template match="/page"> <xsl:apply-templates select="document[generate-id() = generate-id(key('idcur',concat(id,cur))[1])]"/> </xsl:template> <xsl:template match="document"> <xsl:variable name="document" select="key('idcur',cur))"/> Bill: id=<xsl:value-of select="id"/>,cur=<xsl:value-of select="cur"/> <xsl:for-each select="$document"> date=<xsl:value-of select="date"/> amount=<xsl:value-of select="amount"/> </xsl:for-each> total amount=<xsl:value-of select="sum($document/amount)"/> </xsl:template> </xsl:stylesheet> 输出: Bill: id=1001,cur=USD date=01.01.2009 amount=5 total amount=5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |