gpt4 book ai didi

xslt - 使用 XSLT 在字符串中添加数字

转载 作者:行者123 更新时间:2023-12-05 01:09:42 26 4
gpt4 key购买 nike

我有一个字符串(在一个变量中),它有一个由空格或逗号分隔的数字列表。我需要对字符串中的数字求和。示例字符串“1,2,5,12,3”或“1 2 5 12 3”

有没有办法将字符串中的数字相加并返回总数?

最佳答案

这个更短的转换:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="text()" name="sumStringList">
<xsl:param name="pText" select="."/>
<xsl:param name="pSum" select="0"/>
<xsl:param name="pDelim" select="','"/>

<xsl:choose>
<xsl:when test="not(string-length($pText) >0)">
<xsl:value-of select="$pSum"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="vnewList"
select="concat($pText,$pDelim)"/>
<xsl:variable name="vHead" select=
"substring-before($vnewList, $pDelim)"/>
<xsl:call-template name="sumStringList">
<xsl:with-param name="pText" select=
"substring-after($pText, $pDelim)"/>
<xsl:with-param name="pSum" select="$pSum+$vHead"/>
<xsl:with-param name="pDelim" select="$pDelim"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

应用于以下 XML 文档时:

<t>1,2,5,12,3</t>

产生想要的、正确的结果:

23

说明:递归调用的命名模板也匹配文本节点。添加标记(附加逗号)以加快和简化处理。

二。 XSLT 2.0 解决方案:

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:param name="pDelim" select="','"/>

<xsl:template match="text()">
<xsl:sequence select=
"sum(for $s in tokenize(.,$pDelim)
return number($s)
)
"/>
</xsl:template>
</xsl:stylesheet>

当应用于同一个 XML 文档(上图)时,此转换会产生相同的所需正确答案:

23

这里我们使用标准的 XPath 2.0 函数 tokenize()在最终应用标准 XPath 函数 number() 之前,我们必须将每个结果标记转换为数字(使用 sum() 函数) .

关于xslt - 使用 XSLT 在字符串中添加数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846591/

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