我有以下输入xml。
<?xml version = "1.0" encoding = "UTF-8"?>
<values>
<value>sometext;+123.23;+100.23</value>
<value>sometext;+004.23;+444.12</value>
</values>
我是 XSL 1.0 的新手。我想添加字符串中收到的两个十进制数字,但我收到 NaN 错误。我该怎么做。 我想从上面的输入 xml 中获取以下输出,其中十进制值相加,但我收到 NaN 错误。
<?xml version="1.0"?>
<Results>
<Result>+223.46</Result>
<Result>+448.35</Result>
</Results>
我有如下 XSL 文件,
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match = "/">
<Results>
<xsl:for-each select="values/value">
<Result>
<xsl:value-of select="number(substring(.,10,7)) +
number(substring(.,18,7))" />
</Result>
</xsl:for-each>
</Results>
</xsl:template>
不允许数字包含+
符号。
请尝试:
<xsl:value-of select="substring(., 11, 6) + substring(., 19, 6)" />
(当然,假设位置和长度是恒定的 - 并且数字总是正数(。
我自己的偏好是做:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/values">
<Results>
<xsl:for-each select="value">
<xsl:variable name="a" select="substring-before(substring-after(., ';'), ';')" />
<xsl:variable name="b" select="substring-after(substring-after(., ';'), ';')" />
<Result>
<xsl:value-of select="translate($a, '+', '') + translate($b, '+', '')" />
</Result>
</xsl:for-each>
</Results>
</xsl:template>
</xsl:stylesheet>
这将适用于正数和负数,并且不依赖于给定字符串中三个标记中的任何一个的长度。