gpt4 book ai didi

xslt - 我可以在 XSLT 中执行逐元素除法吗?

转载 作者:行者123 更新时间:2023-12-01 02:57:55 31 4
gpt4 key购买 nike

我有一个数据结构,它看起来像:

<resultSet>
<result>
<numCorrect>1</numCorrect>
<truthCorrect>4</truthCorrect>
</result>
<result>
<numCorrect>2</numCorrect>
<truthCorrect>4</truthCorrect>
</result>
<result>
<numCorrect>3</numCorrect>
<truthCorrect>5</truthCorrect>
</result>
<result>
<numCorrect>5</numCorrect>
<truthCorrect>6</truthCorrect>
</result>
</resultSet>

我想计算 avg((result/numCorrect) div (result/truthCorrect)) ,但 XSLT 似乎不允许按元素划分,我如何计算这个平均值?

如果有帮助,我将使用 Saxon 作为 XSLT 2.0 处理器。

最佳答案

以下将做你想做的..

它使用递归并连续添加所有配对计算,最后除以结果数。

<xsl:template match = "/resultSet" >
<xsl:variable name="TotalSum">
<xsl:call-template name="calculator">
<xsl:with-param name="currSum">0</xsl:with-param>
<xsl:with-param name="count"><xsl:value-of select="count(result)"/></xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$TotalSum div count(result)"/>
</xsl:template>

<xsl:template name="calculator">
<xsl:param name="currSum"/>
<xsl:param name="count"/>

<xsl:variable name="actual" select="number(result[number($count)]/numCorrect)"/>
<xsl:variable name="truth" select="number(result[number($count)]/truthCorrect)"/>

<xsl:variable name="singleResult" select="number($actual div $truth)"/>

<xsl:variable name="CycleSum" select="number($currSum + $singleResult)"/>

<xsl:choose>
<xsl:when test="number($count - 1) > 0 ">
<xsl:call-template name="calculator">
<xsl:with-param name="currSum"><xsl:value-of select="$CycleSum"/></xsl:with-param>
<xsl:with-param name="count"><xsl:value-of select="number($count - 1)"/></xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$CycleSum"/></xsl:otherwise>
</xsl:choose>
</xsl:template>

如果有你不明白的部分,请告诉我..

关于xslt - 我可以在 XSLT 中执行逐元素除法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2239251/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com