XSL joining 2组输出语句
XSL joining 2 group statements for output
使用 saxon,我正在尝试打印 sql 获取的 table 的总计,并以特定格式打印到 csv。
结构应该是这样的,我想得到的总数也可以在这里看到:
记住 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"/>
,然后在 for-each-group
中使用 sum(key('by-col4', current-grouping-key())/col3)
,它可能会给出您显示的结果。
使用 saxon,我正在尝试打印 sql 获取的 table 的总计,并以特定格式打印到 csv。 结构应该是这样的,我想得到的总数也可以在这里看到:
记住 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"/>
,然后在 for-each-group
中使用 sum(key('by-col4', current-grouping-key())/col3)
,它可能会给出您显示的结果。