2016-03-04 54 views
1

我有以下XML,轉換string類型號爲int數量和XSLT 1.0總結

<Answers> 
    <Entry key="total" type="System.String"> 
     <value>50,000</value> 
    </Entry> 
    </Answers> 
    <Answers> 
    <Entry key="total" type="System.String"> 
     <value>2,000</value> 
    </Entry> 
    </Answers> 
    <PerPersonTotal>1000</PerPersonTotal> 

在XSLT 1.0我要總結所有的值並計算百分比。

請注意,金額值有逗號。

<xsl:value-of select="(PerPersonTotal div sum(number(Answers/Entry[@key='total']/value))) * 100 

和我得到以下錯誤

的功能參數1「之和()」不能轉換到的節點集。

如果我刪除數字函數,我得到NaN作爲結果。

回答

0

請注意,金額值有逗號。

而這正是這裏的問題:包含逗號的字符串不是數字。在XSLT 1.0解決這個問題,你需要做這樣的事情:宣佈xmlns:exsl="http://exslt.org/common"

<xsl:variable name="values"> 
    <xsl:for-each select="Answers/Entry[@key='total']"> 
     <value> 
      <xsl:value-of select="translate(value, ',', '')"/> 
     </value> 
    </xsl:for-each> 
</xsl:variable> 
<result> 
    <xsl:value-of select="PerPersonTotal div sum(exsl:node-set($values)/value)"/> 
</result> 

- 見:http://exslt.org/exsl/index.html

注:

  1. 這是假設這裏使用逗號作爲千分機;
  2. 要格式化數字作爲百分比,你應該使用format-number() 功能,通過100
+0

在上面的代碼我現在可以計算小的變化不會繁殖。是的,我現在正在使用百分比的格式編號。謝謝 – Govind