我有一个xml结构,如:
<PartsDetail> <Id>1481</Id> <Desc>test1</Desc> <GlobDesc>test2</GlobDesc> <Price Cur="UAH">+798.27</Price> </PartsDetail>
<PartsDetail> <Id>0741</Id> <Desc>test2</Desc> <GlobDesc>test2</GlobDesc> <Price Cur="UAH">+399.14</Price> </PartsDetail>
在视野中,我用&#34; price&#34;进行了一些改造。 (我带来了399.14的观点)。
我用它进行转换:
<xsl:call-template name="showNumberWithThousands">
<xsl:with-param name="value">
<xsl:call-template name="parseNumber">
<xsl:with-param name="value" select="Price"/>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
我现在还需要拿一笔价钱。 我试着用这个:
<xsl:value-of select="sum(//Data/Paint//PartsDetail/@Price)"/>
但结果是--NaN。
根据我的理解,我需要在正常观点(没有+和 - )&#34;中改变价格。在将其发送到功能之前&#34;总和&#34;。
致:@ michael.hor257k
结构更复杂。 我使用你的解决方案 - 但它没有用。看起来我做错了什么
<xsl:template name="PaintSum">
<xsl:variable name="corrected-prices">
<xsl:for-each select="//CalcData/Paint/PaintDtl">
<price> <xsl:value-of select="translate(MatAmnt, '+', '')"/> </price>
</xsl:for-each>
</xsl:variable>
<sum> <xsl:value-of select="sum(exsl:node-set($corrected-prices)/price)"/> </sum>
</xsl:template>
当我使用<xsl:call-template name="PaintSum"/>
时
什么都没发生。同样,进一步的模板请求也会停止工作。
我试图使用:
<xsl:variable name="corrected-prices">
<xsl:for-each select="//CalcData/Paint//PaintDtl">
<price>
<xsl:value-of select="translate(MatAmnt, '+', '')"/>
</price>
</xsl:for-each>
</xsl:variable>
通过以下方式在文本中添加总和:
<xsl:value-of select="sum(exsl:node-set($corrected-prices)/price)"/>
但输出文件 - 崩溃。
$ correct-prices包含&#34; 1086.65286.75&#34;。
如何将其转换为总和?
答案 0 :(得分:0)
据我了解,我需要将价格转换为“普通视图”(没有+和 - )“在发送功能之前”总和“。
这或多或少是正确的(如果数字为负数,则不想删除减号)。给出了良好的输入,例如:
<强> XML 强>
<root>
<PartsDetail>
<Id>1481</Id>
<Desc>test1</Desc>
<GlobDesc>test2</GlobDesc>
<Price Cur="UAH">+798.27</Price>
</PartsDetail>
<PartsDetail>
<Id>0741</Id>
<Desc>test2</Desc>
<GlobDesc>test2</GlobDesc>
<Price Cur="UAH">+399.14</Price>
</PartsDetail>
</root>
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/root">
<xsl:variable name="corrected-prices">
<xsl:for-each select="PartsDetail">
<price>
<xsl:value-of select="translate(Price, '+', '')"/>
</price>
</xsl:for-each>
</xsl:variable>
<sum>
<xsl:value-of select="sum(exsl:node-set($corrected-prices)/price)"/>
</sum>
</xsl:template>
</xsl:stylesheet>
将返回:
<?xml version="1.0" encoding="UTF-8"?>
<sum>1197.41</sum>