如何解决XSL 加入 2 个用于输出的组语句
使用 saxon,我试图从以特定格式打印到 csv 的 sql 获取的表中打印总数。 结构应该是这样的,我想得到的总数也可以在这里看到:
记住 col2 可以有任何字母,但 col4 只能有 a、b 或 c
输入的粗略概念:
<ROW>
<ROW[1]>
<col1>1</col1>
<col2>a</col2>
<col3>1</col3>
<col4>a</col4>
</ROW[1]>
<ROW[2]>
<col1>2</col1>
<col2>a</col2>
<col3>2</col3>
<col4>a</col4>
</ROW[2]>
<ROW[3]>
<col1>3</col1>
<col2>a</col2>
<col3>3</col3>
<col4>a</col4>
</ROW[3]>
<ROW[4]>
<col1>6</col1>
<col2>b</col2>
<col3>2</col3>
<col4>a</col4>
</ROW[4]>
...
</ ROW>
只为 col1 做总计应该很容易:
<xsl:template name = "totals">
<xsl:for-each-group select = "//ROW" group-by="col2">
<xsl:variable name="group_total">
<xsl:value-of select="sum(current-group()/col1)"/>
<xsl:value-of select="';'"/>
</xsl:variable>
<xsl:value-of select="'
'"/>
</xsl:for-each-group>
</xsl:template>
但是在同一行中加入 col3 总数的最佳方法是什么,比如 a 的总数在 a 旁边? 我认为调用模板并传递 col2 值以按照相同的原则运行总计,但是当 col2 没有来自 col4 的值时会出现问题
解决方法
我不擅长想象输入结构,但如果你声明一个键 <xsl:key name="by-col4" match="ROW" use="col4"/>
然后在你的 sum(key('by-col4',current-grouping-key())/col3)
中使用 for-each-group
它可能会给出你显示的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。