gpt4 book ai didi

xslt:查找最接近列表中另一个值的值

转载 作者:行者123 更新时间:2023-12-02 00:35:22 25 4
gpt4 key购买 nike

问候,给定一个数字列表,是否可以使用 xslt 找到最接近给定值的值?例如,如果我在列表 [1,7] 中寻找最接近 5 的值,那么 7 就是它。同样对于 [4,9],它将是 4。列表可以是任意长度。

谢谢。

最佳答案

这个样式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="pValue" select="5"/>
<xsl:template match="/">
<xsl:for-each select="list/num">
<xsl:sort select="(. - $pValue) * not(0 > . - $pValue )
- (. - $pValue) * (0 > . - $pValue)"/>
<xsl:if test="position() = 1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

有了这个输入:

<list>
<num>4</num>
<num>9</num>
</list>

输出:

4

这个输入:

<list>
<num>1</num>
<num>7</num>
</list>

输出:

7

编辑:XSLT 2.0 解决方案:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="pValue" select="5"/>
<xsl:template match="/">
<xsl:variable name="vSequence"
select="/list/num/abs(. - $pValue)"/>
<xsl:variable name="vMinimum"
select="min($vSequence)"/>
<xsl:variable name="vPosition"
select="index-of($vSequence,$vMinimum)[1]"/>
<xsl:value-of select="/list/num[$vPosition]"/>
</xsl:template>
</xsl:stylesheet>

表明可以是一行XPath 2.0表达式:

/list/num[
index-of(
/list/num/abs(. - $pValue),
min(/list/num/abs(. - $pValue))
)[1]
]

关于xslt:查找最接近列表中另一个值的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4857250/

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